@hyperlane-xyz/tron-sdk 21.0.0
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/LICENSE.md +195 -0
- package/README.md +47 -0
- package/dist/abi/DomainRoutingIsm.json +240 -0
- package/dist/abi/ERC20.json +293 -0
- package/dist/abi/ERC20Test.json +365 -0
- package/dist/abi/HypERC20.json +920 -0
- package/dist/abi/HypERC20Collateral.json +1556 -0
- package/dist/abi/HypNative.json +1561 -0
- package/dist/abi/IERC20.json +190 -0
- package/dist/abi/IInterchainSecurityModule.json +44 -0
- package/dist/abi/IPostDispatchHook.json +81 -0
- package/dist/abi/InterchainGasPaymaster.json +518 -0
- package/dist/abi/Mailbox.json +686 -0
- package/dist/abi/MerkleTreeHook.json +375 -0
- package/dist/abi/NoopIsm.json +57 -0
- package/dist/abi/PausableHook.json +199 -0
- package/dist/abi/ProxyAdmin.json +156 -0
- package/dist/abi/StaticMerkleRootMultisigIsm.json +100 -0
- package/dist/abi/StaticMessageIdMultisigIsm.json +100 -0
- package/dist/abi/StorageGasOracle.json +205 -0
- package/dist/abi/TransparentUpgradeableProxy.json +81 -0
- package/dist/abi/ValidatorAnnounce.json +299 -0
- package/dist/clients/protocol.d.ts +17 -0
- package/dist/clients/protocol.d.ts.map +1 -0
- package/dist/clients/protocol.js +40 -0
- package/dist/clients/protocol.js.map +1 -0
- package/dist/clients/provider.d.ts +67 -0
- package/dist/clients/provider.d.ts.map +1 -0
- package/dist/clients/provider.js +558 -0
- package/dist/clients/provider.js.map +1 -0
- package/dist/clients/signer.d.ts +46 -0
- package/dist/clients/signer.d.ts.map +1 -0
- package/dist/clients/signer.js +561 -0
- package/dist/clients/signer.js.map +1 -0
- package/dist/hook/hook-query.d.ts +41 -0
- package/dist/hook/hook-query.d.ts.map +1 -0
- package/dist/hook/hook-query.js +79 -0
- package/dist/hook/hook-query.js.map +1 -0
- package/dist/hook/hook-tx.d.ts +39 -0
- package/dist/hook/hook-tx.d.ts.map +1 -0
- package/dist/hook/hook-tx.js +95 -0
- package/dist/hook/hook-tx.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/ism/ism-query.d.ts +70 -0
- package/dist/ism/ism-query.d.ts.map +1 -0
- package/dist/ism/ism-query.js +137 -0
- package/dist/ism/ism-query.js.map +1 -0
- package/dist/ism/ism-tx.d.ts +67 -0
- package/dist/ism/ism-tx.d.ts.map +1 -0
- package/dist/ism/ism-tx.js +110 -0
- package/dist/ism/ism-tx.js.map +1 -0
- package/dist/tests/1_interchain_security.e2e-test.d.ts +2 -0
- package/dist/tests/1_interchain_security.e2e-test.d.ts.map +1 -0
- package/dist/tests/1_interchain_security.e2e-test.js +172 -0
- package/dist/tests/1_interchain_security.e2e-test.js.map +1 -0
- package/dist/tests/2_core.e2e-test.d.ts +2 -0
- package/dist/tests/2_core.e2e-test.d.ts.map +1 -0
- package/dist/tests/2_core.e2e-test.js +117 -0
- package/dist/tests/2_core.e2e-test.js.map +1 -0
- package/dist/tests/3_post_dispatch.e2e-test.d.ts +2 -0
- package/dist/tests/3_post_dispatch.e2e-test.d.ts.map +1 -0
- package/dist/tests/3_post_dispatch.e2e-test.js +116 -0
- package/dist/tests/3_post_dispatch.e2e-test.js.map +1 -0
- package/dist/tests/4_warp.e2e-test.d.ts +2 -0
- package/dist/tests/4_warp.e2e-test.d.ts.map +1 -0
- package/dist/tests/4_warp.e2e-test.js +304 -0
- package/dist/tests/4_warp.e2e-test.js.map +1 -0
- package/dist/tests/index.e2e-test.d.ts +5 -0
- package/dist/tests/index.e2e-test.d.ts.map +1 -0
- package/dist/tests/index.e2e-test.js +6 -0
- package/dist/tests/index.e2e-test.js.map +1 -0
- package/dist/utils/index.d.ts +24 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +71 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/types.d.ts +94 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +13 -0
- package/dist/utils/types.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import DomainRoutingIsmAbi from '../abi/DomainRoutingIsm.json' with { type: 'json' };
|
|
2
|
+
import NoopIsmAbi from '../abi/NoopIsm.json' with { type: 'json' };
|
|
3
|
+
import StaticMerkleRootMultisigIsmAbi from '../abi/StaticMerkleRootMultisigIsm.json' with { type: 'json' };
|
|
4
|
+
import StaticMessageIdMultisigIsmAbi from '../abi/StaticMessageIdMultisigIsm.json' with { type: 'json' };
|
|
5
|
+
import { buildMetaProxyBytecode, createDeploymentTransaction, createRawBytecodeDeploymentTransaction, } from '../utils/index.js';
|
|
6
|
+
export async function getCreateTestIsmTx(tronweb, fromAddress) {
|
|
7
|
+
return createDeploymentTransaction(tronweb, NoopIsmAbi, fromAddress, []);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Deploys StaticMessageIdMultisigIsm implementation contract (deploy once, reuse)
|
|
11
|
+
* @param tronweb - TronWeb instance
|
|
12
|
+
* @param fromAddress - Deployer address
|
|
13
|
+
* @returns Transaction to deploy implementation
|
|
14
|
+
*/
|
|
15
|
+
export async function getCreateMessageIdMultisigIsmImplementationTx(tronweb, fromAddress) {
|
|
16
|
+
return createDeploymentTransaction(tronweb, StaticMessageIdMultisigIsmAbi, fromAddress, []);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Deploys StaticMerkleRootMultisigIsm implementation contract (deploy once, reuse)
|
|
20
|
+
* @param tronweb - TronWeb instance
|
|
21
|
+
* @param fromAddress - Deployer address
|
|
22
|
+
* @returns Transaction to deploy implementation
|
|
23
|
+
*/
|
|
24
|
+
export async function getCreateMerkleRootMultisigIsmImplementationTx(tronweb, fromAddress) {
|
|
25
|
+
return createDeploymentTransaction(tronweb, StaticMerkleRootMultisigIsmAbi, fromAddress, []);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Creates transaction to deploy MessageIdMultisigIsm using MetaProxy pattern
|
|
29
|
+
* This embeds config in bytecode rather than constructor, enabling deterministic addresses
|
|
30
|
+
* @param tronweb - TronWeb instance
|
|
31
|
+
* @param fromAddress - Deployer address
|
|
32
|
+
* @param implementationAddress - Address of deployed StaticMessageIdMultisigIsm implementation
|
|
33
|
+
* @param config - Validators and threshold configuration
|
|
34
|
+
* @returns Transaction to deploy MetaProxy ISM
|
|
35
|
+
*/
|
|
36
|
+
export async function getCreateMessageIdMultisigIsmWithMetaProxyTx(tronweb, fromAddress, implementationAddress, config) {
|
|
37
|
+
// ABI encode the metadata: (address[], uint8)
|
|
38
|
+
const metadata = tronweb.utils.abi.encodeParams(['address[]', 'uint8'], [config.validators, config.threshold]);
|
|
39
|
+
// Build MetaProxy bytecode with embedded metadata
|
|
40
|
+
const metaProxyBytecode = buildMetaProxyBytecode(tronweb.address.toHex(implementationAddress), metadata);
|
|
41
|
+
return createRawBytecodeDeploymentTransaction(tronweb, metaProxyBytecode, fromAddress, 'StaticMessageIdMultisigIsm');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Creates transaction to deploy MerkleRootMultisigIsm using MetaProxy pattern
|
|
45
|
+
* This embeds config in bytecode rather than constructor, enabling deterministic addresses
|
|
46
|
+
* @param tronweb - TronWeb instance
|
|
47
|
+
* @param fromAddress - Deployer address
|
|
48
|
+
* @param implementationAddress - Address of deployed StaticMerkleRootMultisigIsm implementation
|
|
49
|
+
* @param config - Validators and threshold configuration
|
|
50
|
+
* @returns Transaction to deploy MetaProxy ISM
|
|
51
|
+
*/
|
|
52
|
+
export async function getCreateMerkleRootMultisigIsmWithMetaProxyTx(tronweb, fromAddress, implementationAddress, config) {
|
|
53
|
+
// ABI encode the metadata: (address[], uint8)
|
|
54
|
+
const metadata = tronweb.utils.abi.encodeParams(['address[]', 'uint8'], [config.validators, config.threshold]);
|
|
55
|
+
// Build MetaProxy bytecode with embedded metadata
|
|
56
|
+
const metaProxyBytecode = buildMetaProxyBytecode(tronweb.address.toHex(implementationAddress), metadata);
|
|
57
|
+
return createRawBytecodeDeploymentTransaction(tronweb, metaProxyBytecode, fromAddress, 'StaticMerkleRootMultisigIsm');
|
|
58
|
+
}
|
|
59
|
+
export async function getCreateRoutingIsmTx(tronweb, fromAddress) {
|
|
60
|
+
return createDeploymentTransaction(tronweb, DomainRoutingIsmAbi, fromAddress, []);
|
|
61
|
+
}
|
|
62
|
+
export async function getInitRoutingIsmTx(tronweb, ownerAddress, config) {
|
|
63
|
+
const { transaction } = await tronweb.transactionBuilder.triggerSmartContract(config.ismAddress, 'initialize(address,uint32[],address[])', {}, [
|
|
64
|
+
{
|
|
65
|
+
type: 'address',
|
|
66
|
+
value: ownerAddress,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'uint32[]',
|
|
70
|
+
value: config.routes.map((r) => r.domainId),
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'address[]',
|
|
74
|
+
value: config.routes.map((r) => r.ismAddress),
|
|
75
|
+
},
|
|
76
|
+
], tronweb.address.toHex(ownerAddress));
|
|
77
|
+
return transaction;
|
|
78
|
+
}
|
|
79
|
+
export async function getSetRoutingIsmRouteTx(tronweb, ownerAddress, config) {
|
|
80
|
+
const { transaction } = await tronweb.transactionBuilder.triggerSmartContract(config.ismAddress, 'set(uint32,address)', {}, [
|
|
81
|
+
{
|
|
82
|
+
type: 'uint32',
|
|
83
|
+
value: config.domainIsm.domainId,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'address',
|
|
87
|
+
value: config.domainIsm.ismAddress,
|
|
88
|
+
},
|
|
89
|
+
], tronweb.address.toHex(ownerAddress));
|
|
90
|
+
return transaction;
|
|
91
|
+
}
|
|
92
|
+
export async function getRemoveRoutingIsmRouteTx(tronweb, ownerAddress, config) {
|
|
93
|
+
const { transaction } = await tronweb.transactionBuilder.triggerSmartContract(config.ismAddress, 'remove(uint32)', {}, [
|
|
94
|
+
{
|
|
95
|
+
type: 'uint32',
|
|
96
|
+
value: config.domainId,
|
|
97
|
+
},
|
|
98
|
+
], tronweb.address.toHex(ownerAddress));
|
|
99
|
+
return transaction;
|
|
100
|
+
}
|
|
101
|
+
export async function getSetRoutingIsmOwnerTx(tronweb, ownerAddress, config) {
|
|
102
|
+
const { transaction } = await tronweb.transactionBuilder.triggerSmartContract(config.ismAddress, 'transferOwnership(address)', {}, [
|
|
103
|
+
{
|
|
104
|
+
type: 'address',
|
|
105
|
+
value: config.newOwner,
|
|
106
|
+
},
|
|
107
|
+
], tronweb.address.toHex(ownerAddress));
|
|
108
|
+
return transaction;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=ism-tx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism-tx.js","sourceRoot":"","sources":["../../src/ism/ism-tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1_interchain_security.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/1_interchain_security.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import chai from 'chai';
|
|
2
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
3
|
+
import { step } from 'mocha-steps';
|
|
4
|
+
import { TronWeb } from 'tronweb';
|
|
5
|
+
import { TronSigner } from '../clients/signer.js';
|
|
6
|
+
chai.use(chaiAsPromised);
|
|
7
|
+
const { expect } = chai;
|
|
8
|
+
describe('1. tron sdk interchain security e2e tests', async function () {
|
|
9
|
+
this.timeout(100_000);
|
|
10
|
+
const localnetRpc = 'http://127.0.0.1:9090';
|
|
11
|
+
let signer;
|
|
12
|
+
let noop_ism;
|
|
13
|
+
let routing_ism;
|
|
14
|
+
before(async () => {
|
|
15
|
+
// test private key with funds
|
|
16
|
+
const privateKey = '0000000000000000000000000000000000000000000000000000000000000001';
|
|
17
|
+
signer = await TronSigner.connectWithSigner([localnetRpc], privateKey, {
|
|
18
|
+
metadata: {
|
|
19
|
+
chainId: '9',
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
step('create new NOOP ISM', async () => {
|
|
24
|
+
// ARRANGE
|
|
25
|
+
// ACT
|
|
26
|
+
const txResponse = await signer.createNoopIsm({});
|
|
27
|
+
// ASSERT
|
|
28
|
+
expect(txResponse.ismAddress).not.to.be.empty;
|
|
29
|
+
let ism = await signer.getNoopIsm({
|
|
30
|
+
ismAddress: txResponse.ismAddress,
|
|
31
|
+
});
|
|
32
|
+
expect(ism.address).to.equal(txResponse.ismAddress);
|
|
33
|
+
noop_ism = ism.address;
|
|
34
|
+
});
|
|
35
|
+
step('create new MessageIdMultisig ISM', async () => {
|
|
36
|
+
// ARRANGE
|
|
37
|
+
const threshold = 2;
|
|
38
|
+
const validators = [
|
|
39
|
+
'0x3c24f29fa75869a1c9d19d9d6589aae0b5227c3c',
|
|
40
|
+
'0xf719b4cc64d0e3a380e52c2720abab13835f6d9c',
|
|
41
|
+
'0x98a56ede1d6dd386216da8217d9ac1d2ee7c27c7',
|
|
42
|
+
];
|
|
43
|
+
// note that the validators need to be sorted alphabetically
|
|
44
|
+
validators.sort();
|
|
45
|
+
// ACT
|
|
46
|
+
const txResponse = await signer.createMessageIdMultisigIsm({
|
|
47
|
+
validators,
|
|
48
|
+
threshold,
|
|
49
|
+
});
|
|
50
|
+
// ASSERT
|
|
51
|
+
expect(txResponse.ismAddress).to.be.not.empty;
|
|
52
|
+
let ism = await signer.getMessageIdMultisigIsm({
|
|
53
|
+
ismAddress: txResponse.ismAddress,
|
|
54
|
+
});
|
|
55
|
+
expect(ism.address).to.equal(txResponse.ismAddress);
|
|
56
|
+
expect(ism.threshold).to.equal(threshold);
|
|
57
|
+
expect(ism.validators).deep.equal(validators);
|
|
58
|
+
});
|
|
59
|
+
step('create new MerkleRootMultisig ISM', async () => {
|
|
60
|
+
// ARRANGE
|
|
61
|
+
const threshold = 2;
|
|
62
|
+
const validators = [
|
|
63
|
+
'0x3c24f29fa75869a1c9d19d9d6589aae0b5227c3c',
|
|
64
|
+
'0xf719b4cc64d0e3a380e52c2720abab13835f6d9c',
|
|
65
|
+
'0x98a56ede1d6dd386216da8217d9ac1d2ee7c27c7',
|
|
66
|
+
];
|
|
67
|
+
// note that the validators need to be sorted alphabetically
|
|
68
|
+
validators.sort();
|
|
69
|
+
// ACT
|
|
70
|
+
const txResponse = await signer.createMerkleRootMultisigIsm({
|
|
71
|
+
validators,
|
|
72
|
+
threshold,
|
|
73
|
+
});
|
|
74
|
+
// ASSERT
|
|
75
|
+
expect(txResponse.ismAddress).to.be.not.empty;
|
|
76
|
+
let ism = await signer.getMerkleRootMultisigIsm({
|
|
77
|
+
ismAddress: txResponse.ismAddress,
|
|
78
|
+
});
|
|
79
|
+
expect(ism.address).to.equal(txResponse.ismAddress);
|
|
80
|
+
expect(ism.threshold).to.equal(threshold);
|
|
81
|
+
expect(ism.validators).deep.equal(validators);
|
|
82
|
+
});
|
|
83
|
+
step('create new Routing ISM', async () => {
|
|
84
|
+
// ARRANGE
|
|
85
|
+
const domainId = 1337;
|
|
86
|
+
const { ismAddress } = await signer.createNoopIsm({});
|
|
87
|
+
// ACT
|
|
88
|
+
const txResponse = await signer.createRoutingIsm({
|
|
89
|
+
routes: [
|
|
90
|
+
{
|
|
91
|
+
domainId,
|
|
92
|
+
ismAddress,
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
});
|
|
96
|
+
// ASSERT
|
|
97
|
+
expect(txResponse.ismAddress).to.be.not.empty;
|
|
98
|
+
let ism = await signer.getRoutingIsm({
|
|
99
|
+
ismAddress: txResponse.ismAddress,
|
|
100
|
+
});
|
|
101
|
+
expect(ism.address).to.equal(txResponse.ismAddress);
|
|
102
|
+
expect(ism.owner).to.equal(signer.getSignerAddress());
|
|
103
|
+
expect(ism.routes).to.have.lengthOf(1);
|
|
104
|
+
expect(ism.routes[0]).to.deep.equal({
|
|
105
|
+
ismAddress,
|
|
106
|
+
domainId,
|
|
107
|
+
});
|
|
108
|
+
routing_ism = ism.address;
|
|
109
|
+
});
|
|
110
|
+
step('set Routing Ism domain', async () => {
|
|
111
|
+
// ARRANGE
|
|
112
|
+
// ACT
|
|
113
|
+
await signer.setRoutingIsmRoute({
|
|
114
|
+
ismAddress: routing_ism,
|
|
115
|
+
route: {
|
|
116
|
+
ismAddress: noop_ism,
|
|
117
|
+
domainId: 1234,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
// ASSERT
|
|
121
|
+
let ism = await signer.getRoutingIsm({
|
|
122
|
+
ismAddress: routing_ism,
|
|
123
|
+
});
|
|
124
|
+
expect(ism.routes).to.have.lengthOf(2);
|
|
125
|
+
expect(ism.routes[1]).to.deep.equal({
|
|
126
|
+
ismAddress: noop_ism,
|
|
127
|
+
domainId: 1234,
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
step('remove Routing Ism domain', async () => {
|
|
131
|
+
// ARRANGE
|
|
132
|
+
let ism = await signer.getRoutingIsm({
|
|
133
|
+
ismAddress: routing_ism,
|
|
134
|
+
});
|
|
135
|
+
expect(ism.routes).to.have.lengthOf(2);
|
|
136
|
+
expect(ism.routes[1]).to.deep.equal({
|
|
137
|
+
ismAddress: noop_ism,
|
|
138
|
+
domainId: 1234,
|
|
139
|
+
});
|
|
140
|
+
// ACT
|
|
141
|
+
await signer.removeRoutingIsmRoute({
|
|
142
|
+
ismAddress: routing_ism,
|
|
143
|
+
domainId: 1234,
|
|
144
|
+
});
|
|
145
|
+
// ASSERT
|
|
146
|
+
ism = await signer.getRoutingIsm({
|
|
147
|
+
ismAddress: routing_ism,
|
|
148
|
+
});
|
|
149
|
+
expect(ism.routes).to.have.lengthOf(1);
|
|
150
|
+
});
|
|
151
|
+
step('update Routing Ism owner', async () => {
|
|
152
|
+
// ARRANGE
|
|
153
|
+
let ism = await signer.getRoutingIsm({
|
|
154
|
+
ismAddress: routing_ism,
|
|
155
|
+
});
|
|
156
|
+
expect(ism.owner).to.equal(signer.getSignerAddress());
|
|
157
|
+
const newOwner = new TronWeb({
|
|
158
|
+
fullHost: localnetRpc,
|
|
159
|
+
}).createRandom().address;
|
|
160
|
+
// ACT
|
|
161
|
+
await signer.setRoutingIsmOwner({
|
|
162
|
+
ismAddress: routing_ism,
|
|
163
|
+
newOwner,
|
|
164
|
+
});
|
|
165
|
+
// ASSERT
|
|
166
|
+
ism = await signer.getRoutingIsm({
|
|
167
|
+
ismAddress: routing_ism,
|
|
168
|
+
});
|
|
169
|
+
expect(ism.owner).to.equal(newOwner);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
//# sourceMappingURL=1_interchain_security.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1_interchain_security.e2e-test.js","sourceRoot":"","sources":["../../src/tests/1_interchain_security.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"2_core.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/2_core.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { step } from 'mocha-steps';
|
|
3
|
+
import { TronWeb } from 'tronweb';
|
|
4
|
+
import { TronSigner } from '../clients/signer.js';
|
|
5
|
+
describe('2. tron sdk core e2e tests', async function () {
|
|
6
|
+
this.timeout(100_000);
|
|
7
|
+
const localnetRpc = 'http://127.0.0.1:9090';
|
|
8
|
+
let signer;
|
|
9
|
+
let proxyAdminAddress;
|
|
10
|
+
let mailboxAddress;
|
|
11
|
+
let ismAddress;
|
|
12
|
+
let hookAddress;
|
|
13
|
+
before(async () => {
|
|
14
|
+
// test private key with funds
|
|
15
|
+
const privateKey = '0000000000000000000000000000000000000000000000000000000000000001';
|
|
16
|
+
signer = await TronSigner.connectWithSigner([localnetRpc], privateKey, {
|
|
17
|
+
metadata: {
|
|
18
|
+
chainId: '9',
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const proxyAdmin = await signer.createProxyAdmin({
|
|
22
|
+
owner: signer.getSignerAddress(),
|
|
23
|
+
});
|
|
24
|
+
proxyAdminAddress = proxyAdmin.proxyAdminAddress;
|
|
25
|
+
const noopIsm = await signer.createNoopIsm({});
|
|
26
|
+
ismAddress = noopIsm.ismAddress;
|
|
27
|
+
});
|
|
28
|
+
step('create new mailbox', async () => {
|
|
29
|
+
// ARRANGE
|
|
30
|
+
const domainId = 1234;
|
|
31
|
+
// ACT
|
|
32
|
+
const txResponse = await signer.createMailbox({
|
|
33
|
+
domainId: domainId,
|
|
34
|
+
defaultIsmAddress: ismAddress,
|
|
35
|
+
proxyAdminAddress,
|
|
36
|
+
});
|
|
37
|
+
// ASSERT
|
|
38
|
+
expect(txResponse.mailboxAddress).to.be.not.empty;
|
|
39
|
+
let mailbox = await signer.getMailbox({
|
|
40
|
+
mailboxAddress: txResponse.mailboxAddress,
|
|
41
|
+
});
|
|
42
|
+
expect(mailbox).not.to.be.undefined;
|
|
43
|
+
expect(mailbox.address).to.equal(txResponse.mailboxAddress);
|
|
44
|
+
expect(mailbox.owner).to.equal(signer.getSignerAddress());
|
|
45
|
+
expect(mailbox.localDomain).to.equal(domainId);
|
|
46
|
+
expect(mailbox.defaultIsm).to.be.empty;
|
|
47
|
+
expect(mailbox.defaultHook).to.be.empty;
|
|
48
|
+
expect(mailbox.requiredHook).to.be.empty;
|
|
49
|
+
mailboxAddress = mailbox.address;
|
|
50
|
+
});
|
|
51
|
+
step('set mailbox default ism', async () => {
|
|
52
|
+
// ARRANGE
|
|
53
|
+
let mailbox = await signer.getMailbox({ mailboxAddress });
|
|
54
|
+
expect(mailbox.defaultIsm).to.be.empty;
|
|
55
|
+
// ACT
|
|
56
|
+
await signer.setDefaultIsm({
|
|
57
|
+
mailboxAddress,
|
|
58
|
+
ismAddress,
|
|
59
|
+
});
|
|
60
|
+
// ASSERT
|
|
61
|
+
mailbox = await signer.getMailbox({ mailboxAddress });
|
|
62
|
+
expect(mailbox.defaultIsm).to.equal(ismAddress);
|
|
63
|
+
});
|
|
64
|
+
step('set mailbox default hook', async () => {
|
|
65
|
+
// ARRANGE
|
|
66
|
+
let mailbox = await signer.getMailbox({ mailboxAddress });
|
|
67
|
+
expect(mailbox.defaultHook).to.be.empty;
|
|
68
|
+
const merkleTreeHook = await signer.createMerkleTreeHook({
|
|
69
|
+
mailboxAddress: mailbox.address,
|
|
70
|
+
});
|
|
71
|
+
hookAddress = merkleTreeHook.hookAddress;
|
|
72
|
+
// ACT
|
|
73
|
+
await signer.setDefaultHook({
|
|
74
|
+
mailboxAddress,
|
|
75
|
+
hookAddress,
|
|
76
|
+
});
|
|
77
|
+
// ASSERT
|
|
78
|
+
mailbox = await signer.getMailbox({ mailboxAddress });
|
|
79
|
+
expect(mailbox.defaultHook).to.equal(hookAddress);
|
|
80
|
+
});
|
|
81
|
+
step('set mailbox required hook', async () => {
|
|
82
|
+
// ARRANGE
|
|
83
|
+
let mailbox = await signer.getMailbox({ mailboxAddress });
|
|
84
|
+
expect(mailbox.requiredHook).to.be.empty;
|
|
85
|
+
// ACT
|
|
86
|
+
await signer.setRequiredHook({
|
|
87
|
+
mailboxAddress,
|
|
88
|
+
hookAddress,
|
|
89
|
+
});
|
|
90
|
+
// ASSERT
|
|
91
|
+
mailbox = await signer.getMailbox({ mailboxAddress });
|
|
92
|
+
expect(mailbox.requiredHook).to.equal(hookAddress);
|
|
93
|
+
});
|
|
94
|
+
step('set mailbox owner', async () => {
|
|
95
|
+
// ARRANGE
|
|
96
|
+
let mailbox = await signer.getMailbox({ mailboxAddress });
|
|
97
|
+
expect(mailbox.owner).to.equal(signer.getSignerAddress());
|
|
98
|
+
const newOwner = new TronWeb({
|
|
99
|
+
fullHost: localnetRpc,
|
|
100
|
+
}).createRandom().address;
|
|
101
|
+
// ACT
|
|
102
|
+
await signer.setMailboxOwner({
|
|
103
|
+
mailboxAddress,
|
|
104
|
+
newOwner,
|
|
105
|
+
});
|
|
106
|
+
// ASSERT
|
|
107
|
+
mailbox = await signer.getMailbox({ mailboxAddress });
|
|
108
|
+
expect(mailbox.owner).to.equal(newOwner);
|
|
109
|
+
});
|
|
110
|
+
step('create validator announce', async () => {
|
|
111
|
+
// ARRANGE & ACT & ASSERT
|
|
112
|
+
await signer.createValidatorAnnounce({
|
|
113
|
+
mailboxAddress,
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=2_core.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"2_core.e2e-test.js","sourceRoot":"","sources":["../../src/tests/2_core.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"3_post_dispatch.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/3_post_dispatch.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { step } from 'mocha-steps';
|
|
3
|
+
import { TronWeb } from 'tronweb';
|
|
4
|
+
import { TronSigner } from '../clients/signer.js';
|
|
5
|
+
describe('3. tron sdk post dispatch e2e tests', async function () {
|
|
6
|
+
this.timeout(100_000);
|
|
7
|
+
const localnetRpc = 'http://127.0.0.1:9090';
|
|
8
|
+
let signer;
|
|
9
|
+
let proxyAdminAddress;
|
|
10
|
+
let mailboxAddress;
|
|
11
|
+
let igpAddress;
|
|
12
|
+
before(async () => {
|
|
13
|
+
// test private key with funds
|
|
14
|
+
const privateKey = '0000000000000000000000000000000000000000000000000000000000000001';
|
|
15
|
+
signer = await TronSigner.connectWithSigner([localnetRpc], privateKey, {
|
|
16
|
+
metadata: {
|
|
17
|
+
chainId: '9',
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const proxyAdmin = await signer.createProxyAdmin({
|
|
21
|
+
owner: signer.getSignerAddress(),
|
|
22
|
+
});
|
|
23
|
+
proxyAdminAddress = proxyAdmin.proxyAdminAddress;
|
|
24
|
+
const domainId = 1234;
|
|
25
|
+
const mailbox = await signer.createMailbox({
|
|
26
|
+
domainId: domainId,
|
|
27
|
+
proxyAdminAddress,
|
|
28
|
+
});
|
|
29
|
+
mailboxAddress = mailbox.mailboxAddress;
|
|
30
|
+
});
|
|
31
|
+
step('create new Merkle Tree hook', async () => {
|
|
32
|
+
// ARRANGE
|
|
33
|
+
// ACT
|
|
34
|
+
const txResponse = await signer.createMerkleTreeHook({
|
|
35
|
+
mailboxAddress,
|
|
36
|
+
});
|
|
37
|
+
// ASSERT
|
|
38
|
+
expect(txResponse.hookAddress).to.be.not.empty;
|
|
39
|
+
let merkle_tree_hook = await signer.getMerkleTreeHook({
|
|
40
|
+
hookAddress: txResponse.hookAddress,
|
|
41
|
+
});
|
|
42
|
+
expect(merkle_tree_hook).not.to.be.undefined;
|
|
43
|
+
expect(merkle_tree_hook.address).to.equal(txResponse.hookAddress);
|
|
44
|
+
});
|
|
45
|
+
step('create new IGP hook', async () => {
|
|
46
|
+
// ARRANGE
|
|
47
|
+
// ACT
|
|
48
|
+
const txResponse = await signer.createInterchainGasPaymasterHook({
|
|
49
|
+
mailboxAddress,
|
|
50
|
+
denom: '',
|
|
51
|
+
});
|
|
52
|
+
// ASSERT
|
|
53
|
+
expect(txResponse.hookAddress).to.be.not.empty;
|
|
54
|
+
let igp = await signer.getInterchainGasPaymasterHook({
|
|
55
|
+
hookAddress: txResponse.hookAddress,
|
|
56
|
+
});
|
|
57
|
+
expect(igp).not.to.be.undefined;
|
|
58
|
+
expect(igp.address).to.equal(txResponse.hookAddress);
|
|
59
|
+
expect(igp.owner).to.equal(signer.getSignerAddress());
|
|
60
|
+
expect(igp.destinationGasConfigs).to.be.empty;
|
|
61
|
+
igpAddress = igp.address;
|
|
62
|
+
});
|
|
63
|
+
step('set destination gas config', async () => {
|
|
64
|
+
// ARRANGE
|
|
65
|
+
const remoteDomainId = 1234;
|
|
66
|
+
const gasOverhead = '200000';
|
|
67
|
+
const gasPrice = '1';
|
|
68
|
+
const tokenExchangeRate = '10000000000';
|
|
69
|
+
let igp = await signer.getInterchainGasPaymasterHook({
|
|
70
|
+
hookAddress: igpAddress,
|
|
71
|
+
});
|
|
72
|
+
expect(Object.keys(igp.destinationGasConfigs)).to.have.lengthOf(0);
|
|
73
|
+
// ACT
|
|
74
|
+
await signer.setDestinationGasConfig({
|
|
75
|
+
hookAddress: igpAddress,
|
|
76
|
+
destinationGasConfig: {
|
|
77
|
+
remoteDomainId: remoteDomainId,
|
|
78
|
+
gasOracle: {
|
|
79
|
+
tokenExchangeRate: tokenExchangeRate,
|
|
80
|
+
gasPrice: gasPrice,
|
|
81
|
+
},
|
|
82
|
+
gasOverhead: gasOverhead,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
// ASSERT
|
|
86
|
+
igp = await signer.getInterchainGasPaymasterHook({
|
|
87
|
+
hookAddress: igpAddress,
|
|
88
|
+
});
|
|
89
|
+
expect(Object.keys(igp.destinationGasConfigs)).to.have.lengthOf(1);
|
|
90
|
+
const gasConfig = igp.destinationGasConfigs[remoteDomainId];
|
|
91
|
+
expect(gasConfig.gasOverhead).to.equal(gasOverhead);
|
|
92
|
+
expect(gasConfig.gasOracle?.gasPrice).to.equal(gasPrice);
|
|
93
|
+
expect(gasConfig.gasOracle?.tokenExchangeRate).to.equal(tokenExchangeRate);
|
|
94
|
+
});
|
|
95
|
+
step('set igp owner', async () => {
|
|
96
|
+
// ARRANGE
|
|
97
|
+
const newOwner = new TronWeb({
|
|
98
|
+
fullHost: localnetRpc,
|
|
99
|
+
}).createRandom().address;
|
|
100
|
+
let igp = await signer.getInterchainGasPaymasterHook({
|
|
101
|
+
hookAddress: igpAddress,
|
|
102
|
+
});
|
|
103
|
+
expect(igp.owner).to.equal(signer.getSignerAddress());
|
|
104
|
+
// ACT
|
|
105
|
+
await signer.setInterchainGasPaymasterHookOwner({
|
|
106
|
+
hookAddress: igpAddress,
|
|
107
|
+
newOwner: newOwner,
|
|
108
|
+
});
|
|
109
|
+
// ASSERT
|
|
110
|
+
igp = await signer.getInterchainGasPaymasterHook({
|
|
111
|
+
hookAddress: igpAddress,
|
|
112
|
+
});
|
|
113
|
+
expect(igp.owner).to.equal(newOwner);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=3_post_dispatch.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"3_post_dispatch.e2e-test.js","sourceRoot":"","sources":["../../src/tests/3_post_dispatch.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"4_warp.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/4_warp.e2e-test.ts"],"names":[],"mappings":""}
|