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: elip-0XXX.mediawiki
+10-48Lines changed: 10 additions & 48 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@
15
15
16
16
===Abstract===
17
17
18
-
This document defines the account ID and asset ID specifications for the Liquid Network to enable interoperability with WalletConnect and other chain-agnostic protocols.
18
+
This document defines the account ID and asset ID specifications for the Liquid Network to enable interoperability with chain-agnostic wallet connection protocols.
19
19
These specifications are based on the Chain Agnostic Improvement Proposals (CAIPs), specifically [CAIP-10](https://chainagnostic.org/CAIPs/caip-10) for account identification and [CAIP-19](https://chainagnostic.org/CAIPs/caip-19) for asset identification,
20
20
adapted to the UTXO model of the Liquid Network.
21
21
@@ -25,14 +25,11 @@ This document is licensed under the 3-clause BSD license.
25
25
26
26
===Motivation===
27
27
28
-
WalletConnect has become a standard protocol for wallet-to-dapp communication in the blockchain ecosystem.
29
-
However, its implementation on UTXO-based blockchains like the Liquid Network presents unique challenges due to the fundamental differences between UTXO and account-based models.
30
-
31
-
Currently, there is no standardized method for identifying accounts and assets on the Liquid Network within the WalletConnect ecosystem.
32
-
This lack of standardization impedes the development of interoperable applications and hinders the integration of Liquid Network with cross-chain protocols.
28
+
Currently, there is no standardized method for identifying accounts and assets on the Liquid Network.
29
+
This lack of standardization impedes Liquid's integration with wallet connection protocols and cross-chain applications.
33
30
34
31
This ELIP aims to establish a standardized approach for representing Liquid Network accounts and assets in a way that is compatible with existing chain-agnostic standards,
35
-
thereby enabling integration with WalletConnect and other cross-chain protocols.
32
+
thereby enabling integration with wallet connection protocols.
36
33
37
34
==Specification==
38
35
@@ -41,33 +38,24 @@ thereby enabling integration with WalletConnect and other cross-chain protocols.
41
38
Following CAIP-10, the account ID for Liquid Network is defined as:
42
39
43
40
<pre>
44
-
account_id: chain_id + ":" + account_address
41
+
account_id: chain_id + ":" + dwid
45
42
chain_id: "bip122:" + reference
46
43
reference: First 32 characters of the network's genesis block hash
47
-
account_address: Hexadecimal string deterministically derived from a CT Descriptor ([ELIP-150](https://github.com/ElementsProject/ELIPs/blob/master/ELIPs/elip-0150.mediawiki))
44
+
dwid: Deterministic Wallet IDentifier (DWID) as defined in [https://github.com/ElementsProject/ELIPs/blob/main/elip-0152.mediawikiELIP-152]
48
45
</pre>
49
46
50
47
Where:
51
48
* For Liquid Network: chain_id = "bip122:1466275836220db2944ca059a3a10ef6"
52
49
* For Liquid Testnet: chain_id = "bip122:a771da8e52ee6ad581ed1e9a99825e5b"
50
+
* For Liquid Regtest (default): chain_id = "bip122:cc2641af46f536fba45aab6016f63e12"
53
51
54
-
The account_address in the UTXO model isn't a proper address where someone can send funds to.
55
-
This is done on purpose to avoid address reuse and leaking information about the wallet.
56
-
57
-
The account_address is derived from the CT descriptor and the network with the following steps:
58
-
59
-
1. If the descriptor has no wildcard, fail.
60
-
2. If the descriptor is multipath (it contains "<0;1>"), take the external chain (0).
61
-
3. Deriving a blinded address from the given CT descriptor and network at the fixed index (2^31 - 1). By doing so slightly different descriptors that represent the same wallet (eg. using or not using the fingerprint) will create the same identifier.
62
-
4. Hashing the address string with SHA256, so that is not possible to send funds to the account_address.
63
-
5. Taking the first 16 bytes (32 hex characters) of the hash, so that is not too long but it is still impossible to create collisions.
64
-
6. Formatting with hyphens every 4 characters (e.g. "1234-5678-90ab-cdef-1234-5678-90ab-cdef") This should improve human readability and comparability.
52
+
The DWID is derived from the CT descriptor as specified in ELIP-152.
53
+
Note that in the UTXO model this isn't a proper address where someone can send funds to, which avoids address reuse and prevents leaking information about the wallet.
Test vectors are available in the [Test Vectors](#test-vectors) section.
71
59
72
60
===Asset ID Specification===
73
61
@@ -94,7 +82,7 @@ Example Asset IDs:
94
82
95
83
Note: This specification replaces the previously suggested [slip44](https://github.com/satoshilabs/slips/blob/master/slip-0044.md) namespace for Liquid assets, as the slip44 namespace can represent only the policy asset (Liquid BTC) and cannot represent the variety of assets on the Liquid Network.
96
84
97
-
===Cross-Chain Asset Recognition===
85
+
===Use Cases===
98
86
99
87
The asset ID specification allows for recognition of the same asset across different blockchains. For example:
100
88
* Tether USDt on Liquid: "bip122:1466275836220db2944ca059a3a10ef6/elipXXX:ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2"
@@ -103,32 +91,6 @@ The asset ID specification allows for recognition of the same asset across diffe
103
91
Applications can use these identifiers to recognize that these assets represent the same underlying value, facilitating cross-chain operations.
104
92
105
93
106
-
==Test Vectors==
107
-
108
-
The following are test vectors for the account identifier.
This proposal introduces new standards and does not affect existing functionality. Wallets and applications that do not support these standards can continue to operate as before.
129
-
130
-
==Reference Implementation==
131
-
132
-
A reference implementation of the account_address computation is available in [LWK](https://github.com/Blockstream/lwk/blob/4ec85076f549d17cc920e3b7763516345daea3ad/lwk_wollet/src/descriptor.rs#L164)
0 commit comments