@arkecosystem/typescript-crypto 0.0.10 → 0.0.12
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/enums/index.d.ts +0 -1
- package/dist/enums/index.d.ts.map +1 -1
- package/dist/enums/index.js +0 -1
- package/dist/identities/PrivateKey.d.ts.map +1 -1
- package/dist/identities/PrivateKey.js +3 -4
- package/dist/index.js +33 -46
- package/dist/transactions/Deserializer.d.ts.map +1 -1
- package/dist/transactions/Deserializer.js +18 -16
- package/dist/transactions/builders/AbstractTransactionBuilder.d.ts +1 -2
- package/dist/transactions/builders/AbstractTransactionBuilder.d.ts.map +1 -1
- package/dist/transactions/builders/AbstractTransactionBuilder.js +7 -13
- package/dist/transactions/types/AbstractTransaction.d.ts.map +1 -1
- package/dist/transactions/types/AbstractTransaction.js +4 -6
- package/dist/types.d.ts +2 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/Message.js +1 -1
- package/dist/utils/TransactionUtils.d.ts.map +1 -1
- package/dist/utils/TransactionUtils.js +14 -12
- package/package.json +1 -1
- package/src/enums/index.ts +0 -1
- package/src/identities/PrivateKey.ts +3 -4
- package/src/transactions/Deserializer.ts +22 -19
- package/src/transactions/builders/AbstractTransactionBuilder.ts +7 -15
- package/src/transactions/types/AbstractTransaction.ts +4 -6
- package/src/types.ts +2 -4
- package/src/utils/Message.ts +1 -1
- package/src/utils/TransactionUtils.ts +11 -8
- package/tests/fixtures/identity.json +2 -1
- package/tests/fixtures/message-sign.json +1 -1
- package/tests/fixtures/sign-compact.json +1 -1
- package/tests/fixtures/transactions/evm-sign.json +7 -7
- package/tests/fixtures/transactions/multipayment-empty.json +7 -7
- package/tests/fixtures/transactions/multipayment-single.json +7 -7
- package/tests/fixtures/transactions/multipayment.json +7 -7
- package/tests/fixtures/transactions/transfer-0.json +7 -7
- package/tests/fixtures/transactions/transfer-large-amount.json +7 -7
- package/tests/fixtures/transactions/transfer-legacy-second-signature.json +8 -8
- package/tests/fixtures/transactions/transfer.json +7 -7
- package/tests/fixtures/transactions/unvote.json +7 -7
- package/tests/fixtures/transactions/username-registration.json +7 -7
- package/tests/fixtures/transactions/username-resignation.json +7 -7
- package/tests/fixtures/transactions/validator-registration.json +8 -8
- package/tests/fixtures/transactions/validator-resignation.json +7 -7
- package/tests/fixtures/transactions/vote.json +7 -7
- package/tests/unit/identities/PublicKey.test.ts +3 -4
- package/tests/unit/transactions/Deserializer.test.ts +12 -11
- package/tests/unit/transactions/Serializer.test.ts +5 -6
- package/tests/unit/transactions/builders/EvmCallBuilder.test.ts +7 -14
- package/tests/unit/transactions/builders/MultipaymentBuilder.test.ts +15 -29
- package/tests/unit/transactions/builders/TransferBuilder.test.ts +15 -29
- package/tests/unit/transactions/builders/UnvoteBuilder.test.ts +7 -14
- package/tests/unit/transactions/builders/UsernameRegistrationBuilder.test.ts +8 -15
- package/tests/unit/transactions/builders/UsernameResignationBuilder.test.ts +7 -14
- package/tests/unit/transactions/builders/ValidatorRegistrationBuilder.test.ts +9 -18
- package/tests/unit/transactions/builders/ValidatorResignationBuilder.test.ts +7 -14
- package/tests/unit/transactions/builders/VoteBuilder.test.ts +7 -14
- package/tests/unit/transactions/types/AbstractTransaction.test.ts +6 -8
- package/tests/unit/utils/TransactionUtils.test.ts +5 -7
- package/dist/enums/Constants.d.ts +0 -5
- package/dist/enums/Constants.d.ts.map +0 -1
- package/dist/enums/Constants.js +0 -5
- package/src/enums/Constants.ts +0 -4
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import { AbiResult, ITransaction, TransactionData } from "@/types";
|
|
2
|
-
|
|
3
|
-
import BigNumber from "bignumber.js";
|
|
4
|
-
import { Constants } from "@/enums/Constants";
|
|
5
|
-
import { ContractAbiType } from "@/enums/ContractAbiType";
|
|
6
|
-
import { Transfer } from "./types/Transfer";
|
|
7
|
-
import { decodeRlp } from "ethers";
|
|
8
2
|
import {
|
|
9
3
|
EvmCall,
|
|
10
4
|
Multipayment,
|
|
@@ -15,8 +9,14 @@ import {
|
|
|
15
9
|
ValidatorResignation,
|
|
16
10
|
Vote,
|
|
17
11
|
} from "./types";
|
|
18
|
-
|
|
12
|
+
|
|
19
13
|
import { AbiDecoder } from "@/utils";
|
|
14
|
+
import { AbiFunction } from "@/enums";
|
|
15
|
+
import BigNumber from "bignumber.js";
|
|
16
|
+
import { ContractAbiType } from "@/enums/ContractAbiType";
|
|
17
|
+
import { Network } from "@/configuration/Network";
|
|
18
|
+
import { Transfer } from "./types/Transfer";
|
|
19
|
+
import { decodeRlp } from "ethers";
|
|
20
20
|
|
|
21
21
|
export class Deserializer {
|
|
22
22
|
SIGNATURE_SIZE = 64;
|
|
@@ -27,7 +27,7 @@ export class Deserializer {
|
|
|
27
27
|
|
|
28
28
|
constructor(serialized: string) {
|
|
29
29
|
this.serialized = serialized;
|
|
30
|
-
this.encoded_rlp = "0x" + serialized
|
|
30
|
+
this.encoded_rlp = "0x" + serialized;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
static new(serialized: string): Deserializer {
|
|
@@ -38,19 +38,22 @@ export class Deserializer {
|
|
|
38
38
|
const decodedRlp = decodeRlp(this.encoded_rlp);
|
|
39
39
|
|
|
40
40
|
const data: TransactionData = {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
data: Deserializer.parseHex(decodedRlp[7] as string),
|
|
41
|
+
nonce: Deserializer.parseNumber(decodedRlp[0] as string),
|
|
42
|
+
gasPrice: Deserializer.parseNumber(decodedRlp[1] as string).toString(),
|
|
43
|
+
gasLimit: Deserializer.parseNumber(decodedRlp[2] as string).toString(),
|
|
44
|
+
to: Deserializer.parseAddress(decodedRlp[3] as string),
|
|
45
|
+
value: Deserializer.parseBigNumber(decodedRlp[4] as string),
|
|
46
|
+
data: Deserializer.parseHex(decodedRlp[5] as string),
|
|
48
47
|
};
|
|
49
48
|
|
|
50
|
-
if (decodedRlp.length
|
|
51
|
-
data["v"] = Deserializer.parseNumber(decodedRlp[
|
|
52
|
-
data["r"] = Deserializer.parseHex(decodedRlp[
|
|
53
|
-
data["s"] = Deserializer.parseHex(decodedRlp[
|
|
49
|
+
if (decodedRlp.length >= 9) {
|
|
50
|
+
data["v"] = Deserializer.parseNumber(decodedRlp[6] as string) - (Network.get().chainId() * 2 + 35);
|
|
51
|
+
data["r"] = Deserializer.parseHex(decodedRlp[7] as string);
|
|
52
|
+
data["s"] = Deserializer.parseHex(decodedRlp[8] as string);
|
|
53
|
+
|
|
54
|
+
if (decodedRlp.length === 10) {
|
|
55
|
+
data.legacySecondSignature = decodedRlp[9].toString().slice(2);
|
|
56
|
+
}
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
const transaction = this.guessTransactionFromData(data);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { ITransaction, ITransactionBuilder, TransactionData } from "@/types";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import BigNumber from "bignumber.js";
|
|
4
4
|
import { PrivateKey } from "@/identities/PrivateKey";
|
|
5
5
|
import { PublicKey } from "@/identities/PublicKey";
|
|
6
|
-
import BigNumber from "bignumber.js";
|
|
7
6
|
|
|
8
7
|
export abstract class AbstractTransactionBuilder<T extends ITransactionBuilder<T>> implements ITransactionBuilder<T> {
|
|
9
8
|
public transaction: ITransaction;
|
|
@@ -14,20 +13,19 @@ export abstract class AbstractTransactionBuilder<T extends ITransactionBuilder<T
|
|
|
14
13
|
value: "0",
|
|
15
14
|
senderPublicKey: "",
|
|
16
15
|
gasPrice: "5",
|
|
16
|
+
gasLimit: 1_000_000,
|
|
17
17
|
nonce: "1",
|
|
18
|
-
network: Network.get().chainId(),
|
|
19
|
-
gas: 1_000_000,
|
|
20
18
|
data: "",
|
|
21
19
|
},
|
|
22
20
|
);
|
|
23
21
|
}
|
|
24
22
|
|
|
25
|
-
public
|
|
26
|
-
if (
|
|
27
|
-
|
|
23
|
+
public gasLimit(gasLimit: string | BigNumber): T {
|
|
24
|
+
if (gasLimit instanceof BigNumber) {
|
|
25
|
+
gasLimit = gasLimit.toFixed();
|
|
28
26
|
}
|
|
29
27
|
|
|
30
|
-
this.transaction.data.
|
|
28
|
+
this.transaction.data.gasLimit = gasLimit;
|
|
31
29
|
|
|
32
30
|
return this as unknown as T;
|
|
33
31
|
}
|
|
@@ -54,12 +52,6 @@ export abstract class AbstractTransactionBuilder<T extends ITransactionBuilder<T
|
|
|
54
52
|
return this as unknown as T;
|
|
55
53
|
}
|
|
56
54
|
|
|
57
|
-
public network(network: number): T {
|
|
58
|
-
this.transaction.data.network = network;
|
|
59
|
-
|
|
60
|
-
return this as unknown as T;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
55
|
public async sign(passphrase: string): Promise<T> {
|
|
64
56
|
this.transaction.data.senderPublicKey = PublicKey.fromPassphrase(passphrase).publicKey;
|
|
65
57
|
|
|
@@ -73,7 +65,7 @@ export abstract class AbstractTransactionBuilder<T extends ITransactionBuilder<T
|
|
|
73
65
|
public async legacySecondSign(passphrase: string, secondPassprase: string): Promise<T> {
|
|
74
66
|
await this.sign(passphrase);
|
|
75
67
|
|
|
76
|
-
|
|
68
|
+
await this.transaction.legacySecondSign(PrivateKey.fromPassphrase(secondPassprase));
|
|
77
69
|
|
|
78
70
|
return this as unknown as T;
|
|
79
71
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { ITransaction, TransactionData } from "@/types";
|
|
2
2
|
|
|
3
3
|
import { Address } from "@/identities/Address";
|
|
4
|
-
import
|
|
4
|
+
import BigNumber from "bignumber.js";
|
|
5
5
|
import { PrivateKey } from "@/identities/PrivateKey";
|
|
6
6
|
import { PublicKey } from "@/identities/PublicKey";
|
|
7
7
|
import { Serializer } from "@/transactions/Serializer";
|
|
8
8
|
import { TransactionUtils } from "@/utils/TransactionUtils";
|
|
9
|
-
import BigNumber from "bignumber.js";
|
|
10
9
|
|
|
11
10
|
export abstract class AbstractTransaction implements ITransaction {
|
|
12
11
|
public data: TransactionData;
|
|
@@ -67,9 +66,8 @@ export abstract class AbstractTransaction implements ITransaction {
|
|
|
67
66
|
public toObject(): TransactionData {
|
|
68
67
|
return [
|
|
69
68
|
"gasPrice",
|
|
70
|
-
"network",
|
|
71
69
|
"hash",
|
|
72
|
-
"
|
|
70
|
+
"gasLimit",
|
|
73
71
|
"nonce",
|
|
74
72
|
"senderPublicKey",
|
|
75
73
|
"legacySecondSignature",
|
|
@@ -106,7 +104,7 @@ export abstract class AbstractTransaction implements ITransaction {
|
|
|
106
104
|
}
|
|
107
105
|
|
|
108
106
|
protected recoverPublicKey(): PublicKey {
|
|
109
|
-
if (
|
|
107
|
+
if (this.data.v === undefined || !this.data.r || !this.data.s) {
|
|
110
108
|
throw new Error("Transaction signature is missing");
|
|
111
109
|
}
|
|
112
110
|
|
|
@@ -114,7 +112,7 @@ export abstract class AbstractTransaction implements ITransaction {
|
|
|
114
112
|
Buffer.from(this.hash(true), "hex"),
|
|
115
113
|
BigInt(`0x${this.data.r}`),
|
|
116
114
|
BigInt(`0x${this.data.s}`),
|
|
117
|
-
this.data.v
|
|
115
|
+
this.data.v,
|
|
118
116
|
);
|
|
119
117
|
}
|
|
120
118
|
}
|
package/src/types.ts
CHANGED
|
@@ -3,10 +3,9 @@ import { Result } from "ethers";
|
|
|
3
3
|
|
|
4
4
|
export interface TransactionData {
|
|
5
5
|
gasPrice?: string | null;
|
|
6
|
-
|
|
6
|
+
gasLimit?: string | null;
|
|
7
7
|
legacySecondSignature?: number | string | null;
|
|
8
8
|
hash?: string | null;
|
|
9
|
-
gas?: string | null;
|
|
10
9
|
nonce?: number | string | null;
|
|
11
10
|
senderPublicKey?: string | null;
|
|
12
11
|
to?: string | null;
|
|
@@ -50,11 +49,10 @@ export interface ITransaction {
|
|
|
50
49
|
export interface ITransactionBuilder<T extends ITransactionBuilder<T>> {
|
|
51
50
|
transaction: ITransaction;
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
gasLimit(gasLimit: string | BigNumber): T;
|
|
54
53
|
gasPrice(gasPrice: string | BigNumber): T;
|
|
55
54
|
to(to: string): T;
|
|
56
55
|
nonce(nonce: string): T;
|
|
57
|
-
network(network: number): T;
|
|
58
56
|
sign(passphrase: string): Promise<T>;
|
|
59
57
|
legacySecondSign(passphrase: string, secondPassphrase: string): Promise<T>;
|
|
60
58
|
verify(): boolean;
|
package/src/utils/Message.ts
CHANGED
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
import { encodeRlp, keccak256, toBeArray } from "ethers";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { Network } from "@/configuration/Network";
|
|
3
4
|
import { TransactionData } from "@/types";
|
|
4
5
|
|
|
5
6
|
export class TransactionUtils {
|
|
6
7
|
public static toBuffer(transaction: TransactionData, skipSignature = false): Buffer {
|
|
7
8
|
const fields = [
|
|
8
|
-
toBeArray(transaction["network"] ?? 0),
|
|
9
9
|
toBeArray(transaction["nonce"] ? transaction["nonce"] : 0),
|
|
10
|
-
toBeArray(0),
|
|
11
10
|
toBeArray(transaction["gasPrice"] ?? 0),
|
|
12
|
-
toBeArray(transaction["
|
|
11
|
+
toBeArray(transaction["gasLimit"] ?? 0),
|
|
13
12
|
transaction["to"] ?? "0x",
|
|
14
13
|
toBeArray(transaction["value"] ? transaction["value"] : 0),
|
|
15
14
|
transaction["data"] && transaction["data"].startsWith("0x")
|
|
16
15
|
? transaction["data"]
|
|
17
16
|
: "0x" + (transaction["data"] ?? ""),
|
|
18
|
-
[],
|
|
19
17
|
];
|
|
20
18
|
|
|
21
|
-
if (!skipSignature && transaction["v"] && transaction["r"] && transaction["s"]) {
|
|
22
|
-
fields.push(toBeArray(transaction["v"]
|
|
19
|
+
if (!skipSignature && transaction["v"] !== undefined && transaction["r"] && transaction["s"]) {
|
|
20
|
+
fields.push(toBeArray(transaction["v"] + Network.get().chainId() * 2 + 35));
|
|
23
21
|
fields.push("0x" + transaction["r"]);
|
|
24
22
|
fields.push("0x" + transaction["s"]);
|
|
25
23
|
|
|
26
24
|
if (transaction.legacySecondSignature) {
|
|
27
25
|
fields.push(`0x${transaction.legacySecondSignature}`);
|
|
28
26
|
}
|
|
27
|
+
} else {
|
|
28
|
+
// Push chainId + 0s for r and s
|
|
29
|
+
fields.push(toBeArray(Network.get().chainId()), toBeArray(0), toBeArray(0));
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
// TODO: second signature handling
|
|
33
|
+
|
|
31
34
|
const encoded = encodeRlp(fields);
|
|
32
35
|
|
|
33
|
-
const payload =
|
|
36
|
+
const payload = encoded.substring(2);
|
|
34
37
|
|
|
35
38
|
return Buffer.from(payload, "hex");
|
|
36
39
|
}
|
|
@@ -7,5 +7,6 @@
|
|
|
7
7
|
"validatorPublicKey": "b209f4a7454ae17c5808991dffbf204c747b851f351d2ce72a6e18903d0e2f609e0328ebbc3fb97cd4d3660b4bc156f1",
|
|
8
8
|
"validatorPrivateKey": "6ec4993df152b10e672567c1fdf854a4cee50708fa30986a7d9b259673099175"
|
|
9
9
|
},
|
|
10
|
-
"passphrase": "found lobster oblige describe ready addict body brave live vacuum display salute lizard combine gift resemble race senior quality reunion proud tell adjust angle"
|
|
10
|
+
"passphrase": "found lobster oblige describe ready addict body brave live vacuum display salute lizard combine gift resemble race senior quality reunion proud tell adjust angle",
|
|
11
|
+
"secondPassphrase": "gold favorite math anchor detect march purpose such sausage crucial reform novel connect misery update episode invite salute barely garbage exclude winner visa cruise"
|
|
11
12
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"message": "Hello, world!",
|
|
3
3
|
"publicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
4
|
-
"signature": "
|
|
4
|
+
"signature": "0e2e53409be748834cac44052817ecef569b429a0492aa6bbc0d934eb71a09547e77aeef33d45669bbcba0498149f0e2b637fe8905186e08a5410c6f2b013bb400"
|
|
5
5
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"data": {
|
|
3
3
|
"serialized": "1c104665257d4dea61c4654e74c6c0f6cd0a398905781c3040bea67dc641a66da046d718d04b2331f3b0561808549ed3f3f0d867a284acf6b334869078df7a9136",
|
|
4
4
|
"message": "02ea822710018085012a05f200825208946f0182a0cc707b055322ccf6d4cb6a5aff1aeb228405f5e10080c0",
|
|
5
|
-
"v":
|
|
5
|
+
"v": 1,
|
|
6
6
|
"r": "104665257d4dea61c4654e74c6c0f6cd0a398905781c3040bea67dc641a66da0",
|
|
7
7
|
"s": "46d718d04b2331f3b0561808549ed3f3f0d867a284acf6b334869078df7a9136"
|
|
8
8
|
},
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "200000",
|
|
7
6
|
"to": "0xE536720791A7DaDBeBdBCD8c8546fb0791a11901",
|
|
8
7
|
"value": "0",
|
|
9
8
|
"data": "a9059cbb00000000000000000000000027fa7caffaae77ddb9ab232fdbda56d5e5af23930000000000000000000000000000000000000000000000000000000000000064",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 0,
|
|
11
|
+
"r": "14060f3bca79284de0a4bc8b4cf85a3377b058e3d5ee90b11b36c1e7eb76b3e6",
|
|
12
|
+
"s": "77a5c3b2ab083a0ff73d81ac00c7e2fb2c6bcd51276151b8745ef771379e22f2",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "244ab0d2ee5ebf4d503dd8e5d81222eadba8b2299c12ecee1649fcd2dd6e4714"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f8ac0185012a05f20083030d4094e536720791a7dadbebdbcd8c8546fb0791a1190180b844a9059cbb00000000000000000000000027fa7caffaae77ddb9ab232fdbda56d5e5af23930000000000000000000000000000000000000000000000000000000000000064825c6ba014060f3bca79284de0a4bc8b4cf85a3377b058e3d5ee90b11b36c1e7eb76b3e6a077a5c3b2ab083a0ff73d81ac00c7e2fb2c6bcd51276151b8745ef771379e22f2"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "200000",
|
|
7
6
|
"to": "0x00EFd0D4639191C49908A7BddbB9A11A994A8527",
|
|
8
7
|
"value": "0",
|
|
9
8
|
"data": "084ce7080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 0,
|
|
11
|
+
"r": "40e02ce4215d78cc865d552c8f44f5a7c80cb9e671e626f1d519aa694bb4dd78",
|
|
12
|
+
"s": "7840c867134eba65bad3e100b4adaae41157ed89d7f5dee60a0b7846b1c341d2",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "e547e91308efade7ebf92b47f246f0df4effdbfbbc46e4954830aaba70c0f578"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f8ec0185012a05f20083030d409400efd0d4639191c49908a7bddbb9a11a994a852780b884084ce7080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000825c6ba040e02ce4215d78cc865d552c8f44f5a7c80cb9e671e626f1d519aa694bb4dd78a07840c867134eba65bad3e100b4adaae41157ed89d7f5dee60a0b7846b1c341d2"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "200000",
|
|
7
6
|
"to": "0x00EFd0D4639191C49908A7BddbB9A11A994A8527",
|
|
8
7
|
"value": "100000",
|
|
9
8
|
"data": "084ce7080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006f0182a0cc707b055322ccf6d4cb6a5aff1aeb22000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000186a0",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 1,
|
|
11
|
+
"r": "49e0148931a5c7bdece9dfc1ee98192ad114d5c15545058ee7c3a8c232b3ba68",
|
|
12
|
+
"s": "62051ddcb47aefed5c6945dfb9a6ceb691a5d8d088d4a01275b9a24dfa174404",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "2f2ff06ba09315915d2ac86f12252a9a7ba1fa2a4b3ab0d732df5ee7d53b2e49"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f9012f0185012a05f20083030d409400efd0d4639191c49908a7bddbb9a11a994a8527830186a0b8c4084ce7080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006f0182a0cc707b055322ccf6d4cb6a5aff1aeb22000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000186a0825c6ca049e0148931a5c7bdece9dfc1ee98192ad114d5c15545058ee7c3a8c232b3ba68a062051ddcb47aefed5c6945dfb9a6ceb691a5d8d088d4a01275b9a24dfa174404"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "200000",
|
|
7
6
|
"to": "0x00EFd0D4639191C49908A7BddbB9A11A994A8527",
|
|
8
7
|
"value": "300000",
|
|
9
8
|
"data": "084ce708000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006f0182a0cc707b055322ccf6d4cb6a5aff1aeb22000000000000000000000000c3bbe9b1cee1ff85ad72b87414b0e9b7f2366763000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000030d40",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 1,
|
|
11
|
+
"r": "9720cd5959af4fc513ec8f9c55a3f3b53a1f24a3a577e8132cadd81c116c6c82",
|
|
12
|
+
"s": "3411570db14d5e1a6673b2e80fe6cc22bf67752808ac4752c8bcfd9732e33dc8",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "f603e0b5fe0743021d2879ffe53ace7b40c9d823edbf058bd25a045753c82aa9"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f901700185012a05f20083030d409400efd0d4639191c49908a7bddbb9a11a994a8527830493e0b90104084ce708000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006f0182a0cc707b055322ccf6d4cb6a5aff1aeb22000000000000000000000000c3bbe9b1cee1ff85ad72b87414b0e9b7f2366763000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000030d40825c6ca09720cd5959af4fc513ec8f9c55a3f3b53a1f24a3a577e8132cadd81c116c6c82a03411570db14d5e1a6673b2e80fe6cc22bf67752808ac4752c8bcfd9732e33dc8"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "21000",
|
|
7
6
|
"to": "0x6F0182a0cc707b055322CcF6d4CB6a5Aff1aEb22",
|
|
8
7
|
"value": "0",
|
|
9
8
|
"data": "",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 1,
|
|
11
|
+
"r": "a645cd813052b8a317bbd4f5ae99cfbaf99e15ea96b74d1a971eefb7341cd16b",
|
|
12
|
+
"s": "5008e178fe9f6226815af300aebc68fbb1e5e906f1a989f8ee35138a3614d4cb",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "73570e6c367ee1b23339c6df4ba79b23fd12af3811c2c8f23fa578d7ced2a95c"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f8660185012a05f200825208946f0182a0cc707b055322ccf6d4cb6a5aff1aeb228080825c6ca0a645cd813052b8a317bbd4f5ae99cfbaf99e15ea96b74d1a971eefb7341cd16ba05008e178fe9f6226815af300aebc68fbb1e5e906f1a989f8ee35138a3614d4cb"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "21000",
|
|
7
6
|
"to": "0x6F0182a0cc707b055322CcF6d4CB6a5Aff1aEb22",
|
|
8
7
|
"value": "10000000000000000000",
|
|
9
8
|
"data": "",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 1,
|
|
11
|
+
"r": "2ee46aba6c285231d92bb3eb7c348ac01fa5d4e1f057ad8ba47d4c5f120c9090",
|
|
12
|
+
"s": "559b3971e492cfd8b1dc1fecdefcc0ed99619ffc1da09e12144880070134e6b1",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "5546be3e83984644030daa06ae8445d8367ad9e503bd7b87e3761d3ab676e75e"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f86e0185012a05f200825208946f0182a0cc707b055322ccf6d4cb6a5aff1aeb22888ac7230489e8000080825c6ca02ee46aba6c285231d92bb3eb7c348ac01fa5d4e1f057ad8ba47d4c5f120c9090a0559b3971e492cfd8b1dc1fecdefcc0ed99619ffc1da09e12144880070134e6b1"
|
|
18
18
|
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "21000",
|
|
7
6
|
"to": "0x6F0182a0cc707b055322CcF6d4CB6a5Aff1aEb22",
|
|
8
7
|
"value": "100000000",
|
|
9
8
|
"data": "",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 0,
|
|
11
|
+
"r": "a1f79cb40a4bb409d6cebd874002ceda3ec0ccb614c1d8155f5c2f7f798135f9",
|
|
12
|
+
"s": "2d2ef517aaf6feed747385e260c206f46b2ce9d6b2a585427a111685a097bd79",
|
|
13
|
+
"legacySecondSignature": "094b33b2d10c4d48cff9a9b10f79990c9a902a762b00d2f2a4d2ddad7823b59332b2da193265068c67cefea9ca8bc84e47acec406f3300a0a10b77a56ea8c18801",
|
|
13
14
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
15
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
16
|
-
"legacySecondSignature": "104665257d4dea61c4654e74c6c0f6cd0a398905781c3040bea67dc641a66da046d718d04b2331f3b0561808549ed3f3f0d867a284acf6b334869078df7a91361c"
|
|
16
|
+
"hash": "a39435ec5de418e77479856d06a653efc171afe43e091472af22ee359eeb83be"
|
|
17
17
|
},
|
|
18
|
-
"serialized": "
|
|
18
|
+
"serialized": "f8ad0185012a05f200825208946f0182a0cc707b055322ccf6d4cb6a5aff1aeb228405f5e10080825c6ba0a1f79cb40a4bb409d6cebd874002ceda3ec0ccb614c1d8155f5c2f7f798135f9a02d2ef517aaf6feed747385e260c206f46b2ce9d6b2a585427a111685a097bd79b841094b33b2d10c4d48cff9a9b10f79990c9a902a762b00d2f2a4d2ddad7823b59332b2da193265068c67cefea9ca8bc84e47acec406f3300a0a10b77a56ea8c18801"
|
|
19
19
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "21000",
|
|
7
6
|
"to": "0x6F0182a0cc707b055322CcF6d4CB6a5Aff1aEb22",
|
|
8
7
|
"value": "100000000",
|
|
9
8
|
"data": "",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 0,
|
|
11
|
+
"r": "a1f79cb40a4bb409d6cebd874002ceda3ec0ccb614c1d8155f5c2f7f798135f9",
|
|
12
|
+
"s": "2d2ef517aaf6feed747385e260c206f46b2ce9d6b2a585427a111685a097bd79",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "a39435ec5de418e77479856d06a653efc171afe43e091472af22ee359eeb83be"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f86a0185012a05f200825208946f0182a0cc707b055322ccf6d4cb6a5aff1aeb228405f5e10080825c6ba0a1f79cb40a4bb409d6cebd874002ceda3ec0ccb614c1d8155f5c2f7f798135f9a02d2ef517aaf6feed747385e260c206f46b2ce9d6b2a585427a111685a097bd79"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "200000",
|
|
7
6
|
"to": "0x535B3D7A252fa034Ed71F0C53ec0C6F784cB64E1",
|
|
8
7
|
"value": "0",
|
|
9
8
|
"data": "3174b689",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 0,
|
|
11
|
+
"r": "7e05d686131973a9fbda9028f9df5702d9a229823b183caac03ec3a874ccec52",
|
|
12
|
+
"s": "1980fbc959612d8c7b97f6f16742259635f42a2039839a81aaaeb7ae6930a5f5",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "38d018d22e2cef185dc3c2f5d25ec63535160d8dfeaf78da8db719cb7ffc730d"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f86b0185012a05f20083030d4094535b3d7a252fa034ed71f0c53ec0c6f784cb64e180843174b689825c6ba07e05d686131973a9fbda9028f9df5702d9a229823b183caac03ec3a874ccec52a01980fbc959612d8c7b97f6f16742259635f42a2039839a81aaaeb7ae6930a5f5"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "200000",
|
|
7
6
|
"to": "0x2c1DE3b4Dbb4aDebEbB5dcECAe825bE2a9fc6eb6",
|
|
8
7
|
"value": "0",
|
|
9
8
|
"data": "36a94134000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000076669787475726500000000000000000000000000000000000000000000000000",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 1,
|
|
11
|
+
"r": "80c77145c6b5450f4805e7c7b649b49653d151ca74275991ae49731084e35049",
|
|
12
|
+
"s": "1a25084fb0e997f93d9cc84472281f01c3e1fdeb15c29abf24f3469aeaac87c1",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "0fd23793ced45b59f54d6250b0d74860fb5960ffc971457c349032cc33cf560a"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f8cc0185012a05f20083030d40942c1de3b4dbb4adebebb5dcecae825be2a9fc6eb680b86436a94134000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000076669787475726500000000000000000000000000000000000000000000000000825c6ca080c77145c6b5450f4805e7c7b649b49653d151ca74275991ae49731084e35049a01a25084fb0e997f93d9cc84472281f01c3e1fdeb15c29abf24f3469aeaac87c1"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "200000",
|
|
7
6
|
"to": "0x2c1DE3b4Dbb4aDebEbB5dcECAe825bE2a9fc6eb6",
|
|
8
7
|
"value": "0",
|
|
9
8
|
"data": "ebed6dab",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 0,
|
|
11
|
+
"r": "9092b27fd1ae599b3248cc0fb3d652b63f77537d0d8d75695394cbb4f2b42d12",
|
|
12
|
+
"s": "7d887c8e4b9a989bfb35abe87f6f5850669596b1d4bbc1b42a7a8a04ea982477",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "204c05f0590157fd71377130ddc962928a53c5b178302061969d294a43ff6909"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f86b0185012a05f20083030d40942c1de3b4dbb4adebebb5dcecae825be2a9fc6eb68084ebed6dab825c6ba09092b27fd1ae599b3248cc0fb3d652b63f77537d0d8d75695394cbb4f2b42d12a07d887c8e4b9a989bfb35abe87f6f5850669596b1d4bbc1b42a7a8a04ea982477"
|
|
18
18
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"data": {
|
|
3
|
-
"network": 10000,
|
|
4
3
|
"nonce": "1",
|
|
5
4
|
"gasPrice": "5000000000",
|
|
6
|
-
"
|
|
5
|
+
"gasLimit": "200000",
|
|
7
6
|
"to": "0x535B3D7A252fa034Ed71F0C53ec0C6F784cB64E1",
|
|
8
|
-
"value": "
|
|
7
|
+
"value": "0",
|
|
9
8
|
"data": "602a9eee0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003030954f46d6097a1d314e900e66e11e0dad0a57cd03e04ec99f0dedd1c765dcb11e6d7fa02e22cf40f9ee23d9cc1c062400000000000000000000000000000000",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
9
|
+
"network": 11812,
|
|
10
|
+
"v": 0,
|
|
11
|
+
"r": "047b1a36778d3a7c88b3b00623bf1c2be4875f8220df429ee6f661f8722f6dcd",
|
|
12
|
+
"s": "484b805c306d017a107b1bd8b46115282b60f956fa04cf9d62a160e6d53a11ef",
|
|
13
13
|
"senderPublicKey": "0243333347c8cbf4e3cbc7a96964181d02a2b0c854faa2fef86b4b8d92afcf473d",
|
|
14
14
|
"from": "0x1E6747BEAa5B4076a6A98D735DF8c35a70D18Bdd",
|
|
15
|
-
"hash": "
|
|
15
|
+
"hash": "997ffdd531ff879b9cdc8c0f147110c5696b6c5a11607566d846beecaf41b4ed"
|
|
16
16
|
},
|
|
17
|
-
"serialized": "
|
|
17
|
+
"serialized": "f8ec0185012a05f20083030d4094535b3d7a252fa034ed71f0c53ec0c6f784cb64e180b884602a9eee0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003030954f46d6097a1d314e900e66e11e0dad0a57cd03e04ec99f0dedd1c765dcb11e6d7fa02e22cf40f9ee23d9cc1c062400000000000000000000000000000000825c6ba0047b1a36778d3a7c88b3b00623bf1c2be4875f8220df429ee6f661f8722f6dcda0484b805c306d017a107b1bd8b46115282b60f956fa04cf9d62a160e6d53a11ef"
|
|
18
18
|
}
|