tool-db 1.4.0 → 1.4.5
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 +32 -7
- package/bundle.js +69086 -0
- package/dist/__tests__ copy/base64.d.ts +1 -0
- package/dist/__tests__ copy/base64.js +61 -0
- package/dist/__tests__ copy/base64.js.map +1 -0
- package/dist/__tests__ copy/encryption.d.ts +1 -0
- package/dist/__tests__ copy/encryption.js +68 -0
- package/dist/__tests__ copy/encryption.js.map +1 -0
- package/dist/__tests__ copy/keys.d.ts +1 -0
- package/dist/__tests__ copy/keys.js +238 -0
- package/dist/__tests__ copy/keys.js.map +1 -0
- package/dist/__tests__ copy/network.d.ts +1 -0
- package/dist/__tests__ copy/network.js +206 -0
- package/dist/__tests__ copy/network.js.map +1 -0
- package/dist/__tests__ copy/pow.d.ts +1 -0
- package/dist/__tests__ copy/pow.js +25 -0
- package/dist/__tests__ copy/pow.js.map +1 -0
- package/dist/__tests__ copy/sha1.d.ts +1 -0
- package/dist/__tests__ copy/sha1.js +16 -0
- package/dist/__tests__ copy/sha1.js.map +1 -0
- package/dist/__tests__ copy/sha256.d.ts +1 -0
- package/dist/__tests__ copy/sha256.js +16 -0
- package/dist/__tests__ copy/sha256.js.map +1 -0
- package/dist/__tests__ copy/textRandom.d.ts +1 -0
- package/dist/__tests__ copy/textRandom.js +17 -0
- package/dist/__tests__ copy/textRandom.js.map +1 -0
- package/dist/bundle.js +69086 -0
- package/dist/chain/Block.d.ts +20 -0
- package/dist/chain/Block.js +70 -0
- package/dist/chain/Block.js.map +1 -0
- package/dist/chain/ToolChain.d.ts +10 -0
- package/dist/chain/ToolChain.js +64 -0
- package/dist/chain/ToolChain.js.map +1 -0
- package/dist/chain/Wallet.d.ts +9 -0
- package/dist/chain/Wallet.js +37 -0
- package/dist/chain/Wallet.js.map +1 -0
- package/dist/chain/isValidChain.d.ts +2 -0
- package/dist/chain/isValidChain.js +20 -0
- package/dist/chain/isValidChain.js.map +1 -0
- package/dist/chain/mempool.d.ts +0 -0
- package/dist/chain/mempool.js +2 -0
- package/dist/chain/mempool.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/messageHandlers/handlePong.js.map +1 -1
- package/dist/toolDbCrdtPut.js +1 -2
- package/dist/toolDbCrdtPut.js.map +1 -1
- package/dist/toolDbNetwork.js +24 -2
- package/dist/toolDbNetwork.js.map +1 -1
- package/dist/toolDbPut.js +1 -2
- package/dist/toolDbPut.js.map +1 -1
- package/dist/toolDbSignUp.d.ts +2 -1
- package/dist/toolDbSignUp.js +1 -1
- package/dist/toolDbSignUp.js.map +1 -1
- package/dist/toolDbVerificationWrapper.d.ts +2 -2
- package/dist/toolDbVerificationWrapper.js +1 -1
- package/dist/toolDbVerificationWrapper.js.map +1 -1
- package/dist/toolDbWebrtc.d.ts +12 -3
- package/dist/toolDbWebrtc.js +47 -28
- package/dist/toolDbWebrtc.js.map +1 -1
- package/dist/tooldb.d.ts +8 -5
- package/dist/tooldb.js +15 -6
- package/dist/tooldb.js.map +1 -1
- package/dist/types/graph.d.ts +0 -23
- package/dist/types/graph.js +0 -1
- package/dist/types/message.d.ts +1 -0
- package/dist/types/message.js +1 -0
- package/dist/types/message.js.map +1 -1
- package/dist/types/tooldb.d.ts +24 -0
- package/dist/utils/arrayBufferToHex.d.ts +1 -0
- package/dist/utils/arrayBufferToHex.js +19 -0
- package/dist/utils/arrayBufferToHex.js.map +1 -0
- package/dist/utils/base64ToHex.d.ts +1 -0
- package/dist/utils/base64ToHex.js +13 -0
- package/dist/utils/base64ToHex.js.map +1 -0
- package/dist/utils/crypto/base64KeyToHex.d.ts +1 -0
- package/dist/utils/crypto/base64KeyToHex.js +24 -0
- package/dist/utils/crypto/base64KeyToHex.js.map +1 -0
- package/dist/utils/crypto/base64PublicKeyToHex.d.ts +1 -0
- package/dist/utils/crypto/base64PublicKeyToHex.js +22 -0
- package/dist/utils/crypto/base64PublicKeyToHex.js.map +1 -0
- package/dist/utils/crypto/exportKeyAsHex.d.ts +1 -0
- package/dist/utils/crypto/exportKeyAsHex.js +18 -0
- package/dist/utils/crypto/exportKeyAsHex.js.map +1 -0
- package/dist/utils/crypto/loadKeysComb.d.ts +1 -1
- package/dist/utils/crypto/loadSignKeys.d.ts +1 -1
- package/dist/utils/crypto/recoverPubKey.d.ts +1 -0
- package/dist/utils/crypto/recoverPubKey.js +27 -0
- package/dist/utils/crypto/recoverPubKey.js.map +1 -0
- package/dist/utils/crypto/recoverPubKeyFromPrivate.d.ts +1 -0
- package/dist/utils/crypto/recoverPubKeyFromPrivate.js +16 -0
- package/dist/utils/crypto/recoverPubKeyFromPrivate.js.map +1 -0
- package/dist/utils/crypto/saveKeysComb.d.ts +1 -1
- package/dist/utils/crypto/saveSignKeys.d.ts +1 -1
- package/dist/utils/crypto/verifyData.d.ts +1 -1
- package/dist/utils/crypto/verifyData.js +1 -1
- package/dist/utils/crypto/verifyData.js.map +1 -1
- package/dist/utils/encoding/arrayBufferToBase64.d.ts +1 -0
- package/dist/utils/encoding/arrayBufferToBase64.js +12 -0
- package/dist/utils/encoding/arrayBufferToBase64.js.map +1 -0
- package/dist/utils/encoding/arrayBufferToHex.d.ts +1 -0
- package/dist/utils/encoding/arrayBufferToHex.js +19 -0
- package/dist/utils/encoding/arrayBufferToHex.js.map +1 -0
- package/dist/utils/encoding/arrayBufferToString.d.ts +1 -0
- package/dist/utils/encoding/arrayBufferToString.js +12 -0
- package/dist/utils/encoding/arrayBufferToString.js.map +1 -0
- package/dist/utils/encoding/base64ToArrayBuffer.d.ts +1 -0
- package/dist/utils/encoding/base64ToArrayBuffer.js +12 -0
- package/dist/utils/encoding/base64ToArrayBuffer.js.map +1 -0
- package/dist/utils/encoding/base64ToBinaryChange.d.ts +2 -0
- package/dist/utils/encoding/base64ToBinaryChange.js +18 -0
- package/dist/utils/encoding/base64ToBinaryChange.js.map +1 -0
- package/dist/utils/encoding/base64ToBinaryDocument.d.ts +2 -0
- package/dist/utils/encoding/base64ToBinaryDocument.js +18 -0
- package/dist/utils/encoding/base64ToBinaryDocument.js.map +1 -0
- package/dist/utils/encoding/base64ToHex.d.ts +1 -0
- package/dist/utils/encoding/base64ToHex.js +13 -0
- package/dist/utils/encoding/base64ToHex.js.map +1 -0
- package/dist/utils/encoding/base64ToUint8.d.ts +1 -0
- package/dist/utils/encoding/base64ToUint8.js +17 -0
- package/dist/utils/encoding/base64ToUint8.js.map +1 -0
- package/dist/utils/encoding/fromBase64.d.ts +1 -0
- package/dist/utils/encoding/fromBase64.js +7 -0
- package/dist/utils/encoding/fromBase64.js.map +1 -0
- package/dist/utils/encoding/hexToArrayBuffer.d.ts +1 -0
- package/dist/utils/encoding/hexToArrayBuffer.js +15 -0
- package/dist/utils/encoding/hexToArrayBuffer.js.map +1 -0
- package/dist/utils/encoding/hexToBase64.d.ts +1 -0
- package/dist/utils/encoding/hexToBase64.js +12 -0
- package/dist/utils/encoding/hexToBase64.js.map +1 -0
- package/dist/utils/encoding/hexToString.d.ts +1 -0
- package/dist/utils/encoding/hexToString.js +12 -0
- package/dist/utils/encoding/hexToString.js.map +1 -0
- package/dist/utils/encoding/hexToUint8.d.ts +1 -0
- package/dist/utils/encoding/hexToUint8.js +11 -0
- package/dist/utils/encoding/hexToUint8.js.map +1 -0
- package/dist/utils/encoding/stringToArrayBuffer.d.ts +1 -0
- package/dist/utils/encoding/stringToArrayBuffer.js +12 -0
- package/dist/utils/encoding/stringToArrayBuffer.js.map +1 -0
- package/dist/utils/encoding/toBase64.d.ts +1 -0
- package/dist/utils/encoding/toBase64.js +7 -0
- package/dist/utils/encoding/toBase64.js.map +1 -0
- package/dist/utils/encoding/uint8ArrayToHex.d.ts +2 -0
- package/dist/utils/encoding/uint8ArrayToHex.js +7 -0
- package/dist/utils/encoding/uint8ArrayToHex.js.map +1 -0
- package/dist/utils/encoding/uint8ToBase64.d.ts +2 -0
- package/dist/utils/encoding/uint8ToBase64.js +15 -0
- package/dist/utils/encoding/uint8ToBase64.js.map +1 -0
- package/dist/utils/getPeerSignature.js +1 -1
- package/dist/utils/getPeerSignature.js.map +1 -1
- package/dist/utils/getTimestamp.d.ts +1 -0
- package/dist/utils/getTimestamp.js +7 -0
- package/dist/utils/getTimestamp.js.map +1 -0
- package/dist/utils/hexToArrayBuffer.d.ts +1 -0
- package/dist/utils/hexToArrayBuffer.js +15 -0
- package/dist/utils/hexToArrayBuffer.js.map +1 -0
- package/dist/utils/hexToBase64.d.ts +1 -0
- package/dist/utils/hexToBase64.js +12 -0
- package/dist/utils/hexToBase64.js.map +1 -0
- package/dist/utils/hexToString.d.ts +1 -0
- package/dist/utils/hexToString.js +12 -0
- package/dist/utils/hexToString.js.map +1 -0
- package/dist/utils/hexToUint8.d.ts +1 -0
- package/dist/utils/hexToUint8.js +8 -0
- package/dist/utils/hexToUint8.js.map +1 -0
- package/dist/utils/signData.d.ts +1 -1
- package/dist/utils/signData.js +2 -8
- package/dist/utils/signData.js.map +1 -1
- package/dist/utils/uint8ArrayToHex.d.ts +2 -0
- package/dist/utils/uint8ArrayToHex.js +7 -0
- package/dist/utils/uint8ArrayToHex.js.map +1 -0
- package/dist/utils/verifyMessage.d.ts +2 -1
- package/dist/utils/verifyMessage.js +30 -5
- package/dist/utils/verifyMessage.js.map +1 -1
- package/dist/utils/verifyPeer.js +1 -1
- package/dist/utils/verifyPeer.js.map +1 -1
- package/package.json +10 -3
- package/test-alice/000858.ldb +0 -0
- package/test-alice/000860.ldb +0 -0
- package/test-alice/000863.ldb +0 -0
- package/test-alice/000864.log +0 -0
- package/test-alice/CURRENT +1 -1
- package/test-alice/LOG +5 -5
- package/test-alice/LOG.old +5 -5
- package/test-alice/MANIFEST-000862 +0 -0
- package/test-bob/000785.ldb +0 -0
- package/test-bob/000787.ldb +0 -0
- package/test-bob/000790.ldb +0 -0
- package/test-bob/000791.log +0 -0
- package/test-bob/CURRENT +1 -1
- package/test-bob/LOG +5 -5
- package/test-bob/LOG.old +5 -14
- package/test-bob/MANIFEST-000789 +0 -0
- package/test-keys-a/000593.log +0 -0
- package/test-keys-a/CURRENT +1 -0
- package/test-keys-a/LOCK +0 -0
- package/test-keys-a/LOG +3 -0
- package/test-keys-a/LOG.old +3 -0
- package/test-keys-a/MANIFEST-000592 +0 -0
- package/test-keys-b/000593.log +0 -0
- package/test-keys-b/CURRENT +1 -0
- package/test-keys-b/LOCK +0 -0
- package/test-keys-b/LOG +3 -0
- package/test-keys-b/LOG.old +3 -0
- package/test-keys-b/MANIFEST-000592 +0 -0
- package/test-node-a/000871.ldb +0 -0
- package/test-node-a/000873.ldb +0 -0
- package/test-node-a/000876.ldb +0 -0
- package/test-node-a/000879.ldb +0 -0
- package/test-node-a/000880.log +0 -0
- package/test-node-a/CURRENT +1 -1
- package/test-node-a/LOG +5 -5
- package/test-node-a/LOG.old +5 -5
- package/test-node-a/MANIFEST-000878 +0 -0
- package/test-node-b/000871.ldb +0 -0
- package/test-node-b/000873.ldb +0 -0
- package/test-node-b/000876.ldb +0 -0
- package/test-node-b/000879.ldb +0 -0
- package/test-node-b/000880.log +0 -0
- package/test-node-b/CURRENT +1 -1
- package/test-node-b/LOG +5 -5
- package/test-node-b/LOG.old +5 -5
- package/test-node-b/MANIFEST-000878 +0 -0
- package/test-verify-a/000725.log +0 -0
- package/test-verify-a/CURRENT +1 -0
- package/test-verify-a/LOCK +0 -0
- package/test-verify-a/LOG +3 -0
- package/test-verify-a/LOG.old +3 -0
- package/test-verify-a/MANIFEST-000724 +0 -0
- package/dist/webrtc/joinWebrtcTorrent.d.ts +0 -3
- package/dist/webrtc/joinWebrtcTorrent.js +0 -312
- package/dist/webrtc/joinWebrtcTorrent.js.map +0 -1
- package/test-alice/000236.ldb +0 -0
- package/test-alice/000344.ldb +0 -0
- package/test-alice/000520.ldb +0 -0
- package/test-alice/000522.ldb +0 -0
- package/test-alice/000525.ldb +0 -0
- package/test-alice/000526.log +0 -0
- package/test-alice/MANIFEST-000524 +0 -0
- package/test-bob/000520.ldb +0 -0
- package/test-bob/000522.ldb +0 -0
- package/test-bob/000523.log +0 -0
- package/test-bob/MANIFEST-000521 +0 -0
- package/test-node-a/000524.ldb +0 -0
- package/test-node-a/000526.ldb +0 -0
- package/test-node-a/000529.ldb +0 -0
- package/test-node-a/000530.log +0 -0
- package/test-node-a/MANIFEST-000528 +0 -0
- package/test-node-b/000524.ldb +0 -0
- package/test-node-b/000526.ldb +0 -0
- package/test-node-b/000529.ldb +0 -0
- package/test-node-b/000530.log +0 -0
- package/test-node-b/MANIFEST-000528 +0 -0
package/README.md
CHANGED
|
@@ -2,7 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
ToolDb is a peer-to-peer model for a decentralized database, inspired by Gun (Mark Nadal): https://gun.eco/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
It is the mix of a lot of cool concepts into one;
|
|
7
|
+
- Cryptographically secure.
|
|
8
|
+
- Offline first.
|
|
9
|
+
- Fully decentralized.
|
|
10
|
+
- Capable of providing realtime updates.
|
|
11
|
+
- Key-value/document storage.
|
|
12
|
+
- Works in the Browser and Nodejs seamlessly.
|
|
6
13
|
|
|
7
14
|
We push towards of the concept of federated servers, where we set up a p2p mesh network between any servers who want to join the swarm, and have those servers manage the connection and data sharing between them, while allowing client peers to connect to them to push updates to the database.
|
|
8
15
|
This setup IS NOT a requirement! It is just what I think is the best and most reliable way of creating a p2p network for dApps using both desktop and web compatible technologies. Any peer has the capability of connecting to any other peer trough websockets, and modifiying the code to allow webRtc connections between web peers is absolutely possible.
|
|
@@ -10,17 +17,35 @@ This setup IS NOT a requirement! It is just what I think is the best and most re
|
|
|
10
17
|
Since anyone can join a federated server swarm to help growing the network we use cryptography (basic public and private key authenthication and signature validation) to ensure all messages are coming from the real authors of the data that they intend to modify; this way by joining a swarm all peers in it can help validate without even having full data; even a new server peer can help, because all information is stored on each message and we dont rely on any centralized database to fetch users data.
|
|
11
18
|
|
|
12
19
|
Please check the [chain-swarm](https://github.com/Manwe-777/chain-swarm) repository to see how a federated server swarm would look like, Tool Db only handles the connection and messaging between peers, but it does not have any logic for peer discovery.
|
|
13
|
-
We do that using [discovery-channel](https://www.npmjs.com/package/discovery-channel), but you can use any DHT solution you want! even WebRTC between browsers
|
|
20
|
+
We do that using [discovery-channel](https://www.npmjs.com/package/discovery-channel), but you can use any DHT/networking solution you want! even WebRTC between browsers works using the `toolDbWebrtc` transport.
|
|
14
21
|
|
|
15
22
|
# Future work
|
|
16
23
|
|
|
17
24
|
While the database is currently functioning as expected, there are many things that could be added or improved to make it even better!
|
|
18
25
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
- Use a common web3 format for users identity, or a more standarized key pair.
|
|
27
|
+
- Allow messages encryption, add methods for Elliptic Curves, shared keys, etc.
|
|
28
|
+
- Allow adding Noise/encryption to connections (probably based on the ECC?)
|
|
29
|
+
|
|
30
|
+
# Install
|
|
31
|
+
|
|
32
|
+
You can install ToolDb via npm or yarn;
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
npm install tool-db
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
or use it via script in your html;
|
|
23
39
|
|
|
40
|
+
```
|
|
41
|
+
<script src="https://unpkg.com/tool-db/bundle.js"></script>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
That will include all of ToolDb exports in `tooldb`, then you can use it like;
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
const { ToolDb, sha256 } = tooldb;
|
|
48
|
+
```
|
|
24
49
|
|
|
25
50
|
## Base usage
|
|
26
51
|
Connect to the selected toolDb peers;
|
|
@@ -81,7 +106,7 @@ These are the options you can pass to the constructor:
|
|
|
81
106
|
topic: string;
|
|
82
107
|
|
|
83
108
|
// Public and private (ECDSA) keys of our client. In the default network adapter these are used to sign
|
|
84
|
-
// our messages as we join and leave the network,
|
|
109
|
+
// our messages as we join and leave the network, public key should match the client ID (as a base64 exported string).
|
|
85
110
|
publicKey: CryptoKey | undefined;
|
|
86
111
|
privateKey: CryptoKey | undefined;
|
|
87
112
|
}
|