@defuse-protocol/intents-sdk 0.84.0 → 0.85.1
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/dist/src/bridges/poa-bridge/poa-bridge-utils.cjs +2 -2
- package/dist/src/bridges/poa-bridge/poa-bridge-utils.js +2 -2
- package/dist/src/lib/caip2.cjs +1 -1
- package/dist/src/lib/caip2.d.cts +1 -1
- package/dist/src/lib/caip2.d.ts +1 -1
- package/dist/src/lib/caip2.js +1 -1
- package/dist/src/lib/compareAddresses.cjs +1 -1
- package/dist/src/lib/compareAddresses.js +1 -1
- package/dist/src/lib/validateAddress.cjs +30 -2
- package/dist/src/lib/validateAddress.js +30 -2
- package/package.json +2 -2
|
@@ -42,7 +42,7 @@ const caip2Mapping = {
|
|
|
42
42
|
[require_caip2.Chains.Dash]: "dash:mainnet",
|
|
43
43
|
[require_caip2.Chains.Plasma]: "eth:9745",
|
|
44
44
|
[require_caip2.Chains.Adi]: "eth:36900",
|
|
45
|
-
[require_caip2.Chains.
|
|
45
|
+
[require_caip2.Chains.Hood]: "eth:4663"
|
|
46
46
|
};
|
|
47
47
|
function toPoaNetwork(caip2) {
|
|
48
48
|
if (caip2Mapping[caip2] == null) throw new Error(`Unsupported POA Bridge chain = ${caip2}`);
|
|
@@ -67,7 +67,7 @@ const tokenPrefixMapping = {
|
|
|
67
67
|
dash: require_caip2.Chains.Dash,
|
|
68
68
|
plasma: require_caip2.Chains.Plasma,
|
|
69
69
|
adi: require_caip2.Chains.Adi,
|
|
70
|
-
hood: require_caip2.Chains.
|
|
70
|
+
hood: require_caip2.Chains.Hood
|
|
71
71
|
};
|
|
72
72
|
function contractIdToCaip2(contractId) {
|
|
73
73
|
for (const [prefix, caip2] of Object.entries(tokenPrefixMapping)) if (contractId.startsWith(`${prefix}.`) || contractId.startsWith(`${prefix}-`)) return caip2;
|
|
@@ -41,7 +41,7 @@ const caip2Mapping = {
|
|
|
41
41
|
[Chains.Dash]: "dash:mainnet",
|
|
42
42
|
[Chains.Plasma]: "eth:9745",
|
|
43
43
|
[Chains.Adi]: "eth:36900",
|
|
44
|
-
[Chains.
|
|
44
|
+
[Chains.Hood]: "eth:4663"
|
|
45
45
|
};
|
|
46
46
|
function toPoaNetwork(caip2) {
|
|
47
47
|
if (caip2Mapping[caip2] == null) throw new Error(`Unsupported POA Bridge chain = ${caip2}`);
|
|
@@ -66,7 +66,7 @@ const tokenPrefixMapping = {
|
|
|
66
66
|
dash: Chains.Dash,
|
|
67
67
|
plasma: Chains.Plasma,
|
|
68
68
|
adi: Chains.Adi,
|
|
69
|
-
hood: Chains.
|
|
69
|
+
hood: Chains.Hood
|
|
70
70
|
};
|
|
71
71
|
function contractIdToCaip2(contractId) {
|
|
72
72
|
for (const [prefix, caip2] of Object.entries(tokenPrefixMapping)) if (contractId.startsWith(`${prefix}.`) || contractId.startsWith(`${prefix}-`)) return caip2;
|
package/dist/src/lib/caip2.cjs
CHANGED
|
@@ -42,7 +42,7 @@ const Chains = {
|
|
|
42
42
|
Abstract: "eip155:2741",
|
|
43
43
|
HyperCore: "hlcore:mainnet",
|
|
44
44
|
HyperEvm: "eip155:999",
|
|
45
|
-
|
|
45
|
+
Hood: "eip155:4663"
|
|
46
46
|
};
|
|
47
47
|
function getEIP155ChainId(chain) {
|
|
48
48
|
(0, _defuse_protocol_internal_utils.assert)(chain.startsWith("eip155:"), "Chain is not an EIP-155 chain");
|
package/dist/src/lib/caip2.d.cts
CHANGED
|
@@ -39,7 +39,7 @@ declare const Chains: {
|
|
|
39
39
|
readonly Abstract: "eip155:2741";
|
|
40
40
|
readonly HyperCore: "hlcore:mainnet";
|
|
41
41
|
readonly HyperEvm: "eip155:999";
|
|
42
|
-
readonly
|
|
42
|
+
readonly Hood: "eip155:4663";
|
|
43
43
|
};
|
|
44
44
|
type Chain = (typeof Chains)[keyof typeof Chains];
|
|
45
45
|
//#endregion
|
package/dist/src/lib/caip2.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ declare const Chains: {
|
|
|
39
39
|
readonly Abstract: "eip155:2741";
|
|
40
40
|
readonly HyperCore: "hlcore:mainnet";
|
|
41
41
|
readonly HyperEvm: "eip155:999";
|
|
42
|
-
readonly
|
|
42
|
+
readonly Hood: "eip155:4663";
|
|
43
43
|
};
|
|
44
44
|
type Chain = (typeof Chains)[keyof typeof Chains];
|
|
45
45
|
//#endregion
|
package/dist/src/lib/caip2.js
CHANGED
|
@@ -41,7 +41,7 @@ const Chains = {
|
|
|
41
41
|
Abstract: "eip155:2741",
|
|
42
42
|
HyperCore: "hlcore:mainnet",
|
|
43
43
|
HyperEvm: "eip155:999",
|
|
44
|
-
|
|
44
|
+
Hood: "eip155:4663"
|
|
45
45
|
};
|
|
46
46
|
function getEIP155ChainId(chain) {
|
|
47
47
|
assert(chain.startsWith("eip155:"), "Chain is not an EIP-155 chain");
|
|
@@ -31,7 +31,7 @@ function compareAddresses(a, b, blockchain) {
|
|
|
31
31
|
case require_caip2.Chains.Abstract:
|
|
32
32
|
case require_caip2.Chains.HyperCore:
|
|
33
33
|
case require_caip2.Chains.HyperEvm:
|
|
34
|
-
case require_caip2.Chains.
|
|
34
|
+
case require_caip2.Chains.Hood: return (0, viem.getAddress)(a) === (0, viem.getAddress)(b);
|
|
35
35
|
case require_caip2.Chains.Aptos:
|
|
36
36
|
case require_caip2.Chains.Movement:
|
|
37
37
|
case require_caip2.Chains.Sui:
|
|
@@ -30,7 +30,7 @@ function compareAddresses(a, b, blockchain) {
|
|
|
30
30
|
case Chains.Abstract:
|
|
31
31
|
case Chains.HyperCore:
|
|
32
32
|
case Chains.HyperEvm:
|
|
33
|
-
case Chains.
|
|
33
|
+
case Chains.Hood: return getAddress(a) === getAddress(b);
|
|
34
34
|
case Chains.Aptos:
|
|
35
35
|
case Chains.Movement:
|
|
36
36
|
case Chains.Sui:
|
|
@@ -52,7 +52,7 @@ function validateAddress(address, blockchain) {
|
|
|
52
52
|
case require_caip2.Chains.Abstract:
|
|
53
53
|
case require_caip2.Chains.HyperCore:
|
|
54
54
|
case require_caip2.Chains.HyperEvm:
|
|
55
|
-
case require_caip2.Chains.
|
|
55
|
+
case require_caip2.Chains.Hood: return validateEthAddress(address);
|
|
56
56
|
case require_caip2.Chains.Aleo: return validateAleoAddress(address);
|
|
57
57
|
case require_caip2.Chains.Dash: return validateDashAddress(address);
|
|
58
58
|
default: return false;
|
|
@@ -204,7 +204,7 @@ function validateXrpAddress(address) {
|
|
|
204
204
|
* - Unified Orchard / Unified Addresses (UA)
|
|
205
205
|
*/
|
|
206
206
|
function validateZcashAddress(address) {
|
|
207
|
-
if (address.startsWith("t1") || address.startsWith("t3")) return
|
|
207
|
+
if (address.startsWith("t1") || address.startsWith("t3")) return validateZcashTransparentAddress(address);
|
|
208
208
|
const expectedHrp = "tex";
|
|
209
209
|
if (address.startsWith(`${expectedHrp}1`)) try {
|
|
210
210
|
const decoded = _scure_base.bech32m.decodeToBytes(address);
|
|
@@ -217,6 +217,34 @@ function validateZcashAddress(address) {
|
|
|
217
217
|
return false;
|
|
218
218
|
}
|
|
219
219
|
/**
|
|
220
|
+
* Validates Zcash transparent addresses (mainnet only).
|
|
221
|
+
*
|
|
222
|
+
* Mirrors zcash_address::ZcashAddress::from_str's Base58Check branch
|
|
223
|
+
* (components/zcash_address/src/encoding.rs in zcash/librustzcash):
|
|
224
|
+
* decode Base58Check, then match the 2-byte version prefix against the
|
|
225
|
+
* mainnet P2PKH/P2SH prefixes from zcash_protocol::constants::mainnet.
|
|
226
|
+
*
|
|
227
|
+
* B58_PUBKEY_ADDRESS_PREFIX = [0x1c, 0xb8] (t1...)
|
|
228
|
+
* B58_SCRIPT_ADDRESS_PREFIX = [0x1c, 0xbd] (t3...)
|
|
229
|
+
*/
|
|
230
|
+
function validateZcashTransparentAddress(address) {
|
|
231
|
+
try {
|
|
232
|
+
const decoded = _scure_base.base58.decode(address);
|
|
233
|
+
if (decoded.length !== 26) return false;
|
|
234
|
+
const version = decoded.subarray(0, 2);
|
|
235
|
+
const isP2pkh = version[0] === 28 && version[1] === 184;
|
|
236
|
+
const isP2sh = version[0] === 28 && version[1] === 189;
|
|
237
|
+
if (!isP2pkh && !isP2sh) return false;
|
|
238
|
+
const payload = decoded.subarray(0, 22);
|
|
239
|
+
const checksum = decoded.subarray(22, 26);
|
|
240
|
+
const expectedChecksum = (0, _noble_hashes_sha2.sha256)((0, _noble_hashes_sha2.sha256)(payload)).subarray(0, 4);
|
|
241
|
+
for (let i = 0; i < 4; i++) if (checksum[i] !== expectedChecksum[i]) return false;
|
|
242
|
+
return true;
|
|
243
|
+
} catch {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
220
248
|
* Validates Tron addresses
|
|
221
249
|
* Supports:
|
|
222
250
|
* - hex addresses
|
|
@@ -51,7 +51,7 @@ function validateAddress(address, blockchain) {
|
|
|
51
51
|
case Chains.Abstract:
|
|
52
52
|
case Chains.HyperCore:
|
|
53
53
|
case Chains.HyperEvm:
|
|
54
|
-
case Chains.
|
|
54
|
+
case Chains.Hood: return validateEthAddress(address);
|
|
55
55
|
case Chains.Aleo: return validateAleoAddress(address);
|
|
56
56
|
case Chains.Dash: return validateDashAddress(address);
|
|
57
57
|
default: return false;
|
|
@@ -203,7 +203,7 @@ function validateXrpAddress(address) {
|
|
|
203
203
|
* - Unified Orchard / Unified Addresses (UA)
|
|
204
204
|
*/
|
|
205
205
|
function validateZcashAddress(address) {
|
|
206
|
-
if (address.startsWith("t1") || address.startsWith("t3")) return
|
|
206
|
+
if (address.startsWith("t1") || address.startsWith("t3")) return validateZcashTransparentAddress(address);
|
|
207
207
|
const expectedHrp = "tex";
|
|
208
208
|
if (address.startsWith(`${expectedHrp}1`)) try {
|
|
209
209
|
const decoded = bech32m.decodeToBytes(address);
|
|
@@ -216,6 +216,34 @@ function validateZcashAddress(address) {
|
|
|
216
216
|
return false;
|
|
217
217
|
}
|
|
218
218
|
/**
|
|
219
|
+
* Validates Zcash transparent addresses (mainnet only).
|
|
220
|
+
*
|
|
221
|
+
* Mirrors zcash_address::ZcashAddress::from_str's Base58Check branch
|
|
222
|
+
* (components/zcash_address/src/encoding.rs in zcash/librustzcash):
|
|
223
|
+
* decode Base58Check, then match the 2-byte version prefix against the
|
|
224
|
+
* mainnet P2PKH/P2SH prefixes from zcash_protocol::constants::mainnet.
|
|
225
|
+
*
|
|
226
|
+
* B58_PUBKEY_ADDRESS_PREFIX = [0x1c, 0xb8] (t1...)
|
|
227
|
+
* B58_SCRIPT_ADDRESS_PREFIX = [0x1c, 0xbd] (t3...)
|
|
228
|
+
*/
|
|
229
|
+
function validateZcashTransparentAddress(address) {
|
|
230
|
+
try {
|
|
231
|
+
const decoded = base58.decode(address);
|
|
232
|
+
if (decoded.length !== 26) return false;
|
|
233
|
+
const version = decoded.subarray(0, 2);
|
|
234
|
+
const isP2pkh = version[0] === 28 && version[1] === 184;
|
|
235
|
+
const isP2sh = version[0] === 28 && version[1] === 189;
|
|
236
|
+
if (!isP2pkh && !isP2sh) return false;
|
|
237
|
+
const payload = decoded.subarray(0, 22);
|
|
238
|
+
const checksum = decoded.subarray(22, 26);
|
|
239
|
+
const expectedChecksum = sha256(sha256(payload)).subarray(0, 4);
|
|
240
|
+
for (let i = 0; i < 4; i++) if (checksum[i] !== expectedChecksum[i]) return false;
|
|
241
|
+
return true;
|
|
242
|
+
} catch {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
219
247
|
* Validates Tron addresses
|
|
220
248
|
* Supports:
|
|
221
249
|
* - hex addresses
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defuse-protocol/intents-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"valibot": "^1.0.0",
|
|
60
60
|
"viem": "^2.0.0",
|
|
61
61
|
"@defuse-protocol/contract-types": "0.6.4",
|
|
62
|
-
"@defuse-protocol/internal-utils": "0.
|
|
62
|
+
"@defuse-protocol/internal-utils": "0.39.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@ton/core": "^0.60.0",
|