epistery 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -20
- package/dist/epistery.js +1 -1
- package/dist/epistery.js.map +1 -1
- package/docs/EpisteryModuleConfig.md +1 -1
- package/index.mjs +8 -8
- package/package.json +1 -1
- package/src/epistery.ts +1 -1
package/README.md
CHANGED
|
@@ -6,13 +6,17 @@ _Epistemology is the study of knowledge. An Epistery, it follows, is a place to
|
|
|
6
6
|
|
|
7
7
|
## What Does Epistery Do?
|
|
8
8
|
|
|
9
|
-
Epistery
|
|
9
|
+
Epistery establishes a transactional wallet for both browser and server along with the session handshake. This provides:
|
|
10
10
|
|
|
11
|
-
- **Decentralized Authentication**: Wallet-based user authentication
|
|
12
|
-
- **Data Wallets**: Blockchain
|
|
11
|
+
- **Decentralized Authentication**: Wallet-based user authentication using cryptographic signatures
|
|
12
|
+
- **Data Wallets**: Blockchain smart contracts for data ownership, encryption, sharing, and transfer
|
|
13
13
|
- **Whitelist Management**: On-chain access control for domains and users
|
|
14
|
-
- **CLI Tools**: Command-line interface for authenticated API requests
|
|
14
|
+
- **CLI Tools**: Command-line interface for authenticated API requests using bot mode
|
|
15
15
|
- **Client Libraries**: Browser-based wallet and authentication tools
|
|
16
|
+
- **Configuration Management**: Path-based filesystem-like API for secure configuration storage
|
|
17
|
+
|
|
18
|
+
>*NOTE:* The client wallet (signing key) is held in localStorage under strict domain rules unless the user presents
|
|
19
|
+
> a selected wallet from a web3 plugin
|
|
16
20
|
|
|
17
21
|
## Quick Start
|
|
18
22
|
|
|
@@ -100,7 +104,7 @@ app.get('/profile', (req, res) => {
|
|
|
100
104
|
|
|
101
105
|
### 2. Data Wallets
|
|
102
106
|
|
|
103
|
-
Data wallets
|
|
107
|
+
Data wallets are blockchain smart contracts that provide ownership, encryption, sharing, and transfer capabilities for any data. They combine on-chain ownership records with off-chain storage:
|
|
104
108
|
|
|
105
109
|
```javascript
|
|
106
110
|
// Client creates data wallet
|
|
@@ -113,11 +117,17 @@ const dataWallet = await client.write({
|
|
|
113
117
|
// Read data wallet
|
|
114
118
|
const data = await client.read();
|
|
115
119
|
|
|
116
|
-
// Transfer ownership
|
|
120
|
+
// Transfer ownership to another address
|
|
117
121
|
await client.transferOwnership(newOwnerAddress);
|
|
118
122
|
```
|
|
119
123
|
|
|
120
|
-
Data
|
|
124
|
+
**Data Wallet Features:**
|
|
125
|
+
- **Blockchain Contracts**: Each data wallet is a smart contract on-chain
|
|
126
|
+
- **Encryption**: Data can be encrypted before storage
|
|
127
|
+
- **Sharing**: Grant read/write access to specific addresses
|
|
128
|
+
- **Transferable**: Ownership can be transferred to other wallets
|
|
129
|
+
- **IPFS Storage**: Content stored on IPFS by default, with hashes on-chain
|
|
130
|
+
- **Provenance Tracking**: Full ownership and modification history on-chain
|
|
121
131
|
|
|
122
132
|
### 3. Whitelist Management
|
|
123
133
|
|
|
@@ -135,7 +145,7 @@ Whitelist data is stored on the blockchain and managed through your domain's wal
|
|
|
135
145
|
|
|
136
146
|
### 4. CLI Tools
|
|
137
147
|
|
|
138
|
-
The Epistery CLI enables authenticated API requests from the command line
|
|
148
|
+
The Epistery CLI enables authenticated API requests from the command line using bot authentication (stateless, signs each request):
|
|
139
149
|
|
|
140
150
|
```bash
|
|
141
151
|
# Initialize a CLI wallet
|
|
@@ -145,11 +155,14 @@ epistery set-default localhost
|
|
|
145
155
|
# Make authenticated GET request
|
|
146
156
|
epistery curl https://api.example.com/data
|
|
147
157
|
|
|
148
|
-
#
|
|
149
|
-
epistery curl -X
|
|
158
|
+
# PUT request with JSON data (note single quotes)
|
|
159
|
+
epistery curl -X PUT -d '{"title":"Test","body":"Content"}' https://api.example.com/wiki/Test
|
|
150
160
|
|
|
151
161
|
# Use specific wallet
|
|
152
162
|
epistery curl -w production.example.com https://api.example.com/data
|
|
163
|
+
|
|
164
|
+
# Verbose output for debugging
|
|
165
|
+
epistery curl -v https://api.example.com/data
|
|
153
166
|
```
|
|
154
167
|
|
|
155
168
|
Perfect for:
|
|
@@ -158,20 +171,21 @@ Perfect for:
|
|
|
158
171
|
- Creating bots and agents
|
|
159
172
|
- CI/CD integration
|
|
160
173
|
|
|
174
|
+
**CLI uses bot authentication** - each request is independently signed with the wallet's private key, no session management required.
|
|
175
|
+
|
|
161
176
|
See [CLI.md](CLI.md) for complete CLI documentation.
|
|
162
177
|
|
|
163
178
|
## Configuration
|
|
164
179
|
|
|
165
|
-
Epistery uses a
|
|
180
|
+
Epistery uses a path-based configuration system stored in `~/.epistery/` with a filesystem-like API:
|
|
166
181
|
|
|
167
182
|
```
|
|
168
183
|
~/.epistery/
|
|
169
|
-
├── config.ini #
|
|
184
|
+
├── config.ini # Root config (profile, IPFS, defaults)
|
|
170
185
|
├── mydomain.com/
|
|
171
|
-
│
|
|
172
|
-
│ └── sessions/ # Session data
|
|
186
|
+
│ └── config.ini # Domain config (wallet, provider)
|
|
173
187
|
└── .ssl/
|
|
174
|
-
└── mydomain.com/ # SSL certificates
|
|
188
|
+
└── mydomain.com/ # SSL certificates (optional)
|
|
175
189
|
```
|
|
176
190
|
|
|
177
191
|
### Root Config (`~/.epistery/config.ini`)
|
|
@@ -188,6 +202,9 @@ url=https://rootz.digital/api/v0
|
|
|
188
202
|
chainId=420420422
|
|
189
203
|
name=polkadot-hub-testnet
|
|
190
204
|
rpc=https://testnet-passet-hub-eth-rpc.polkadot.io
|
|
205
|
+
|
|
206
|
+
[cli]
|
|
207
|
+
default_domain=localhost
|
|
191
208
|
```
|
|
192
209
|
|
|
193
210
|
### Domain Config (`~/.epistery/mydomain.com/config.ini`)
|
|
@@ -208,6 +225,8 @@ name=polkadot-hub-testnet
|
|
|
208
225
|
rpc=https://testnet-passet-hub-eth-rpc.polkadot.io
|
|
209
226
|
```
|
|
210
227
|
|
|
228
|
+
The Config class provides a path-based API that works like navigating a filesystem - set a path, load data, modify it, and save. This makes configuration management simple and predictable across all Epistery applications.
|
|
229
|
+
|
|
211
230
|
## Advanced Usage
|
|
212
231
|
|
|
213
232
|
### Custom Authentication
|
|
@@ -294,11 +313,12 @@ See [Architecture.md](Architecture.md) for detailed architecture documentation.
|
|
|
294
313
|
|
|
295
314
|
## Security
|
|
296
315
|
|
|
297
|
-
- Domain configs stored with 0600 permissions (user-only access)
|
|
298
|
-
- Private keys never transmitted
|
|
299
|
-
- Each domain has isolated wallet
|
|
300
|
-
-
|
|
301
|
-
- Key
|
|
316
|
+
- **Private Key Protection**: Domain configs stored with 0600 permissions (user-only access)
|
|
317
|
+
- **Signature-Only Transmission**: Private keys never transmitted, only cryptographic signatures
|
|
318
|
+
- **Wallet Isolation**: Each domain has its own isolated wallet
|
|
319
|
+
- **Bot Authentication**: Stateless authentication with per-request signing and timestamp-based replay protection
|
|
320
|
+
- **Encrypted Key Exchange**: Browser clients use ECDH for secure shared secret establishment
|
|
321
|
+
- **On-Chain Verification**: Whitelist and ownership data stored immutably on blockchain
|
|
302
322
|
|
|
303
323
|
## License
|
|
304
324
|
|
package/dist/epistery.js
CHANGED
|
@@ -33,7 +33,7 @@ class Epistery {
|
|
|
33
33
|
nativeCurrency = {
|
|
34
34
|
symbol: server.provider.nativeCurrencySymbol,
|
|
35
35
|
name: server.provider.nativeCurrencyName || server.provider.nativeCurrencySymbol,
|
|
36
|
-
decimals: server.provider.nativeCurrencyDecimals || 18
|
|
36
|
+
decimals: Number(server.provider.nativeCurrencyDecimals) || 18
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
const status = {
|
package/dist/epistery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epistery.js","sourceRoot":"","sources":["../src/epistery.ts"],"names":[],"mappings":";;;AAAA,+CAA+J;AAC/J,mCAAwC;AAExC,6CAAyC;AAGzC,MAAa,QAAQ;IAKnB,gBAAgB,CAAC;IAEV,MAAM,CAAC,KAAK,CAAC,UAAU;QAC5B,IAAI,QAAQ,CAAC,aAAa;YACxB,OAAO;QAET,MAAM,MAAM,GAAG,gBAAK,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,QAAkB,IAAI,8BAA8B,CAAC;QAC/G,QAAQ,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,IAAI,uBAAuB,CAAC;QAC9E,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAE1B,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,YAAY;QACxB,MAAM,MAAM,GAAG,eAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,gBAAgB,GAAqB;YACzC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;YACvC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,MAAwB,EAAE,MAAoB;QACpE,sEAAsE;QACtE,IAAI,cAAc,GAAG,SAAS,CAAC;QAC/B,IAAI,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;YAC3C,cAAc,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,oBAAoB;gBAC5C,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,IAAI,MAAM,CAAC,QAAQ,CAAC,oBAAoB;gBAChF,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,sBAAsB,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"epistery.js","sourceRoot":"","sources":["../src/epistery.ts"],"names":[],"mappings":"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"}
|
package/index.mjs
CHANGED
|
@@ -188,7 +188,7 @@ class EpisteryAttach {
|
|
|
188
188
|
});
|
|
189
189
|
|
|
190
190
|
// Key exchange endpoint - handles POST requests for key exchange
|
|
191
|
-
router.post('/connect',
|
|
191
|
+
router.post('/connect', async (req, res) => {
|
|
192
192
|
try {
|
|
193
193
|
const serverWallet = this.domain;
|
|
194
194
|
|
|
@@ -236,7 +236,7 @@ class EpisteryAttach {
|
|
|
236
236
|
res.json({ wallet });
|
|
237
237
|
});
|
|
238
238
|
|
|
239
|
-
router.post('/data/write',
|
|
239
|
+
router.post('/data/write', async (req, res) => {
|
|
240
240
|
try {
|
|
241
241
|
const { clientWalletInfo, data } = req.body;
|
|
242
242
|
|
|
@@ -260,7 +260,7 @@ class EpisteryAttach {
|
|
|
260
260
|
}
|
|
261
261
|
});
|
|
262
262
|
|
|
263
|
-
router.post('/data/read',
|
|
263
|
+
router.post('/data/read', async (req, res) => {
|
|
264
264
|
try {
|
|
265
265
|
const { clientWalletInfo } = req.body;
|
|
266
266
|
|
|
@@ -281,7 +281,7 @@ class EpisteryAttach {
|
|
|
281
281
|
}
|
|
282
282
|
});
|
|
283
283
|
|
|
284
|
-
router.put('/data/ownership',
|
|
284
|
+
router.put('/data/ownership', async (req, res) => {
|
|
285
285
|
try {
|
|
286
286
|
const { clientWalletInfo, futureOwnerWalletAddress } = req.body;
|
|
287
287
|
|
|
@@ -303,7 +303,7 @@ class EpisteryAttach {
|
|
|
303
303
|
});
|
|
304
304
|
|
|
305
305
|
// Domain initialization endpoint - use to set up domain with custom provider
|
|
306
|
-
router.post('/domain/initialize',
|
|
306
|
+
router.post('/domain/initialize', async (req, res) => {
|
|
307
307
|
try {
|
|
308
308
|
const domain = req.hostname;
|
|
309
309
|
const { provider } = req.body;
|
|
@@ -312,8 +312,8 @@ class EpisteryAttach {
|
|
|
312
312
|
console.log(`[debug] Provider payload:`, JSON.stringify(provider, null, 2));
|
|
313
313
|
console.log(`[debug] Full request body:`, JSON.stringify(req.body, null, 2));
|
|
314
314
|
|
|
315
|
-
if (!provider || !provider.name || !provider.chainId || !provider.
|
|
316
|
-
console.log(`[debug] Validation failed: provider=${!!provider}, name=${!!provider?.name}, chainId=${!!provider?.chainId},
|
|
315
|
+
if (!provider || !provider.name || !provider.chainId || !provider.rpc) {
|
|
316
|
+
console.log(`[debug] Validation failed: provider=${!!provider}, name=${!!provider?.name}, chainId=${!!provider?.chainId}, rpc=${!!provider?.rpc}`);
|
|
317
317
|
return res.status(400).json({ error: 'Invalid provider configuration' });
|
|
318
318
|
}
|
|
319
319
|
|
|
@@ -327,7 +327,7 @@ class EpisteryAttach {
|
|
|
327
327
|
if (!domainConfig.provider) domainConfig.provider = {
|
|
328
328
|
chainId: provider.chainId,
|
|
329
329
|
name: provider.name,
|
|
330
|
-
rpc: provider.
|
|
330
|
+
rpc: provider.rpc
|
|
331
331
|
}
|
|
332
332
|
|
|
333
333
|
// Save domain config with custom provider (marked as pending)
|
package/package.json
CHANGED
package/src/epistery.ts
CHANGED
|
@@ -43,7 +43,7 @@ export class Epistery {
|
|
|
43
43
|
nativeCurrency = {
|
|
44
44
|
symbol: server.provider.nativeCurrencySymbol,
|
|
45
45
|
name: server.provider.nativeCurrencyName || server.provider.nativeCurrencySymbol,
|
|
46
|
-
decimals: server.provider.nativeCurrencyDecimals || 18
|
|
46
|
+
decimals: Number(server.provider.nativeCurrencyDecimals) || 18
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
|