@bitgo-beta/abstract-eth 1.0.2-beta.231 → 1.0.2-beta.2311
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/abstractEthLikeCoin.d.ts +20 -9
- package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
- package/dist/src/abstractEthLikeCoin.js +46 -15
- package/dist/src/abstractEthLikeNewCoins.d.ts +894 -0
- package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
- package/dist/src/abstractEthLikeNewCoins.js +2739 -0
- package/dist/src/ethLikeToken.d.ts +38 -6
- package/dist/src/ethLikeToken.d.ts.map +1 -1
- package/dist/src/ethLikeToken.js +289 -10
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -2
- package/dist/src/lib/constants.d.ts +4 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +11 -0
- package/dist/src/lib/contractCall.d.ts +8 -0
- package/dist/src/lib/contractCall.d.ts.map +1 -0
- package/dist/src/lib/contractCall.js +17 -0
- package/dist/src/lib/decryptionDelegationBuilder.d.ts +90 -0
- package/dist/src/lib/decryptionDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/decryptionDelegationBuilder.js +59 -0
- package/dist/src/lib/iface.d.ts +173 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +8 -0
- package/dist/src/lib/index.d.ts +19 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +60 -0
- package/dist/src/lib/keyPair.d.ts +26 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +65 -0
- package/dist/src/lib/messages/eip191/eip191Message.d.ts +12 -0
- package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/eip191Message.js +25 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +19 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +27 -0
- package/dist/src/lib/messages/eip191/index.d.ts +3 -0
- package/dist/src/lib/messages/eip191/index.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/index.js +19 -0
- package/dist/src/lib/messages/eip712/eip712Message.d.ts +6 -0
- package/dist/src/lib/messages/eip712/eip712Message.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/eip712Message.js +27 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts +7 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.js +15 -0
- package/dist/src/lib/messages/eip712/index.d.ts +3 -0
- package/dist/src/lib/messages/eip712/index.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/index.js +19 -0
- package/dist/src/lib/messages/index.d.ts +4 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +20 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
- package/dist/src/lib/transaction.d.ts +69 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +149 -0
- package/dist/src/lib/transactionBuilder.d.ts +388 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +1120 -0
- package/dist/src/lib/transferBuilder.d.ts +76 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +307 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +54 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +120 -0
- package/dist/src/lib/transferBuilders/index.d.ts +5 -0
- package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/index.js +21 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +17 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +96 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +21 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.js +91 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC7984.d.ts +35 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC7984.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC7984.js +113 -0
- package/dist/src/lib/types.d.ts +40 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +140 -0
- package/dist/src/lib/utils.d.ts +386 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +1020 -0
- package/dist/src/lib/walletUtil.d.ts +46 -0
- package/dist/src/lib/walletUtil.d.ts.map +1 -0
- package/dist/src/lib/walletUtil.js +53 -0
- package/dist/src/lib/zamaUtils.d.ts +241 -0
- package/dist/src/lib/zamaUtils.d.ts.map +1 -0
- package/dist/src/lib/zamaUtils.js +499 -0
- package/dist/src/types.d.ts +9 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +18 -0
- package/dist/test/unit/coin.d.ts +8 -0
- package/dist/test/unit/coin.d.ts.map +1 -0
- package/dist/test/unit/coin.js +577 -0
- package/dist/test/unit/decryptionDelegationBuilder.d.ts +2 -0
- package/dist/test/unit/decryptionDelegationBuilder.d.ts.map +1 -0
- package/dist/test/unit/decryptionDelegationBuilder.js +265 -0
- package/dist/test/unit/index.d.ts +8 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +24 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts +3 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.js +110 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts +43 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.js +3 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.d.ts +3 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.js +129 -0
- package/dist/test/unit/messages/eip191/eip191Message.d.ts +2 -0
- package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/eip191Message.js +15 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +16 -0
- package/dist/test/unit/messages/eip191/fixtures.d.ts +109 -0
- package/dist/test/unit/messages/eip191/fixtures.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/fixtures.js +63 -0
- package/dist/test/unit/messages/eip712/eip712Message.d.ts +2 -0
- package/dist/test/unit/messages/eip712/eip712Message.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/eip712Message.js +15 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.js +16 -0
- package/dist/test/unit/messages/eip712/fixtures.d.ts +76 -0
- package/dist/test/unit/messages/eip712/fixtures.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/fixtures.js +120 -0
- package/dist/test/unit/messages/index.d.ts +4 -0
- package/dist/test/unit/messages/index.d.ts.map +1 -0
- package/dist/test/unit/messages/index.js +20 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
- package/dist/test/unit/token.d.ts +2 -0
- package/dist/test/unit/token.d.ts.map +1 -0
- package/dist/test/unit/token.js +37 -0
- package/dist/test/unit/transaction.d.ts +3 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +73 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.js +95 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.js +161 -0
- package/dist/test/unit/transactionBuilder/finalizeUnwrapERC7984.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/finalizeUnwrapERC7984.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/finalizeUnwrapERC7984.js +127 -0
- package/dist/test/unit/transactionBuilder/flushERC7984.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/flushERC7984.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/flushERC7984.js +292 -0
- package/dist/test/unit/transactionBuilder/flushNft.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/flushNft.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/flushNft.js +381 -0
- package/dist/test/unit/transactionBuilder/index.d.ts +10 -0
- package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/index.js +26 -0
- package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/send.js +197 -0
- package/dist/test/unit/transactionBuilder/unwrapERC7984.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/unwrapERC7984.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unwrapERC7984.js +134 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +11 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.js +137 -0
- package/dist/test/unit/transactionBuilder/wrapERC7984.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/wrapERC7984.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/wrapERC7984.js +140 -0
- package/dist/test/unit/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transferBuilder.js +76 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +214 -0
- package/dist/test/unit/zamaUtils.d.ts +2 -0
- package/dist/test/unit/zamaUtils.d.ts.map +1 -0
- package/dist/test/unit/zamaUtils.js +588 -0
- package/dist/tsconfig.tsbuildinfo +1 -8436
- package/package.json +34 -10
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -178
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.runSendTests = runSendTests;
|
|
40
|
+
exports.testSendFundsTransaction = testSendFundsTransaction;
|
|
41
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
42
|
+
const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
43
|
+
const should_1 = __importDefault(require("should"));
|
|
44
|
+
const ethUtil = __importStar(require("ethereumjs-util"));
|
|
45
|
+
const src_1 = require("../../../src");
|
|
46
|
+
function runSendTests(coinName, txBuilder, getBuilder, testData) {
|
|
47
|
+
describe(`${coinName} transaction builder send`, () => {
|
|
48
|
+
describe('should sign and build', () => {
|
|
49
|
+
let key;
|
|
50
|
+
let contractAddress;
|
|
51
|
+
const networkTokenIdentifier = testData.NETWORK_TOKEN_IDENTIFIER;
|
|
52
|
+
const coin = testData.COIN;
|
|
53
|
+
const getOperationHash = function (tx) {
|
|
54
|
+
const { data } = tx.toJson();
|
|
55
|
+
const { tokenContractAddress, expireTime, sequenceId, amount, to } = (0, src_1.decodeTransferData)(data);
|
|
56
|
+
const operationParams = [
|
|
57
|
+
['string', 'address', 'uint', 'address', 'uint', 'uint'],
|
|
58
|
+
[
|
|
59
|
+
`${testData.CHAIN_ID}-ERC20`,
|
|
60
|
+
new ethUtil.BN(ethUtil.stripHexPrefix(to), 16),
|
|
61
|
+
amount,
|
|
62
|
+
new ethUtil.BN(ethUtil.stripHexPrefix(tokenContractAddress || ''), 16),
|
|
63
|
+
expireTime,
|
|
64
|
+
sequenceId,
|
|
65
|
+
],
|
|
66
|
+
];
|
|
67
|
+
return ethereumjs_abi_1.default.soliditySHA3(...operationParams);
|
|
68
|
+
};
|
|
69
|
+
beforeEach(() => {
|
|
70
|
+
contractAddress = '0x8f977e912ef500548a0c3be6ddde9899f1199b81';
|
|
71
|
+
txBuilder = getBuilder(coin);
|
|
72
|
+
key = testData.KEYPAIR_PRV.getKeys().prv;
|
|
73
|
+
txBuilder.fee({
|
|
74
|
+
fee: '1000000000',
|
|
75
|
+
gasLimit: '12100000',
|
|
76
|
+
});
|
|
77
|
+
txBuilder.counter(2);
|
|
78
|
+
txBuilder.type(sdk_core_1.TransactionType.Send);
|
|
79
|
+
txBuilder.contract(contractAddress);
|
|
80
|
+
});
|
|
81
|
+
it('a send funds transaction', async () => {
|
|
82
|
+
const recipient = '0x19645032c7f1533395d44a629462e751084d3e4c';
|
|
83
|
+
const amount = '1000000000';
|
|
84
|
+
const expireTime = 1590066728;
|
|
85
|
+
const sequenceId = 5;
|
|
86
|
+
txBuilder
|
|
87
|
+
.transfer()
|
|
88
|
+
.amount(amount)
|
|
89
|
+
.to(recipient)
|
|
90
|
+
.expirationTime(expireTime)
|
|
91
|
+
.contractSequenceId(sequenceId)
|
|
92
|
+
.key(key);
|
|
93
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
94
|
+
const tx = await txBuilder.build();
|
|
95
|
+
should_1.default.equal(tx.toJson().chainId, testData.TXDATA.chainId);
|
|
96
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST_LEGACY);
|
|
97
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
98
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
99
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
100
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
101
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
102
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
103
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
104
|
+
const data = tx.toJson().data;
|
|
105
|
+
const { to, amount: parsedAmount, expireTime: parsedExpireTime, sequenceId: parsedSequenceId, } = (0, src_1.decodeTransferData)(data);
|
|
106
|
+
should_1.default.equal(to, recipient);
|
|
107
|
+
should_1.default.equal(parsedAmount, amount);
|
|
108
|
+
should_1.default.equal(parsedExpireTime, expireTime);
|
|
109
|
+
should_1.default.equal(parsedSequenceId, sequenceId);
|
|
110
|
+
});
|
|
111
|
+
it('a send funds with amount 0 transaction', async () => {
|
|
112
|
+
txBuilder
|
|
113
|
+
.transfer()
|
|
114
|
+
.amount('0')
|
|
115
|
+
.to('0x19645032c7f1533395d44a629462e751084d3e4c')
|
|
116
|
+
.expirationTime(1590066728)
|
|
117
|
+
.contractSequenceId(5)
|
|
118
|
+
.key(key);
|
|
119
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
120
|
+
const tx = await txBuilder.build();
|
|
121
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_AMOUNT_ZERO_BROADCAST);
|
|
122
|
+
});
|
|
123
|
+
it('a send token transaction', async () => {
|
|
124
|
+
const recipient = '0x72c2c8e08bf91d755cd7d26b49a2ee3dc99de1b9';
|
|
125
|
+
const contractAddress = '0xdf7decb1baa8f529f0c8982cbb4be50357195299';
|
|
126
|
+
const amount = '100';
|
|
127
|
+
const key = testData.KEYPAIR_PRV.getKeys().prv;
|
|
128
|
+
txBuilder.contract(contractAddress);
|
|
129
|
+
txBuilder
|
|
130
|
+
.transfer()
|
|
131
|
+
.coin(networkTokenIdentifier)
|
|
132
|
+
.amount(amount)
|
|
133
|
+
.to(recipient)
|
|
134
|
+
.expirationTime(1590066728)
|
|
135
|
+
.contractSequenceId(5)
|
|
136
|
+
.key(key);
|
|
137
|
+
txBuilder.sign({
|
|
138
|
+
key: testData.PRIVATE_KEY_1,
|
|
139
|
+
});
|
|
140
|
+
const tx = await txBuilder.build();
|
|
141
|
+
const operationHash = getOperationHash(tx);
|
|
142
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TOKEN_TX_BROADCAST);
|
|
143
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
144
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
145
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
146
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
147
|
+
should_1.default.equal(tx.inputs[0].coin, networkTokenIdentifier);
|
|
148
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
149
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
150
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
151
|
+
should_1.default.equal(tx.outputs[0].coin, networkTokenIdentifier);
|
|
152
|
+
const { signature } = (0, src_1.decodeTransferData)(tx.toJson().data);
|
|
153
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
154
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(operationHash, 'hex'), v, r, s);
|
|
155
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
156
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
157
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
158
|
+
});
|
|
159
|
+
it('a send token transactions from serialized', async () => {
|
|
160
|
+
txBuilder.from(testData.SEND_TOKEN_TX_BROADCAST);
|
|
161
|
+
const tx = await txBuilder.build();
|
|
162
|
+
const operationHash = getOperationHash(tx);
|
|
163
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TOKEN_TX_BROADCAST);
|
|
164
|
+
const { signature } = (0, src_1.decodeTransferData)(tx.toJson().data);
|
|
165
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
166
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(operationHash || ''), v, r, s);
|
|
167
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
168
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
169
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
async function testSendFundsTransaction(tx, operationHash, txParams, testData) {
|
|
175
|
+
const { recipient, amount, contractAddress, expireTime, sequenceId } = txParams;
|
|
176
|
+
should_1.default.equal(tx.toJson().chainId, testData.TXDATA.chainId);
|
|
177
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST_LEGACY);
|
|
178
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
179
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
180
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
181
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
182
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
183
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
184
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
185
|
+
const data = tx.toJson().data;
|
|
186
|
+
const { to, amount: parsedAmount, expireTime: parsedExpireTime, sequenceId: parsedSequenceId, signature, } = (0, src_1.decodeTransferData)(data);
|
|
187
|
+
should_1.default.equal(to, recipient);
|
|
188
|
+
should_1.default.equal(parsedAmount, amount);
|
|
189
|
+
should_1.default.equal(parsedExpireTime, expireTime);
|
|
190
|
+
should_1.default.equal(parsedSequenceId, sequenceId);
|
|
191
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
192
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(ethUtil.stripHexPrefix(operationHash), 'hex'), v, r, s);
|
|
193
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
194
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
195
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLG9DQStJQztBQUVELDREQStCQztBQXRMRCxtREFBd0U7QUFDeEUsb0VBQXlDO0FBQ3pDLG9EQUE0QjtBQUM1Qix5REFBMkM7QUFDM0Msc0NBQStFO0FBRS9FLFNBQWdCLFlBQVksQ0FBQyxRQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUTtJQUM1RSxRQUFRLENBQUMsR0FBRyxRQUFRLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUNwRCxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLElBQUksR0FBRyxDQUFDO1lBQ1IsSUFBSSxlQUFlLENBQUM7WUFDcEIsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUM7WUFDakUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMzQixNQUFNLGdCQUFnQixHQUFHLFVBQVUsRUFBbUI7Z0JBQ3BELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFBLHdCQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5RixNQUFNLGVBQWUsR0FBRztvQkFDdEIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztvQkFDeEQ7d0JBQ0UsR0FBRyxRQUFRLENBQUMsUUFBUSxRQUFRO3dCQUM1QixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFD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QVMsR0FBRyxJQUFJLGFBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUMvRCxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSwgQmFzZVRyYW5zYWN0aW9uIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEV0aGVyZXVtQWJpIGZyb20gJ2V0aGVyZXVtanMtYWJpJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCAqIGFzIGV0aFV0aWwgZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IGRlY29kZVRyYW5zZmVyRGF0YSwgS2V5UGFpciwgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blNlbmRUZXN0cyhjb2luTmFtZTogc3RyaW5nLCB0eEJ1aWxkZXIsIGdldEJ1aWxkZXIsIHRlc3REYXRhKSB7XG4gIGRlc2NyaWJlKGAke2NvaW5OYW1lfSB0cmFuc2FjdGlvbiBidWlsZGVyIHNlbmRgLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ3Nob3VsZCBzaWduIGFuZCBidWlsZCcsICgpID0+IHtcbiAgICAgIGxldCBrZXk7XG4gICAgICBsZXQgY29udHJhY3RBZGRyZXNzO1xuICAgICAgY29uc3QgbmV0d29ya1Rva2VuSWRlbnRpZmllciA9IHRlc3REYXRhLk5FVFdPUktfVE9LRU5fSURFTlRJRklFUjtcbiAgICAgIGNvbnN0IGNvaW4gPSB0ZXN0RGF0YS5DT0lOO1xuICAgICAgY29uc3QgZ2V0T3BlcmF0aW9uSGFzaCA9IGZ1bmN0aW9uICh0eDogQmFzZVRyYW5zYWN0aW9uKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSB0eC50b0pzb24oKTtcbiAgICAgICAgY29uc3QgeyB0b2tlbkNvbnRyYWN0QWRkcmVzcywgZXhwaXJlVGltZSwgc2VxdWVuY2VJZCwgYW1vdW50LCB0byB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGEpO1xuICAgICAgICBjb25zdCBvcGVyYXRpb25QYXJhbXMgPSBbXG4gICAgICAgICAgWydzdHJpbmcnLCAnYWRkcmVzcycsICd1aW50JywgJ2FkZHJlc3MnLCAndWludCcsICd1aW50J10sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgYCR7dGVzdERhdGEuQ0hBSU5fSUR9LUVSQzIwYCxcbiAgICAgICAgICAgIG5ldyBldGhVdGlsLkJOKGV0aFV0aWwuc3RyaXBIZXhQcmVmaXgodG8pLCAxNiksXG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICBuZXcgZXRoVXRpbC5CTihldGhVdGlsLnN0cmlwSGV4UHJlZml4KHRva2VuQ29udHJhY3RBZGRyZXNzIHx8ICcnKSwgMTYpLFxuICAgICAgICAgICAgZXhwaXJlVGltZSxcbiAgICAgICAgICAgIHNlcXVlbmNlSWQsXG4gICAgICAgICAgXSxcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIEV0aGVyZXVtQWJpLnNvbGlkaXR5U0hBMyguLi5vcGVyYXRpb25QYXJhbXMpO1xuICAgICAgfTtcblxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIGNvbnRyYWN0QWRkcmVzcyA9ICcweDhmOTc3ZTkxMmVmNTAwNTQ4YTBjM2JlNmRkZGU5ODk5ZjExOTliODEnO1xuICAgICAgICB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKGNvaW4pIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICAgICAga2V5ID0gdGVzdERhdGEuS0VZUEFJUl9QUlYuZ2V0S2V5cygpLnBydiBhcyBzdHJpbmc7XG4gICAgICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgICAgIGZlZTogJzEwMDAwMDAwMDAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAnMTIxMDAwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoMik7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egc2VuZCBmdW5kcyB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50ID0gJzB4MTk2NDUwMzJjN2YxNTMzMzk1ZDQ0YTYyOTQ2MmU3NTEwODRkM2U0Yyc7XG4gICAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwMDAwMDAwJztcbiAgICAgICAgY29uc3QgZXhwaXJlVGltZSA9IDE1OTAwNjY3Mjg7XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlSWQgPSA1O1xuICAgICAgICB0eEJ1aWxkZXJcbiAgICAgICAgICAudHJhbnNmZXIoKVxuICAgICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAgIC50byhyZWNpcGllbnQpXG4gICAgICAgICAgLmV4cGlyYXRpb25UaW1lKGV4cGlyZVRpbWUpXG4gICAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZChzZXF1ZW5jZUlkKVxuICAgICAgICAgIC5rZXkoa2V5KTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS5jaGFpbklkLCB0ZXN0RGF0YS5UWERBVEEuY2hhaW5JZCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5TRU5EX1RYX0JST0FEQ0FTVF9MRUdBQ1kpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguc2lnbmF0dXJlLmxlbmd0aCwgMik7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCBjb250cmFjdEFkZHJlc3MpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIHJlY2lwaWVudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0eC50b0pzb24oKS5kYXRhO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdG8sXG4gICAgICAgICAgYW1vdW50OiBwYXJzZWRBbW91bnQsXG4gICAgICAgICAgZXhwaXJlVGltZTogcGFyc2VkRXhwaXJlVGltZSxcbiAgICAgICAgICBzZXF1ZW5jZUlkOiBwYXJzZWRTZXF1ZW5jZUlkLFxuICAgICAgICB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGEpO1xuICAgICAgICBzaG91bGQuZXF1YWwodG8sIHJlY2lwaWVudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRBbW91bnQsIGFtb3VudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRFeHBpcmVUaW1lLCBleHBpcmVUaW1lKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlZFNlcXVlbmNlSWQsIHNlcXVlbmNlSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdhIHNlbmQgZnVuZHMgd2l0aCBhbW91bnQgMCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyXG4gICAgICAgICAgLnRyYW5zZmVyKClcbiAgICAgICAgICAuYW1vdW50KCcwJylcbiAgICAgICAgICAudG8oJzB4MTk2NDUwMzJjN2YxNTMzMzk1ZDQ0YTYyOTQ2MmU3NTEwODRkM2U0YycpXG4gICAgICAgICAgLmV4cGlyYXRpb25UaW1lKDE1OTAwNjY3MjgpXG4gICAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZCg1KVxuICAgICAgICAgIC5rZXkoa2V5KTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5TRU5EX1RYX0FNT1VOVF9aRVJPX0JST0FEQ0FTVCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egc2VuZCB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50ID0gJzB4NzJjMmM4ZTA4YmY5MWQ3NTVjZDdkMjZiNDlhMmVlM2RjOTlkZTFiOSc7XG4gICAgICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzcyA9ICcweGRmN2RlY2IxYmFhOGY1MjlmMGM4OTgyY2JiNGJlNTAzNTcxOTUyOTknO1xuICAgICAgICBjb25zdCBhbW91bnQgPSAnMTAwJztcbiAgICAgICAgY29uc3Qga2V5ID0gdGVzdERhdGEuS0VZUEFJUl9QUlYuZ2V0S2V5cygpLnBydiBhcyBzdHJpbmc7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChjb250cmFjdEFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXJcbiAgICAgICAgICAudHJhbnNmZXIoKVxuICAgICAgICAgIC5jb2luKG5ldHdvcmtUb2tlbklkZW50aWZpZXIpXG4gICAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgICAgLnRvKHJlY2lwaWVudClcbiAgICAgICAgICAuZXhwaXJhdGlvblRpbWUoMTU5MDA2NjcyOClcbiAgICAgICAgICAuY29udHJhY3RTZXF1ZW5jZUlkKDUpXG4gICAgICAgICAgLmtleShrZXkpO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7XG4gICAgICAgICAga2V5OiB0ZXN0RGF0YS5QUklWQVRFX0tFWV8xLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uSGFzaCA9IGdldE9wZXJhdGlvbkhhc2godHgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UT0tFTl9UWF9CUk9BRENBU1QpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguc2lnbmF0dXJlLmxlbmd0aCwgMik7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCBjb250cmFjdEFkZHJlc3MpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLmNvaW4sIG5ldHdvcmtUb2tlbklkZW50aWZpZXIpO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIHJlY2lwaWVudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS5jb2luLCBuZXR3b3JrVG9rZW5JZGVudGlmaWVyKTtcblxuICAgICAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKHR4LnRvSnNvbigpLmRhdGEpO1xuXG4gICAgICAgIGNvbnN0IHsgdiwgciwgcyB9ID0gZXRoVXRpbC5mcm9tUnBjU2lnKHNpZ25hdHVyZSk7XG4gICAgICAgIGNvbnN0IHNlbmRlclB1YktleSA9IGV0aFV0aWwuZWNyZWNvdmVyKEJ1ZmZlci5mcm9tKG9wZXJhdGlvbkhhc2gsICdoZXgnKSwgdiwgciwgcyk7XG4gICAgICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBldGhVdGlsLnB1YlRvQWRkcmVzcyhzZW5kZXJQdWJLZXkpO1xuICAgICAgICBjb25zdCBzZW5kZXJLZXkgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgICAgZXRoVXRpbC5idWZmZXJUb0hleChzZW5kZXJBZGRyZXNzKS5zaG91bGQuZXF1YWwoc2VuZGVyS2V5LmdldEFkZHJlc3MoKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egc2VuZCB0b2tlbiB0cmFuc2FjdGlvbnMgZnJvbSBzZXJpYWxpemVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS5TRU5EX1RPS0VOX1RYX0JST0FEQ0FTVCk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbkhhc2ggPSBnZXRPcGVyYXRpb25IYXNoKHR4KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlNFTkRfVE9LRU5fVFhfQlJPQURDQVNUKTtcblxuICAgICAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKHR4LnRvSnNvbigpLmRhdGEpO1xuICAgICAgICBjb25zdCB7IHYsIHIsIHMgfSA9IGV0aFV0aWwuZnJvbVJwY1NpZyhzaWduYXR1cmUpO1xuICAgICAgICBjb25zdCBzZW5kZXJQdWJLZXkgPSBldGhVdGlsLmVjcmVjb3ZlcihCdWZmZXIuZnJvbShvcGVyYXRpb25IYXNoIHx8ICcnKSwgdiwgciwgcyk7XG4gICAgICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBldGhVdGlsLnB1YlRvQWRkcmVzcyhzZW5kZXJQdWJLZXkpO1xuICAgICAgICBjb25zdCBzZW5kZXJLZXkgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgICAgZXRoVXRpbC5idWZmZXJUb0hleChzZW5kZXJBZGRyZXNzKS5zaG91bGQuZXF1YWwoc2VuZGVyS2V5LmdldEFkZHJlc3MoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0U2VuZEZ1bmRzVHJhbnNhY3Rpb24odHg6IGFueSwgb3BlcmF0aW9uSGFzaDogc3RyaW5nLCB0eFBhcmFtcywgdGVzdERhdGE6IGFueSkge1xuICBjb25zdCB7IHJlY2lwaWVudCwgYW1vdW50LCBjb250cmFjdEFkZHJlc3MsIGV4cGlyZVRpbWUsIHNlcXVlbmNlSWQgfSA9IHR4UGFyYW1zO1xuICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuY2hhaW5JZCwgdGVzdERhdGEuVFhEQVRBLmNoYWluSWQpO1xuICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UWF9CUk9BRENBU1RfTEVHQUNZKTtcbiAgc2hvdWxkLmVxdWFsKHR4LnNpZ25hdHVyZS5sZW5ndGgsIDIpO1xuICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0uYWRkcmVzcywgY29udHJhY3RBZGRyZXNzKTtcbiAgc2hvdWxkLmVxdWFsKHR4LmlucHV0c1swXS52YWx1ZSwgYW1vdW50KTtcblxuICBzaG91bGQuZXF1YWwodHgub3V0cHV0cy5sZW5ndGgsIDEpO1xuICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS5hZGRyZXNzLCByZWNpcGllbnQpO1xuICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS52YWx1ZSwgYW1vdW50KTtcblxuICBjb25zdCBkYXRhID0gdHgudG9Kc29uKCkuZGF0YTtcbiAgY29uc3Qge1xuICAgIHRvLFxuICAgIGFtb3VudDogcGFyc2VkQW1vdW50LFxuICAgIGV4cGlyZVRpbWU6IHBhcnNlZEV4cGlyZVRpbWUsXG4gICAgc2VxdWVuY2VJZDogcGFyc2VkU2VxdWVuY2VJZCxcbiAgICBzaWduYXR1cmUsXG4gIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEoZGF0YSk7XG5cbiAgc2hvdWxkLmVxdWFsKHRvLCByZWNpcGllbnQpO1xuICBzaG91bGQuZXF1YWwocGFyc2VkQW1vdW50LCBhbW91bnQpO1xuICBzaG91bGQuZXF1YWwocGFyc2VkRXhwaXJlVGltZSwgZXhwaXJlVGltZSk7XG4gIHNob3VsZC5lcXVhbChwYXJzZWRTZXF1ZW5jZUlkLCBzZXF1ZW5jZUlkKTtcbiAgY29uc3QgeyB2LCByLCBzIH0gPSBldGhVdGlsLmZyb21ScGNTaWcoc2lnbmF0dXJlKTtcbiAgY29uc3Qgc2VuZGVyUHViS2V5ID0gZXRoVXRpbC5lY3JlY292ZXIoQnVmZmVyLmZyb20oZXRoVXRpbC5zdHJpcEhleFByZWZpeChvcGVyYXRpb25IYXNoKSwgJ2hleCcpLCB2LCByLCBzKTtcbiAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGV0aFV0aWwucHViVG9BZGRyZXNzKHNlbmRlclB1YktleSk7XG4gIGNvbnN0IHNlbmRlcktleSA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5QUklWQVRFX0tFWV8xIH0pO1xuICBldGhVdGlsLmJ1ZmZlclRvSGV4KHNlbmRlckFkZHJlc3MpLnNob3VsZC5lcXVhbChzZW5kZXJLZXkuZ2V0QWRkcmVzcygpKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwrapERC7984.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/unwrapERC7984.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUtE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CAoI9G"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runUnwrapERC7984Tests = runUnwrapERC7984Tests;
|
|
7
|
+
/**
|
|
8
|
+
* TransactionBuilder tests for UnwrapERC7984 transaction type.
|
|
9
|
+
*/
|
|
10
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
11
|
+
const should_1 = __importDefault(require("should"));
|
|
12
|
+
const src_1 = require("../../../src");
|
|
13
|
+
const zamaUtils_1 = require("../../../src/lib/zamaUtils");
|
|
14
|
+
const utils_1 = require("../../../src/lib/utils");
|
|
15
|
+
const WRAPPER_ADDRESS = '0x2debbe0487ef921df4457f9e36ed05be2df1ac75'; // hteth:cusdt
|
|
16
|
+
const BASE_ADDRESS = '0x1111111111111111111111111111111111111111';
|
|
17
|
+
const ENCRYPTED_AMOUNT = '0x' + 'ab'.repeat(32);
|
|
18
|
+
const INPUT_PROOF = '0x' + 'cd'.repeat(64);
|
|
19
|
+
const TEST_PRV_KEY = 'FAC4D04AA0025ECF200D74BC9B5E4616E4B8338B69B61362AAAD49F76E68EF28';
|
|
20
|
+
function runUnwrapERC7984Tests(coinName, getBuilder) {
|
|
21
|
+
describe(`${coinName} transaction builder — UnwrapERC7984`, () => {
|
|
22
|
+
let txBuilder;
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
txBuilder = getBuilder(coinName);
|
|
25
|
+
txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
|
|
26
|
+
txBuilder.counter(1);
|
|
27
|
+
});
|
|
28
|
+
describe('classifyTransaction', () => {
|
|
29
|
+
it('should classify unwrap(...) as UnwrapERC7984', () => {
|
|
30
|
+
const calldata = (0, zamaUtils_1.buildUnwrapCalldata)(BASE_ADDRESS, BASE_ADDRESS, ENCRYPTED_AMOUNT, INPUT_PROOF);
|
|
31
|
+
should_1.default.equal((0, utils_1.classifyTransaction)(calldata), sdk_core_1.TransactionType.UnwrapERC7984);
|
|
32
|
+
});
|
|
33
|
+
it('should NOT classify approve as UnwrapERC7984', () => {
|
|
34
|
+
should_1.default.equal((0, utils_1.classifyTransaction)('0x095ea7b3' + '00'.repeat(64)), sdk_core_1.TransactionType.ContractCall);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('build from scratch', () => {
|
|
38
|
+
it('should build an UnwrapERC7984 transaction', async () => {
|
|
39
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
40
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
41
|
+
txBuilder.unwrapFrom(BASE_ADDRESS);
|
|
42
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
43
|
+
txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
44
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
45
|
+
const tx = await txBuilder.build();
|
|
46
|
+
const json = tx.toJson();
|
|
47
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
|
|
48
|
+
json.to.toLowerCase().should.equal(WRAPPER_ADDRESS.toLowerCase());
|
|
49
|
+
json.data.should.startWith(zamaUtils_1.unwrapMethodId);
|
|
50
|
+
json.value.should.equal('0');
|
|
51
|
+
const decoded = (0, zamaUtils_1.decodeUnwrapCalldata)(json.data);
|
|
52
|
+
decoded.from.toLowerCase().should.equal(BASE_ADDRESS.toLowerCase());
|
|
53
|
+
decoded.to.toLowerCase().should.equal(BASE_ADDRESS.toLowerCase());
|
|
54
|
+
decoded.encryptedAmount.should.equal(ENCRYPTED_AMOUNT);
|
|
55
|
+
decoded.inputProof.should.equal(INPUT_PROOF);
|
|
56
|
+
});
|
|
57
|
+
it('should build with EIP-1559 fee model', async () => {
|
|
58
|
+
const builder = getBuilder(coinName);
|
|
59
|
+
builder.fee({
|
|
60
|
+
fee: '30000000000',
|
|
61
|
+
eip1559: {
|
|
62
|
+
maxFeePerGas: '30000000000',
|
|
63
|
+
maxPriorityFeePerGas: '1000000000',
|
|
64
|
+
},
|
|
65
|
+
gasLimit: '200000',
|
|
66
|
+
});
|
|
67
|
+
builder.counter(1);
|
|
68
|
+
builder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
69
|
+
builder.contract(WRAPPER_ADDRESS);
|
|
70
|
+
builder.unwrapFrom(BASE_ADDRESS);
|
|
71
|
+
builder.unwrapTo(BASE_ADDRESS);
|
|
72
|
+
builder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
73
|
+
builder.unwrapInputProof(INPUT_PROOF);
|
|
74
|
+
const tx = await builder.build();
|
|
75
|
+
const json = tx.toJson();
|
|
76
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
|
|
77
|
+
json._type.should.equal(src_1.ETHTransactionType.EIP1559);
|
|
78
|
+
json.data.should.startWith(zamaUtils_1.unwrapMethodId);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('signing and round-trip', () => {
|
|
82
|
+
it('should produce a signed transaction with v, r, s and from fields', async () => {
|
|
83
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
84
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
85
|
+
txBuilder.unwrapFrom(BASE_ADDRESS);
|
|
86
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
87
|
+
txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
88
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
89
|
+
txBuilder.sign({ key: TEST_PRV_KEY });
|
|
90
|
+
const tx = await txBuilder.build();
|
|
91
|
+
const json = tx.toJson();
|
|
92
|
+
should_1.default.exist(json.v);
|
|
93
|
+
should_1.default.exist(json.r);
|
|
94
|
+
should_1.default.exist(json.s);
|
|
95
|
+
should_1.default.exist(json.from);
|
|
96
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
|
|
97
|
+
});
|
|
98
|
+
it('should serialize and deserialize to the same transaction', async () => {
|
|
99
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
100
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
101
|
+
txBuilder.unwrapFrom(BASE_ADDRESS);
|
|
102
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
103
|
+
txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
104
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
105
|
+
const originalTx = await txBuilder.build();
|
|
106
|
+
const rawHex = originalTx.toBroadcastFormat();
|
|
107
|
+
const rebuiltBuilder = getBuilder(coinName);
|
|
108
|
+
rebuiltBuilder.from(rawHex);
|
|
109
|
+
const rebuiltTx = await rebuiltBuilder.build();
|
|
110
|
+
rebuiltTx.toBroadcastFormat().should.equal(rawHex);
|
|
111
|
+
should_1.default.equal(rebuiltTx.type, sdk_core_1.TransactionType.UnwrapERC7984);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe('validation', () => {
|
|
115
|
+
it('should reject missing unwrapFrom', async () => {
|
|
116
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
117
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
118
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
119
|
+
txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
120
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
121
|
+
await txBuilder.build().should.be.rejectedWith(/missing unwrapFrom/);
|
|
122
|
+
});
|
|
123
|
+
it('should reject missing unwrapEncryptedAmount', async () => {
|
|
124
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
125
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
126
|
+
txBuilder.unwrapFrom(BASE_ADDRESS);
|
|
127
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
128
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
129
|
+
await txBuilder.build().should.be.rejectedWith(/missing unwrapEncryptedAmount/);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW53cmFwRVJDNzk4NC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdW53cmFwRVJDNzk4NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLHNEQW9JQztBQW5KRDs7R0FFRztBQUNILG1EQUF1RDtBQUN2RCxvREFBNEI7QUFDNUIsc0NBQXNFO0FBQ3RFLDBEQUF1RztBQUN2RyxrREFBNkQ7QUFFN0QsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUMsQ0FBQyxjQUFjO0FBQ3BGLE1BQU0sWUFBWSxHQUFHLDRDQUE0QyxDQUFDO0FBQ2xFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0MsTUFBTSxZQUFZLEdBQUcsa0VBQWtFLENBQUM7QUFFeEYsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0IsRUFBRSxVQUFnRDtJQUN0RyxRQUFRLENBQUMsR0FBRyxRQUFRLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUMvRCxJQUFJLFNBQTZCLENBQUM7UUFFbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFNBQVMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDekQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7WUFDbkMsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtnQkFDdEQsTUFBTSxRQUFRLEdB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QWUsQ0FBQyxDQUFDO2dCQUNwQyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDbEYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb25CdWlsZGVyIHRlc3RzIGZvciBVbndyYXBFUkM3OTg0IHRyYW5zYWN0aW9uIHR5cGUuXG4gKi9cbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEVUSFRyYW5zYWN0aW9uVHlwZSwgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IGJ1aWxkVW53cmFwQ2FsbGRhdGEsIGRlY29kZVVud3JhcENhbGxkYXRhLCB1bndyYXBNZXRob2RJZCB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvemFtYVV0aWxzJztcbmltcG9ydCB7IGNsYXNzaWZ5VHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcblxuY29uc3QgV1JBUFBFUl9BRERSRVNTID0gJzB4MmRlYmJlMDQ4N2VmOTIxZGY0NDU3ZjllMzZlZDA1YmUyZGYxYWM3NSc7IC8vIGh0ZXRoOmN1c2R0XG5jb25zdCBCQVNFX0FERFJFU1MgPSAnMHgxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJztcbmNvbnN0IEVOQ1JZUFRFRF9BTU9VTlQgPSAnMHgnICsgJ2FiJy5yZXBlYXQoMzIpO1xuY29uc3QgSU5QVVRfUFJPT0YgPSAnMHgnICsgJ2NkJy5yZXBlYXQoNjQpO1xuY29uc3QgVEVTVF9QUlZfS0VZID0gJ0ZBQzREMDRBQTAwMjVFQ0YyMDBENzRCQzlCNUU0NjE2RTRCODMzOEI2OUI2MTM2MkFBQUQ0OUY3NkU2OEVGMjgnO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuVW53cmFwRVJDNzk4NFRlc3RzKGNvaW5OYW1lOiBzdHJpbmcsIGdldEJ1aWxkZXI6IChjb2luOiBzdHJpbmcpID0+IFRyYW5zYWN0aW9uQnVpbGRlcik6IHZvaWQge1xuICBkZXNjcmliZShgJHtjb2luTmFtZX0gdHJhbnNhY3Rpb24gYnVpbGRlciDigJQgVW53cmFwRVJDNzk4NGAsICgpID0+IHtcbiAgICBsZXQgdHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwMDAwMDAwMDAnLCBnYXNMaW1pdDogJzIwMDAwMCcgfSk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcigxKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjbGFzc2lmeVRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBjbGFzc2lmeSB1bndyYXAoLi4uKSBhcyBVbndyYXBFUkM3OTg0JywgKCkgPT4ge1xuICAgICAgICBjb25zdCBjYWxsZGF0YSA9IGJ1aWxkVW53cmFwQ2FsbGRhdGEoQkFTRV9BRERSRVNTLCBCQVNFX0FERFJFU1MsIEVOQ1JZUFRFRF9BTU9VTlQsIElOUFVUX1BST09GKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGNsYXNzaWZ5VHJhbnNhY3Rpb24oY2FsbGRhdGEpLCBUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBOT1QgY2xhc3NpZnkgYXBwcm92ZSBhcyBVbndyYXBFUkM3OTg0JywgKCkgPT4ge1xuICAgICAgICBzaG91bGQuZXF1YWwoY2xhc3NpZnlUcmFuc2FjdGlvbignMHgwOTVlYTdiMycgKyAnMDAnLnJlcGVhdCg2NCkpLCBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2J1aWxkIGZyb20gc2NyYXRjaCcsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gVW53cmFwRVJDNzk4NCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEZyb20oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBFbmNyeXB0ZWRBbW91bnQoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBJbnB1dFByb29mKElOUFVUX1BST09GKTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5VbndyYXBFUkM3OTg0KTtcbiAgICAgICAganNvbi50by50b0xvd2VyQ2FzZSgpLnNob3VsZC5lcXVhbChXUkFQUEVSX0FERFJFU1MudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKHVud3JhcE1ldGhvZElkKTtcbiAgICAgICAganNvbi52YWx1ZS5zaG91bGQuZXF1YWwoJzAnKTtcblxuICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVW53cmFwQ2FsbGRhdGEoanNvbi5kYXRhKTtcbiAgICAgICAgZGVjb2RlZC5mcm9tLnRvTG93ZXJDYXNlKCkuc2hvdWxkLmVxdWFsKEJBU0VfQUREUkVTUy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgZGVjb2RlZC50by50b0xvd2VyQ2FzZSgpLnNob3VsZC5lcXVhbChCQVNFX0FERFJFU1MudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGRlY29kZWQuZW5jcnlwdGVkQW1vdW50LnNob3VsZC5lcXVhbChFTkNSWVBURURfQU1PVU5UKTtcbiAgICAgICAgZGVjb2RlZC5pbnB1dFByb29mLnNob3VsZC5lcXVhbChJTlBVVF9QUk9PRik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBidWlsZCB3aXRoIEVJUC0xNTU5IGZlZSBtb2RlbCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgICBidWlsZGVyLmZlZSh7XG4gICAgICAgICAgZmVlOiAnMzAwMDAwMDAwMDAnLFxuICAgICAgICAgIGVpcDE1NTk6IHtcbiAgICAgICAgICAgIG1heEZlZVBlckdhczogJzMwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzOiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnYXNMaW1pdDogJzIwMDAwMCcsXG4gICAgICAgIH0pO1xuICAgICAgICBidWlsZGVyLmNvdW50ZXIoMSk7XG4gICAgICAgIGJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIGJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgYnVpbGRlci51bndyYXBGcm9tKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIGJ1aWxkZXIudW53cmFwVG8oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgYnVpbGRlci51bndyYXBFbmNyeXB0ZWRBbW91bnQoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIGJ1aWxkZXIudW53cmFwSW5wdXRQcm9vZihJTlBVVF9QUk9PRik7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICBqc29uLl90eXBlLnNob3VsZC5lcXVhbChFVEhUcmFuc2FjdGlvblR5cGUuRUlQMTU1OSk7XG4gICAgICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKHVud3JhcE1ldGhvZElkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3NpZ25pbmcgYW5kIHJvdW5kLXRyaXAnLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHByb2R1Y2UgYSBzaWduZWQgdHJhbnNhY3Rpb24gd2l0aCB2LCByLCBzIGFuZCBmcm9tIGZpZWxkcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEZyb20oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBFbmNyeXB0ZWRBbW91bnQoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBJbnB1dFByb29mKElOUFVUX1BST09GKTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IFRFU1RfUFJWX0tFWSB9KTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24udik7XG4gICAgICAgIHNob3VsZC5leGlzdChqc29uLnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QoanNvbi5zKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24uZnJvbSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIHRvIHRoZSBzYW1lIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwRnJvbShCQVNFX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwVG8oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEVuY3J5cHRlZEFtb3VudChFTkNSWVBURURfQU1PVU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcElucHV0UHJvb2YoSU5QVVRfUFJPT0YpO1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZ2V0QnVpbGRlcihjb2luTmFtZSk7XG4gICAgICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcbiAgICAgICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgICByZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwocmF3SGV4KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC50eXBlLCBUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgbWlzc2luZyB1bndyYXBGcm9tJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwVG8oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEVuY3J5cHRlZEFtb3VudChFTkNSWVBURURfQU1PVU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcElucHV0UHJvb2YoSU5QVVRfUFJPT0YpO1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9taXNzaW5nIHVud3JhcEZyb20vKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBtaXNzaW5nIHVud3JhcEVuY3J5cHRlZEFtb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEZyb20oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBJbnB1dFByb29mKElOUFVUX1BST09GKTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbWlzc2luZyB1bndyYXBFbmNyeXB0ZWRBbW91bnQvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TransactionBuilder } from '../../../src';
|
|
2
|
+
export declare function testInitTransaction(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
3
|
+
export declare function testWalletInitTransaction(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
4
|
+
export declare function testSignedInitTransaction(newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
5
|
+
export declare function testUnsignedInitTransaction(txBuilder: TransactionBuilder, newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
6
|
+
export declare function testUnsignedInitTransactionFromSerialized(txBuilder: TransactionBuilder, newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
7
|
+
export declare function testFinalVCheck(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
8
|
+
export declare function testRecoveryWalletDeployment(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
9
|
+
export declare function testRecoveryTransactionWithoutData(txBuilder: TransactionBuilder): Promise<void>;
|
|
10
|
+
export declare function testEip1559PriorityFeeExceedsMaxFee(txBuilder: TransactionBuilder): void;
|
|
11
|
+
//# sourceMappingURL=walletInitialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletInitialization.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/walletInitialization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQlD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAerF;AAED,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAc3F;AAED,wBAAsB,yBAAyB,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAY9F;AAED,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,GAAG,iBAUd;AAED,wBAAsB,yCAAyC,CAC7D,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,GAAG,iBAUd;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAMjF;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAmB9F;AAED,wBAAsB,kCAAkC,CAAC,SAAS,EAAE,kBAAkB,iBAcrF;AAED,wBAAgB,mCAAmC,CAAC,SAAS,EAAE,kBAAkB,QAYhF"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.testInitTransaction = testInitTransaction;
|
|
7
|
+
exports.testWalletInitTransaction = testWalletInitTransaction;
|
|
8
|
+
exports.testSignedInitTransaction = testSignedInitTransaction;
|
|
9
|
+
exports.testUnsignedInitTransaction = testUnsignedInitTransaction;
|
|
10
|
+
exports.testUnsignedInitTransactionFromSerialized = testUnsignedInitTransactionFromSerialized;
|
|
11
|
+
exports.testFinalVCheck = testFinalVCheck;
|
|
12
|
+
exports.testRecoveryWalletDeployment = testRecoveryWalletDeployment;
|
|
13
|
+
exports.testRecoveryTransactionWithoutData = testRecoveryTransactionWithoutData;
|
|
14
|
+
exports.testEip1559PriorityFeeExceedsMaxFee = testEip1559PriorityFeeExceedsMaxFee;
|
|
15
|
+
const should_1 = __importDefault(require("should"));
|
|
16
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
17
|
+
function addOwner(txBuilder, testData) {
|
|
18
|
+
txBuilder.owner(testData.ACCOUNT_1);
|
|
19
|
+
txBuilder.owner(testData.ACCOUNT_2);
|
|
20
|
+
txBuilder.owner(testData.ACCOUNT_3);
|
|
21
|
+
}
|
|
22
|
+
async function testInitTransaction(txBuilder, testData) {
|
|
23
|
+
it('an init transaction', async () => {
|
|
24
|
+
addOwner(txBuilder, testData);
|
|
25
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
26
|
+
const tx = await txBuilder.build();
|
|
27
|
+
tx.type.should.equal(sdk_core_1.TransactionType.WalletInitialization);
|
|
28
|
+
const txJson = tx.toJson();
|
|
29
|
+
txJson.gasLimit.should.equal('6800000');
|
|
30
|
+
txJson.gasPrice.should.equal('10000000000');
|
|
31
|
+
should_1.default.equal(txJson.nonce, 1);
|
|
32
|
+
should_1.default.equal(txJson.chainId, testData.TXDATA.chainId);
|
|
33
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.TX_BROADCAST);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async function testWalletInitTransaction(txBuilder, testData) {
|
|
37
|
+
it('a wallet initialization transaction with nonce 0', async () => {
|
|
38
|
+
addOwner(txBuilder, testData);
|
|
39
|
+
txBuilder.counter(0);
|
|
40
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
41
|
+
const tx = await txBuilder.build();
|
|
42
|
+
tx.type.should.equal(sdk_core_1.TransactionType.WalletInitialization);
|
|
43
|
+
const txJson = tx.toJson();
|
|
44
|
+
txJson.gasLimit.should.equal('6800000');
|
|
45
|
+
txJson.gasPrice.should.equal('10000000000');
|
|
46
|
+
should_1.default.equal(txJson.nonce, 0);
|
|
47
|
+
should_1.default.equal(txJson.chainId, testData.TXDATA.chainId);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async function testSignedInitTransaction(newTxBuilder, testData) {
|
|
51
|
+
it('a signed init transaction from serialized', async () => {
|
|
52
|
+
newTxBuilder.from(testData.TX_BROADCAST);
|
|
53
|
+
const newTx = await newTxBuilder.build();
|
|
54
|
+
should_1.default.equal(newTx.toBroadcastFormat(), testData.TX_BROADCAST);
|
|
55
|
+
should_1.default.equal(newTx.id, testData.EXPECTED_NEW_TX_ID);
|
|
56
|
+
const txJson = newTx.toJson();
|
|
57
|
+
should_1.default.exist(txJson.v);
|
|
58
|
+
should_1.default.exist(txJson.r);
|
|
59
|
+
should_1.default.exist(txJson.s);
|
|
60
|
+
should_1.default.exist(txJson.from);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async function testUnsignedInitTransaction(txBuilder, newTxBuilder, testData) {
|
|
64
|
+
it('an unsigned init transaction from serialized with 0-prefixed address', async () => {
|
|
65
|
+
addOwner(txBuilder, testData);
|
|
66
|
+
const tx = await txBuilder.build();
|
|
67
|
+
const serialized = tx.toBroadcastFormat();
|
|
68
|
+
newTxBuilder.from(serialized);
|
|
69
|
+
const newTx = await newTxBuilder.build();
|
|
70
|
+
should_1.default.equal(newTx.toBroadcastFormat(), serialized);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async function testUnsignedInitTransactionFromSerialized(txBuilder, newTxBuilder, testData) {
|
|
74
|
+
it('an unsigned init transaction from serialized', async () => {
|
|
75
|
+
addOwner(txBuilder, testData);
|
|
76
|
+
const tx = await txBuilder.build();
|
|
77
|
+
const serialized = tx.toBroadcastFormat();
|
|
78
|
+
newTxBuilder.from(serialized);
|
|
79
|
+
const newTx = await newTxBuilder.build();
|
|
80
|
+
should_1.default.equal(newTx.toBroadcastFormat(), serialized);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async function testFinalVCheck(txBuilder, testData) {
|
|
84
|
+
it('an unsigned transaction with final v check', async () => {
|
|
85
|
+
addOwner(txBuilder, testData);
|
|
86
|
+
const tx = await txBuilder.build();
|
|
87
|
+
should_1.default.equal(tx.toJson().v, testData.FINAL_V);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async function testRecoveryWalletDeployment(txBuilder, testData) {
|
|
91
|
+
it('wallet deployment transaction for recovery', async () => {
|
|
92
|
+
txBuilder.type(sdk_core_1.TransactionType.RecoveryWalletDeployment);
|
|
93
|
+
txBuilder.data(testData.RECOVERY_WALLET_BYTE_CODE);
|
|
94
|
+
txBuilder.fee({
|
|
95
|
+
eip1559: {
|
|
96
|
+
maxFeePerGas: '100',
|
|
97
|
+
maxPriorityFeePerGas: '10',
|
|
98
|
+
},
|
|
99
|
+
fee: '100',
|
|
100
|
+
gasLimit: '10000',
|
|
101
|
+
});
|
|
102
|
+
txBuilder.counter(1);
|
|
103
|
+
const tx = await txBuilder.build();
|
|
104
|
+
const txJson = tx.toJson();
|
|
105
|
+
should_1.default.equal(txJson._type, 'EIP1559');
|
|
106
|
+
should_1.default.equal(txJson.gasLimit, '10000');
|
|
107
|
+
should_1.default.exists(tx.toBroadcastFormat());
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async function testRecoveryTransactionWithoutData(txBuilder) {
|
|
111
|
+
it('fail when data is not passed recovery', async () => {
|
|
112
|
+
txBuilder.type(sdk_core_1.TransactionType.RecoveryWalletDeployment);
|
|
113
|
+
txBuilder.fee({
|
|
114
|
+
eip1559: {
|
|
115
|
+
maxFeePerGas: '100',
|
|
116
|
+
maxPriorityFeePerGas: '10',
|
|
117
|
+
},
|
|
118
|
+
fee: '100',
|
|
119
|
+
gasLimit: '10000',
|
|
120
|
+
});
|
|
121
|
+
txBuilder.counter(1);
|
|
122
|
+
await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract call data field');
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
function testEip1559PriorityFeeExceedsMaxFee(txBuilder) {
|
|
126
|
+
it('fail when maxPriorityFeePerGas exceeds maxFeePerGas', () => {
|
|
127
|
+
(() => txBuilder.fee({
|
|
128
|
+
eip1559: {
|
|
129
|
+
maxFeePerGas: '1000000000',
|
|
130
|
+
maxPriorityFeePerGas: '9000000000',
|
|
131
|
+
},
|
|
132
|
+
fee: '1000000000',
|
|
133
|
+
gasLimit: '21000',
|
|
134
|
+
})).should.throw('maxPriorityFeePerGas cannot exceed maxFeePerGas');
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3dhbGxldEluaXRpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBVUEsa0RBZUM7QUFFRCw4REFjQztBQUVELDhEQVlDO0FBRUQsa0VBYUM7QUFFRCw4RkFhQztBQUVELDBDQU1DO0FBRUQsb0VBbUJDO0FBRUQsZ0ZBY0M7QUFFRCxrRkFZQztBQWhKRCxvREFBNEI7QUFDNUIsbURBQXVEO0FBR3ZELFNBQVMsUUFBUSxDQUFDLFNBQTZCLEVBQUUsUUFBUTtJQUN2RCxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRU0sS0FBSyxVQUFVLG1CQUFtQixDQUFDLFNBQTZCLEVBQUUsUUFBYTtJQUNwRixFQUFFLENBQUMscUJBQXFCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbkMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRWhELE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRW5DLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFD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Q3JELFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pELFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFDWixPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLG9CQUFvQixFQUFFLElBQUk7YUFDM0I7WUFDRCxHQUFHLEVBQUUsS0FBSztZQUNWLFFBQVEsRUFBRSxPQUFPO1NBQ2xCLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMxRyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFnQixtQ0FBbUMsQ0FBQyxTQUE2QjtJQUMvRSxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1FBQzdELENBQUMsR0FBRyxFQUFFLENBQ0osU0FBUyxDQUFDLEdBQUcsQ0FBQztZQUNaLE9BQU8sRUFBRTtnQkFDUCxZQUFZLEVBQUUsWUFBWTtnQkFDMUIsb0JBQW9CLEVBQUUsWUFBWTthQUNuQztZQUNELEdBQUcsRUFBRSxZQUFZO1lBQ2pCLFFBQVEsRUFBRSxPQUFPO1NBQ2xCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5mdW5jdGlvbiBhZGRPd25lcih0eEJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlciwgdGVzdERhdGEpIHtcbiAgdHhCdWlsZGVyLm93bmVyKHRlc3REYXRhLkFDQ09VTlRfMSk7XG4gIHR4QnVpbGRlci5vd25lcih0ZXN0RGF0YS5BQ0NPVU5UXzIpO1xuICB0eEJ1aWxkZXIub3duZXIodGVzdERhdGEuQUNDT1VOVF8zKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RJbml0VHJhbnNhY3Rpb24odHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHRlc3REYXRhOiBhbnkpIHtcbiAgaXQoJ2FuIGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgYWRkT3duZXIodHhCdWlsZGVyLCB0ZXN0RGF0YSk7XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEgfSk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICB0eEpzb24uZ2FzTGltaXQuc2hvdWxkLmVxdWFsKCc2ODAwMDAwJyk7XG4gICAgdHhKc29uLmdhc1ByaWNlLnNob3VsZC5lcXVhbCgnMTAwMDAwMDAwMDAnKTtcbiAgICBzaG91bGQuZXF1YWwodHhKc29uLm5vbmNlLCAxKTtcbiAgICBzaG91bGQuZXF1YWwodHhKc29uLmNoYWluSWQsIHRlc3REYXRhLlRYREFUQS5jaGFpbklkKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuVFhfQlJPQURDQVNUKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2FsbGV0SW5pdFRyYW5zYWN0aW9uKHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyLCB0ZXN0RGF0YTogYW55KSB7XG4gIGl0KCdhIHdhbGxldCBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbiB3aXRoIG5vbmNlIDAnLCBhc3luYyAoKSA9PiB7XG4gICAgYWRkT3duZXIodHhCdWlsZGVyLCB0ZXN0RGF0YSk7XG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoMCk7XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEgfSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgdHhKc29uLmdhc0xpbWl0LnNob3VsZC5lcXVhbCgnNjgwMDAwMCcpO1xuICAgIHR4SnNvbi5nYXNQcmljZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAwMDAwJyk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgMCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5jaGFpbklkLCB0ZXN0RGF0YS5UWERBVEEuY2hhaW5JZCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdFNpZ25lZEluaXRUcmFuc2FjdGlvbihuZXdUeEJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlciwgdGVzdERhdGE6IGFueSkge1xuICBpdCgnYSBzaWduZWQgaW5pdCB0cmFuc2FjdGlvbiBmcm9tIHNlcmlhbGl6ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgbmV3VHhCdWlsZGVyLmZyb20odGVzdERhdGEuVFhfQlJPQURDQVNUKTtcbiAgICBjb25zdCBuZXdUeCA9IGF3YWl0IG5ld1R4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbChuZXdUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5UWF9CUk9BRENBU1QpO1xuICAgIHNob3VsZC5lcXVhbChuZXdUeC5pZCwgdGVzdERhdGEuRVhQRUNURURfTkVXX1RYX0lEKTtcbiAgICBjb25zdCB0eEpzb24gPSBuZXdUeC50b0pzb24oKTtcbiAgICBzaG91bGQuZXhpc3QodHhKc29uLnYpO1xuICAgIHNob3VsZC5leGlzdCh0eEpzb24ucik7XG4gICAgc2hvdWxkLmV4aXN0KHR4SnNvbi5zKTtcbiAgICBzaG91bGQuZXhpc3QodHhKc29uLmZyb20pO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RVbnNpZ25lZEluaXRUcmFuc2FjdGlvbihcbiAgdHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIG5ld1R4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0ZXN0RGF0YTogYW55XG4pIHtcbiAgaXQoJ2FuIHVuc2lnbmVkIGluaXQgdHJhbnNhY3Rpb24gZnJvbSBzZXJpYWxpemVkIHdpdGggMC1wcmVmaXhlZCBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgIGFkZE93bmVyKHR4QnVpbGRlciwgdGVzdERhdGEpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgbmV3VHhCdWlsZGVyLmZyb20oc2VyaWFsaXplZCk7XG4gICAgY29uc3QgbmV3VHggPSBhd2FpdCBuZXdUeEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwobmV3VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgc2VyaWFsaXplZCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdFVuc2lnbmVkSW5pdFRyYW5zYWN0aW9uRnJvbVNlcmlhbGl6ZWQoXG4gIHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBuZXdUeEJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGVzdERhdGE6IGFueVxuKSB7XG4gIGl0KCdhbiB1bnNpZ25lZCBpbml0IHRyYW5zYWN0aW9uIGZyb20gc2VyaWFsaXplZCcsIGFzeW5jICgpID0+IHtcbiAgICBhZGRPd25lcih0eEJ1aWxkZXIsIHRlc3REYXRhKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIG5ld1R4QnVpbGRlci5mcm9tKHNlcmlhbGl6ZWQpO1xuICAgIGNvbnN0IG5ld1R4ID0gYXdhaXQgbmV3VHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKG5ld1R4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHNlcmlhbGl6ZWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RGaW5hbFZDaGVjayh0eEJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlciwgdGVzdERhdGE6IGFueSkge1xuICBpdCgnYW4gdW5zaWduZWQgdHJhbnNhY3Rpb24gd2l0aCBmaW5hbCB2IGNoZWNrJywgYXN5bmMgKCkgPT4ge1xuICAgIGFkZE93bmVyKHR4QnVpbGRlciwgdGVzdERhdGEpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLnYsIHRlc3REYXRhLkZJTkFMX1YpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RSZWNvdmVyeVdhbGxldERlcGxveW1lbnQodHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHRlc3REYXRhOiBhbnkpIHtcbiAgaXQoJ3dhbGxldCBkZXBsb3ltZW50IHRyYW5zYWN0aW9uIGZvciByZWNvdmVyeScsIGFzeW5jICgpID0+IHtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuUmVjb3ZlcnlXYWxsZXREZXBsb3ltZW50KTtcbiAgICB0eEJ1aWxkZXIuZGF0YSh0ZXN0RGF0YS5SRUNPVkVSWV9XQUxMRVRfQllURV9DT0RFKTtcbiAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgIGVpcDE1NTk6IHtcbiAgICAgICAgbWF4RmVlUGVyR2FzOiAnMTAwJyxcbiAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6ICcxMCcsXG4gICAgICB9LFxuICAgICAgZmVlOiAnMTAwJyxcbiAgICAgIGdhc0xpbWl0OiAnMTAwMDAnLFxuICAgIH0pO1xuICAgIHR4QnVpbGRlci5jb3VudGVyKDEpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5fdHlwZSwgJ0VJUDE1NTknKTtcbiAgICBzaG91bGQuZXF1YWwodHhKc29uLmdhc0xpbWl0LCAnMTAwMDAnKTtcbiAgICBzaG91bGQuZXhpc3RzKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RSZWNvdmVyeVRyYW5zYWN0aW9uV2l0aG91dERhdGEodHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIpIHtcbiAgaXQoJ2ZhaWwgd2hlbiBkYXRhIGlzIG5vdCBwYXNzZWQgcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlJlY292ZXJ5V2FsbGV0RGVwbG95bWVudCk7XG4gICAgdHhCdWlsZGVyLmZlZSh7XG4gICAgICBlaXAxNTU5OiB7XG4gICAgICAgIG1heEZlZVBlckdhczogJzEwMCcsXG4gICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzOiAnMTAnLFxuICAgICAgfSxcbiAgICAgIGZlZTogJzEwMCcsXG4gICAgICBnYXNMaW1pdDogJzEwMDAwJyxcbiAgICB9KTtcbiAgICB0eEJ1aWxkZXIuY291bnRlcigxKTtcbiAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGNvbnRyYWN0IGNhbGwgZGF0YSBmaWVsZCcpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RFaXAxNTU5UHJpb3JpdHlGZWVFeGNlZWRzTWF4RmVlKHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyKSB7XG4gIGl0KCdmYWlsIHdoZW4gbWF4UHJpb3JpdHlGZWVQZXJHYXMgZXhjZWVkcyBtYXhGZWVQZXJHYXMnLCAoKSA9PiB7XG4gICAgKCgpID0+XG4gICAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgIG1heEZlZVBlckdhczogJzEwMDAwMDAwMDAnLFxuICAgICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzOiAnOTAwMDAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIGZlZTogJzEwMDAwMDAwMDAnLFxuICAgICAgICBnYXNMaW1pdDogJzIxMDAwJyxcbiAgICAgIH0pKS5zaG91bGQudGhyb3coJ21heFByaW9yaXR5RmVlUGVyR2FzIGNhbm5vdCBleGNlZWQgbWF4RmVlUGVyR2FzJyk7XG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapERC7984.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/wrapERC7984.ts"],"names":[],"mappings":"AAWA,OAAO,EAAsB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUtE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CAqI5G"}
|