You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: cashaccounts_retention.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -2,4 +2,4 @@
2
2
3
3
This is a stub for the specs of an example Retention Server based on Cashaccounts.
4
4
5
-
The server shall retain transaction ids for its client in a relatively permissionless way; to subscribe for its service, a client will simply need to supply a Cashaccount registration, along with the scan privkey. To maximize DoS resistance efficiency, first implementations of this retention server can be coupled with the relay server as well, opening relays to other types of retention servers as well as personal subscribers. Future implementations can be more decoupled, with retention servers acquiring trusted tokens from relays to allow for higher subscription bandwidth.
5
+
The server shall retain transaction ids for its client in a relatively permissionless way; to subscribe for its service, a client will simply need to supply a Cashaccount registration, along with the scan privkey. To maximize DoS resistance efficiency, first implementations of this retention server can be coupled with the relay server as well, opening relays to other types of retention servers as well as personal subscribers. Future implementations can be more decoupled, with retention servers acquiring trusted tokens from relays to allow for higher subscription bandwidth.
This is a stub intended to specify hookups with single Cashaddr via Shammah Chancellor's
2
-
[keyserver](https://github.com/cashweb/keyserver) system. Reusable addresses that has graceful fallback is possible via such a keyserver network, and serves as an excellent way to introduce reusable addresses to the masses without additional effort from the user's side.
1
+
This is a stub intended to specify hookups with single Cashaddr via Shammah Chancellor's
2
+
[keyserver](https://github.com/cashweb/keyserver) system. Reusable addresses that has graceful fallback is possible via such a keyserver network, and serves as an excellent way to introduce reusable addresses to the masses without additional effort from the user's side.
Copy file name to clipboardExpand all lines: recovery_servers.md
+13-13
Original file line number
Diff line number
Diff line change
@@ -4,52 +4,52 @@ This is a stub for the specs of communication protocol needed for the proposed R
4
4
5
5
Method ideas:
6
6
7
-
**version**
7
+
**version**
8
8
9
-
Simple version handshake. Client sends a version request with his own desired version, server returns with two values: min_version and max_version, which indicates features it supports.
9
+
Simple version handshake. Client sends a version request with his own desired version, server returns with two values: min_version and max_version, which indicates features it supports.
10
10
11
11
**get_history**
12
12
13
-
Client requests:
13
+
Client requests:
14
14
15
15
1. Version
16
-
2. Start_block
16
+
2. Start_block
17
17
3. End_block (0 if including unconfirmed)
18
18
4. Prefix length
19
19
5. Desired prefix
20
20
6. Flag
21
21
22
-
Server rejects if version unsupported.
22
+
Server rejects if version unsupported.
23
23
24
24
Otherwise server first returns an estimated size of transactions (or txids, if compact) to transmit. Client acknowledges, then between start_block and end_block inclusive, return a list of transactions with at least one qualifying input's double sha256 hash matching the desired prefix string and length, each accompanied by their block number if confirmed. Returns error if rate-limited.
25
25
26
26
Flag can be used to request utxo (returns only unspent) and/or compact (returns txid instead of whole transactions).
27
27
28
28
**subscribe**
29
29
30
-
Client request:
30
+
Client request:
31
31
32
32
1. Version
33
33
2. Prefix length
34
34
3. Desired prefix
35
35
4. Expiry time
36
36
5. Flag
37
37
38
-
Server monitors mempool + newly confirmed blocks, and pass any matching transactions (see get_history) to client. Server stops monitoring at expiry time, can be renewed. Rejects if expiry time is too far in the future.
38
+
Server monitors mempool + newly confirmed blocks, and pass any matching transactions (see get_history) to client. Server stops monitoring at expiry time, can be renewed. Rejects if expiry time is too far in the future.
39
39
40
-
Flag can be used to request compact (returns txid instead of whole transactions).
40
+
Flag can be used to request compact (returns txid instead of whole transactions).
41
41
42
42
-- optional --
43
43
44
-
**get_peers**
44
+
**get_peers**
45
45
46
-
get a list of known server peers (host/ports) along with their min_version and max_versions. Useful for federation.
46
+
get a list of known server peers (host/ports) along with their min_version and max_versions. Useful for federation.
47
47
48
-
**add_peer**
48
+
**add_peer**
49
49
50
-
A server announces its existence to other servers along with its min/max versions, which indicates features it support. Useful for federation. Peers may periodically check each other for integrity using minimal get_history.
50
+
A server announces its existence to other servers along with its min/max versions, which indicates features it support. Useful for federation. Peers may periodically check each other for integrity using minimal get_history.
51
51
52
-
**paid_history**
52
+
**paid_history**
53
53
54
54
Like get_history, but server returns a paycode and amount along with the size estimate. Instead of a simple acknowledgement, client returns a transaction, which the server parses and broadcasts before serving data. Returns error if payment invalid or insufficient.
Copy file name to clipboardExpand all lines: relay_server.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -2,10 +2,10 @@
2
2
3
3
This is a stub for the specs of communication protocol needed for the proposed Ephemeral Relay Server.
4
4
5
-
The initial subscription shall follow the [CashID](https://gitlab.com/cashid/protocol-specification) protocol, with the scan_pubkey as the desired identity, and the client specifying how long the subscription shall be - a standalone wallet client only looking to send transactions will have a shorter, ephemeral subscription. The Challenge Request can then be signed with the scan_privkey in a response.
5
+
The initial subscription shall follow the [CashID](https://gitlab.com/cashid/protocol-specification) protocol, with the scan_pubkey as the desired identity, and the client specifying how long the subscription shall be - a standalone wallet client only looking to send transactions will have a shorter, ephemeral subscription. The Challenge Request can then be signed with the scan_privkey in a response.
6
6
7
7
When implementing federation, a relay server can act as the intermediate and relay challenge messages between its clients and a remote relay server to start the subscription.
8
8
9
-
After a successful subscription, the server shall periodically challenge the server for responses to refresh the subscription.
9
+
After a successful subscription, the server shall periodically challenge the server for responses to refresh the subscription.
10
10
11
-
At sending, a logged in client will encrypt the transcription with the recipient's scan_pubkey and sent to the relay server. The relay server will hand it to the appropriate subscriber(s) as well as other relay servers; it returns an ack to the sending client upon relay, but the sending wallet shall not trust that message. The message is immediately destroyed upon successful relay.
11
+
At sending, a logged in client will encrypt the transcription with the recipient's scan_pubkey and sent to the relay server. The relay server will hand it to the appropriate subscriber(s) as well as other relay servers; it returns an ack to the sending client upon relay, but the sending wallet shall not trust that message. The message is immediately destroyed upon successful relay.
0 commit comments