Skip to content

Commit d9fd28a

Browse files
author
Ferenc Sárai
committed
feat: add act skeleton
1 parent 4ad6e23 commit d9fd28a

File tree

2 files changed

+96
-1
lines changed

2 files changed

+96
-1
lines changed

docs/user-documentation/act.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
title: Access Control Trie (ACT)
3+
hide_title: true
4+
id: act
5+
slug: /act
6+
sidebar_label: Access Control Trie
7+
---
8+
9+
import Tabs from '@theme/Tabs'
10+
import TabItem from '@theme/TabItem'
11+
12+
## Access Control Trie
13+
14+
The [Access Control Trie (ACT)](https://solarpunk.buzz/introducing-the-access-control-trie-act-in-swarm/) is an essential feature designed to manage access control in Swarm’s decentralized storage infrastructure. It enables __publishers__ to grant or revoke access to specific content at the chunk level using encrypted session keys. This guide will walk you through the key concepts and practical aspects of using __ACT__ to protect your data in Swarm.
15+
16+
:::warning Postage stamps
17+
18+
Uploading to Swarm network require to have Postage stamps for every write operation. To understand better what does it mean see [Bee docs - Keep your data alive](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive).
19+
:::
20+
21+
### Data
22+
23+
The same data structures can be handled with ACT as without ACT.
24+
25+
### Upload with ACT
26+
27+
When uploading, we can indicate that we are uploading with ACT in the optional requestOptions of bee-js uploadData method.
28+
29+
```ts
30+
const beeRequestOptionsUpload = {
31+
act: true,
32+
}
33+
const uploadResultACT = await bee.uploadData(
34+
postageBatchId, "Bee is awesome with ACT!",
35+
beeRequestOptionsUpload)
36+
console.log(uploadResultACT)
37+
```
38+
39+
The return value provides a reference and a history reference. Both will be needed for the download.
40+
41+
```json, title="uploadResultACT"
42+
{
43+
reference: '97132e8e17831dfa220e73ee083bd82819aaeffce0aaf7e1e0abf8135fcfd2fc',
44+
tagUid: 14,
45+
historyAddress: 'c6cabe3a3b7879ddb182277f3037c02002d4ce33280007cac580ac9256be20ea'
46+
}
47+
```
48+
49+
:::info
50+
During the upload, the publisher will be the uploading node.
51+
:::
52+
53+
### Get Node Public Key
54+
55+
```js
56+
import { Bee } from "@ethersphere/bee-js"
57+
58+
const bee = new Bee('http://localhost:1633')
59+
const addr = await bee.getNodeAddresses();
60+
61+
// node public key (publisher public key)
62+
const pubk = addr.publicKey
63+
```
64+
65+
### Download with ACT
66+
67+
When downloading, we can indicate that we are downloading with __ACT__ in the optional requestOptions of `bee-js` `downloadData` method.
68+
69+
:::warning
70+
The download is only possible with the knowledge of the publisher's public key.
71+
:::
72+
73+
```ts
74+
const beeRequestOptionsDownload = {
75+
baseURL: BEE_API_URL,
76+
timeout: 0, // false converted to number
77+
headers: {
78+
'swarm-act': 'true',
79+
'swarm-act-publisher': pubk, // publisher public key
80+
'swarm-act-history-address': uploadResultACT.historyAddress,
81+
},
82+
}
83+
84+
const retrievedData = await bee.downloadData(uploadResultACT.reference, beeRequestOptionsDownload)
85+
console.log(retrievedData) // prints 'Bee is awesome with ACT!'
86+
```
87+
88+
### Create Grantee
89+
90+
### List Grantees
91+
92+
### Patch Grantees
93+
94+
### List Grantees after patch

sidebars.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ module.exports = {
99
'user-documentation/upload-download',
1010
'user-documentation/track-upload',
1111
'user-documentation/pss',
12-
'user-documentation/soc-and-feeds'
12+
'user-documentation/soc-and-feeds',
13+
'user-documentation/act'
1314
],
1415
collapsed: false
1516
},

0 commit comments

Comments
 (0)