@xyo-network/boundwitness-builder 5.1.22 → 5.1.24
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/package.json +19 -16
- package/dist/browser/spec/Builder.perf.spec.d.ts +0 -2
- package/dist/browser/spec/Builder.perf.spec.d.ts.map +0 -1
- package/dist/browser/spec/Builder.sequence.spec.d.ts +0 -2
- package/dist/browser/spec/Builder.sequence.spec.d.ts.map +0 -1
- package/dist/browser/spec/Builder.spec.d.ts +0 -2
- package/dist/browser/spec/Builder.spec.d.ts.map +0 -1
- package/dist/neutral/spec/Builder.perf.spec.d.ts +0 -2
- package/dist/neutral/spec/Builder.perf.spec.d.ts.map +0 -1
- package/dist/neutral/spec/Builder.sequence.spec.d.ts +0 -2
- package/dist/neutral/spec/Builder.sequence.spec.d.ts.map +0 -1
- package/dist/neutral/spec/Builder.spec.d.ts +0 -2
- package/dist/neutral/spec/Builder.spec.d.ts.map +0 -1
- package/dist/node/spec/Builder.perf.spec.d.ts +0 -2
- package/dist/node/spec/Builder.perf.spec.d.ts.map +0 -1
- package/dist/node/spec/Builder.sequence.spec.d.ts +0 -2
- package/dist/node/spec/Builder.sequence.spec.d.ts.map +0 -1
- package/dist/node/spec/Builder.spec.d.ts +0 -2
- package/dist/node/spec/Builder.spec.d.ts.map +0 -1
- package/src/spec/Builder.perf.spec.ts +0 -31
- package/src/spec/Builder.sequence.spec.ts +0 -175
- package/src/spec/Builder.spec.ts +0 -85
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/boundwitness-builder",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.24",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -30,29 +30,32 @@
|
|
|
30
30
|
"types": "dist/neutral/index.d.ts",
|
|
31
31
|
"files": [
|
|
32
32
|
"dist",
|
|
33
|
-
"src"
|
|
33
|
+
"src",
|
|
34
|
+
"!**/*.bench.*",
|
|
35
|
+
"!**/*.spec.*",
|
|
36
|
+
"!**/*.test.*"
|
|
34
37
|
],
|
|
35
38
|
"dependencies": {
|
|
36
|
-
"@xylabs/arraybuffer": "~5.0.
|
|
37
|
-
"@xylabs/assert": "~5.0.
|
|
38
|
-
"@xylabs/hex": "~5.0.
|
|
39
|
-
"@xyo-network/account-model": "~5.1.
|
|
40
|
-
"@xyo-network/boundwitness-model": "~5.1.
|
|
41
|
-
"@xyo-network/hash": "~5.1.
|
|
42
|
-
"@xyo-network/payload": "~5.1.
|
|
43
|
-
"@xyo-network/payload-builder": "~5.1.
|
|
44
|
-
"@xyo-network/payload-model": "~5.1.
|
|
39
|
+
"@xylabs/arraybuffer": "~5.0.37",
|
|
40
|
+
"@xylabs/assert": "~5.0.37",
|
|
41
|
+
"@xylabs/hex": "~5.0.37",
|
|
42
|
+
"@xyo-network/account-model": "~5.1.24",
|
|
43
|
+
"@xyo-network/boundwitness-model": "~5.1.24",
|
|
44
|
+
"@xyo-network/hash": "~5.1.24",
|
|
45
|
+
"@xyo-network/payload": "~5.1.24",
|
|
46
|
+
"@xyo-network/payload-builder": "~5.1.24",
|
|
47
|
+
"@xyo-network/payload-model": "~5.1.24",
|
|
45
48
|
"async-mutex": "~0.5.0"
|
|
46
49
|
},
|
|
47
50
|
"devDependencies": {
|
|
48
51
|
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
49
52
|
"@xylabs/tsconfig": "~7.2.8",
|
|
50
|
-
"@xylabs/vitest-extended": "~5.0.
|
|
51
|
-
"@xyo-network/account": "~5.1.
|
|
52
|
-
"@xyo-network/elliptic": "~5.1.
|
|
53
|
-
"@xyo-network/wallet": "~5.1.
|
|
53
|
+
"@xylabs/vitest-extended": "~5.0.37",
|
|
54
|
+
"@xyo-network/account": "~5.1.24",
|
|
55
|
+
"@xyo-network/elliptic": "~5.1.24",
|
|
56
|
+
"@xyo-network/wallet": "~5.1.24",
|
|
54
57
|
"typescript": "~5.9.3",
|
|
55
|
-
"vitest": "~4.0.
|
|
58
|
+
"vitest": "~4.0.10"
|
|
56
59
|
},
|
|
57
60
|
"publishConfig": {
|
|
58
61
|
"access": "public"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.perf.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.perf.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.sequence.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.sequence.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.perf.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.perf.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.sequence.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.sequence.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.perf.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.perf.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.sequence.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.sequence.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Builder.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import '@xylabs/vitest-extended'
|
|
2
|
-
|
|
3
|
-
import { Account } from '@xyo-network/account'
|
|
4
|
-
import { PayloadBuilder } from '@xyo-network/payload'
|
|
5
|
-
import {
|
|
6
|
-
describe, expect, it,
|
|
7
|
-
} from 'vitest'
|
|
8
|
-
|
|
9
|
-
import { BoundWitnessBuilder } from '../BoundWitnessBuilder.ts'
|
|
10
|
-
|
|
11
|
-
const schema = 'network.xyo.test'
|
|
12
|
-
|
|
13
|
-
const payloadsPromise = (async () =>
|
|
14
|
-
await Promise.all(
|
|
15
|
-
Array(5000)
|
|
16
|
-
.fill(Math.random())
|
|
17
|
-
.map(value => new PayloadBuilder({ schema }).fields({ value }).build()),
|
|
18
|
-
))()
|
|
19
|
-
|
|
20
|
-
describe('BoundWitnessBuilder-Perf', () => {
|
|
21
|
-
it('build', async () => {
|
|
22
|
-
const startTime = Date.now()
|
|
23
|
-
const bw = new BoundWitnessBuilder()
|
|
24
|
-
.payloads(await payloadsPromise)
|
|
25
|
-
.signer(await Account.random())
|
|
26
|
-
.build()
|
|
27
|
-
const duration = Date.now() - startTime
|
|
28
|
-
expect(bw).toBeDefined()
|
|
29
|
-
expect(duration).toBeLessThan(10_000)
|
|
30
|
-
})
|
|
31
|
-
})
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import '@xylabs/vitest-extended'
|
|
2
|
-
|
|
3
|
-
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
4
|
-
import { HDWallet } from '@xyo-network/wallet'
|
|
5
|
-
import {
|
|
6
|
-
afterAll,
|
|
7
|
-
beforeAll,
|
|
8
|
-
describe, expect, it,
|
|
9
|
-
vi,
|
|
10
|
-
} from 'vitest'
|
|
11
|
-
|
|
12
|
-
import { BoundWitnessBuilder } from '../BoundWitnessBuilder.ts'
|
|
13
|
-
|
|
14
|
-
const payloadSequences = [
|
|
15
|
-
{
|
|
16
|
-
payloads: [{ salt: '0', schema: 'network.xyo.id' }],
|
|
17
|
-
payloadHashes: [
|
|
18
|
-
'ada56ff753c0c9b2ce5e1f823eda9ac53501db2843d8883d6cf6869c18ef7f65',
|
|
19
|
-
],
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
payloads: [{ salt: '1', schema: 'network.xyo.id' }],
|
|
23
|
-
payloadHashes: [
|
|
24
|
-
'3a3b8deca568ff820b0b7c8714fbdf82b40fb54f4b15aca8745e06b81291558e',
|
|
25
|
-
],
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
payloads: [{ salt: '2', schema: 'network.xyo.id' }, { salt: '3', schema: 'network.xyo.id' }],
|
|
29
|
-
payloadHashes: [
|
|
30
|
-
'1a40207fab71fc184e88557d5bee6196cbbb49f11f73cda85000555a628a8f0a',
|
|
31
|
-
'c4bce9b4d3239fcc9a248251d1bef1ba7677e3c0c2c43ce909a6668885b519e6',
|
|
32
|
-
],
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
payloads: [{ salt: '4', schema: 'network.xyo.id' }, { salt: '5', schema: 'network.xyo.id' }],
|
|
36
|
-
payloadHashes: [
|
|
37
|
-
'59c0374dd801ae64ddddba27320ca028d7bd4b3d460f6674c7da1b4aa9c956d6',
|
|
38
|
-
'5d9b8e84bc824280fcbb6290904c2edbb401d626ad9789717c0a23d1cab937b0',
|
|
39
|
-
],
|
|
40
|
-
},
|
|
41
|
-
]
|
|
42
|
-
|
|
43
|
-
const wallet1Mnemonic
|
|
44
|
-
= 'report door cry include salad horn recipe luxury access pledge husband maple busy double olive'
|
|
45
|
-
const wallet1Path = "m/44'/60'/0'/0/0"
|
|
46
|
-
const wallet1Address = '25524Ca99764D76CA27604Bb9727f6e2f27C4533'
|
|
47
|
-
|
|
48
|
-
const wallet2Mnemonic
|
|
49
|
-
= 'turn you orphan sauce act patient village entire lava transfer height sense enroll quit idle'
|
|
50
|
-
const wallet2Path = "m/44'/60'/0'/0/0"
|
|
51
|
-
const wallet2Address = 'FdCeD2c3549289049BeBf743fB721Df211633fBF'
|
|
52
|
-
|
|
53
|
-
const boundWitnessSequenceTestCase1 = {
|
|
54
|
-
mnemonics: [wallet1Mnemonic],
|
|
55
|
-
paths: [wallet1Path],
|
|
56
|
-
addresses: [wallet1Address],
|
|
57
|
-
payloads: payloadSequences[0].payloads,
|
|
58
|
-
payloadHashes: payloadSequences[0].payloadHashes,
|
|
59
|
-
previousHashes: [null],
|
|
60
|
-
dataHash: '750113b9826ba94b622667b06cd8467f1330837581c28907c16160fec20d0a4b',
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const boundWitnessSequenceTestCase2 = {
|
|
64
|
-
mnemonics: [wallet2Mnemonic],
|
|
65
|
-
paths: [wallet2Path],
|
|
66
|
-
addresses: [wallet2Address],
|
|
67
|
-
payloads: payloadSequences[1].payloads,
|
|
68
|
-
payloadHashes: payloadSequences[1].payloadHashes,
|
|
69
|
-
previousHashes: [null],
|
|
70
|
-
dataHash: 'bacd010d79126a154339e59c11c5b46be032c3bef65626f83bcafe968dc6dd1b',
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const boundWitnessSequenceTestCase3 = {
|
|
74
|
-
mnemonics: [wallet1Mnemonic, wallet2Mnemonic],
|
|
75
|
-
paths: [wallet1Path, wallet2Path],
|
|
76
|
-
addresses: [wallet1Address, wallet2Address],
|
|
77
|
-
payloads: payloadSequences[2].payloads,
|
|
78
|
-
payloadHashes: payloadSequences[2].payloadHashes,
|
|
79
|
-
previousHashes: [
|
|
80
|
-
'750113b9826ba94b622667b06cd8467f1330837581c28907c16160fec20d0a4b',
|
|
81
|
-
'bacd010d79126a154339e59c11c5b46be032c3bef65626f83bcafe968dc6dd1b',
|
|
82
|
-
],
|
|
83
|
-
dataHash: '73245ef73517913f4b57c12d56d81199968ecd8fbefea9ddc474f43dd6cfa8c8',
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const boundWitnessSequenceTestCase4 = {
|
|
87
|
-
mnemonics: [wallet1Mnemonic, wallet2Mnemonic],
|
|
88
|
-
paths: [wallet1Path, wallet2Path],
|
|
89
|
-
addresses: [wallet1Address, wallet2Address],
|
|
90
|
-
payloads: payloadSequences[3].payloads,
|
|
91
|
-
payloadHashes: payloadSequences[3].payloadHashes,
|
|
92
|
-
previousHashes: [
|
|
93
|
-
'73245ef73517913f4b57c12d56d81199968ecd8fbefea9ddc474f43dd6cfa8c8',
|
|
94
|
-
'73245ef73517913f4b57c12d56d81199968ecd8fbefea9ddc474f43dd6cfa8c8',
|
|
95
|
-
],
|
|
96
|
-
dataHash: '210d86ea43d82b85a49b77959a8ee4e6016ff7036254cfa39953befc66073010',
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const boundWitnessSequenceTestCases = [
|
|
100
|
-
boundWitnessSequenceTestCase1,
|
|
101
|
-
boundWitnessSequenceTestCase2,
|
|
102
|
-
boundWitnessSequenceTestCase3,
|
|
103
|
-
boundWitnessSequenceTestCase4,
|
|
104
|
-
]
|
|
105
|
-
|
|
106
|
-
describe.sequential('BoundWitnessBuilder', () => {
|
|
107
|
-
beforeAll(() => {
|
|
108
|
-
// NOTE: This is here and brittle because the BoundWitnessBuilder
|
|
109
|
-
// uses Date.now() to generate timestamps and our test vectors were
|
|
110
|
-
// generated without them. We need to find a better way to handle
|
|
111
|
-
// this but for now this gives us parity with the vectors in other
|
|
112
|
-
// language's test cases.
|
|
113
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
114
|
-
vi.spyOn(Date, 'now').mockImplementation(() => undefined as any)
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
afterAll(() => {
|
|
118
|
-
vi.restoreAllMocks()
|
|
119
|
-
})
|
|
120
|
-
describe('Sequence Tests', () => {
|
|
121
|
-
it.each(boundWitnessSequenceTestCases)('Consistently reproduces sequence', async (testCase) => {
|
|
122
|
-
// Create accounts
|
|
123
|
-
const signers = await Promise.all(testCase.mnemonics.map(async (mnemonic, i) => {
|
|
124
|
-
const path = testCase.paths[i]
|
|
125
|
-
return await HDWallet.fromPhrase(mnemonic, path)
|
|
126
|
-
}))
|
|
127
|
-
|
|
128
|
-
expect(signers.length).to.equal(testCase.addresses.length)
|
|
129
|
-
const actualAddresses = signers.map(signer => signer.address.toLowerCase())
|
|
130
|
-
const expectedAddresses = testCase.addresses.map(address => address.toLowerCase())
|
|
131
|
-
expect(actualAddresses).toEqual(expectedAddresses)
|
|
132
|
-
|
|
133
|
-
// Ensure correct initial account state
|
|
134
|
-
for (let i = 0; i < testCase.previousHashes.length; i++) {
|
|
135
|
-
const previousHash = testCase.previousHashes[i]
|
|
136
|
-
expect(previousHash).toEqual(testCase.previousHashes[i])
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Build the BW
|
|
140
|
-
const [bw] = await new BoundWitnessBuilder()
|
|
141
|
-
.signers(signers)
|
|
142
|
-
.payloads(testCase.payloads)
|
|
143
|
-
.build()
|
|
144
|
-
|
|
145
|
-
// Ensure the BW is corrects
|
|
146
|
-
expect(await PayloadBuilder.dataHash(bw)).toEqual(testCase.dataHash)
|
|
147
|
-
|
|
148
|
-
for (let i = 0; i < testCase.payloadHashes.length; i++) {
|
|
149
|
-
const expectedPayloadHash = testCase.payloadHashes[i]
|
|
150
|
-
const actualPayloadHash = bw.payload_hashes[i]
|
|
151
|
-
expect(expectedPayloadHash).to.equal(
|
|
152
|
-
actualPayloadHash,
|
|
153
|
-
'Incorrect payload hash in BW',
|
|
154
|
-
)
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
for (let i = 0; i < testCase.payloads.length; i++) {
|
|
158
|
-
const payload = testCase.payloads[i]
|
|
159
|
-
const actualSchema = bw.payload_schemas[i]
|
|
160
|
-
expect(payload.schema).to.equal(
|
|
161
|
-
actualSchema,
|
|
162
|
-
'Incorrect payload schema in BW',
|
|
163
|
-
)
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Ensure correct ending account state
|
|
167
|
-
for (const signer of signers) {
|
|
168
|
-
expect(signer.previousHash).to.equal(
|
|
169
|
-
await PayloadBuilder.dataHash(bw),
|
|
170
|
-
'Incorrect previous hash for account',
|
|
171
|
-
)
|
|
172
|
-
}
|
|
173
|
-
})
|
|
174
|
-
})
|
|
175
|
-
})
|
package/src/spec/Builder.spec.ts
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import '@xylabs/vitest-extended'
|
|
2
|
-
|
|
3
|
-
import { toArrayBuffer } from '@xylabs/arraybuffer'
|
|
4
|
-
import type { Address } from '@xylabs/hex'
|
|
5
|
-
import {
|
|
6
|
-
Account,
|
|
7
|
-
AddressValue,
|
|
8
|
-
} from '@xyo-network/account'
|
|
9
|
-
import { Elliptic } from '@xyo-network/elliptic'
|
|
10
|
-
import { PayloadBuilder } from '@xyo-network/payload'
|
|
11
|
-
import { HDWallet } from '@xyo-network/wallet'
|
|
12
|
-
import {
|
|
13
|
-
describe, expect, it,
|
|
14
|
-
} from 'vitest'
|
|
15
|
-
|
|
16
|
-
import { BoundWitnessBuilder } from '../BoundWitnessBuilder.ts'
|
|
17
|
-
|
|
18
|
-
const schema = 'network.xyo.temp'
|
|
19
|
-
const payload1 = {
|
|
20
|
-
number_field: 1,
|
|
21
|
-
object_field: {
|
|
22
|
-
number_value: 2,
|
|
23
|
-
string_value: 'yo',
|
|
24
|
-
},
|
|
25
|
-
schema,
|
|
26
|
-
string_field: 'there',
|
|
27
|
-
timestamp: 1_618_603_439_107,
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const payload2 = {
|
|
31
|
-
number_field: 1,
|
|
32
|
-
object_field: {
|
|
33
|
-
number_value: 2,
|
|
34
|
-
string_value: 'yo',
|
|
35
|
-
},
|
|
36
|
-
schema,
|
|
37
|
-
string_field: 'there',
|
|
38
|
-
timestamp: 1_618_603_439_107,
|
|
39
|
-
}
|
|
40
|
-
const payloads = [payload1, payload2]
|
|
41
|
-
const payloadHash = '3c817871cbf24708703e907dbc344b1b2aefcc3603d14d59c3a35a5c446410d1'
|
|
42
|
-
|
|
43
|
-
describe('BoundWitnessBuilder', () => {
|
|
44
|
-
describe('hash', () => {
|
|
45
|
-
it.each(payloads)('consistently hashes equivalent payload independent of the order of the keys', async (payload) => {
|
|
46
|
-
const hash = await PayloadBuilder.dataHash(payload)
|
|
47
|
-
expect(hash).toEqual(payloadHash)
|
|
48
|
-
})
|
|
49
|
-
})
|
|
50
|
-
describe('build', () => {
|
|
51
|
-
describe('_hash', () => {
|
|
52
|
-
it.each(payloads)('consistently hashes equivalent payloads independent of the order of the keys', async (payload) => {
|
|
53
|
-
const address = await Account.random() // await HDWallet.fromPhrase('swarm luggage creek win urban boil tray crumble voice scrap yellow live')
|
|
54
|
-
let builder = new BoundWitnessBuilder()
|
|
55
|
-
expect(builder).toBeDefined()
|
|
56
|
-
builder = builder.signer(address)
|
|
57
|
-
expect(builder).toBeDefined()
|
|
58
|
-
builder = builder.payload(payload)
|
|
59
|
-
expect(builder).toBeDefined()
|
|
60
|
-
const [actual] = await builder.build()
|
|
61
|
-
expect(actual.addresses).toBeArrayOfSize(1)
|
|
62
|
-
expect(actual).toBeDefined()
|
|
63
|
-
if (actual.$signatures) {
|
|
64
|
-
const addr = new AddressValue(toArrayBuffer(actual.addresses[0] as Address))
|
|
65
|
-
expect(addr.hex).toBe(actual.addresses[0])
|
|
66
|
-
const hashToVerify = await PayloadBuilder.dataHash(actual)
|
|
67
|
-
console.log('verifying hash:', hashToVerify)
|
|
68
|
-
console.log('verifying address:', actual.addresses[0])
|
|
69
|
-
const verify = await Elliptic.verify(toArrayBuffer(
|
|
70
|
-
hashToVerify,
|
|
71
|
-
), toArrayBuffer(actual.$signatures[0]), addr.bytes)
|
|
72
|
-
expect(verify).toBe(true)
|
|
73
|
-
}
|
|
74
|
-
})
|
|
75
|
-
})
|
|
76
|
-
describe('with payloads', () => {
|
|
77
|
-
it('omits the _payloads field', async () => {
|
|
78
|
-
const address = await HDWallet.fromPhrase('canyon defense similar chalk good box quote miss decorate load amused gown')
|
|
79
|
-
const builder = new BoundWitnessBuilder().signer(address).payload(payload1)
|
|
80
|
-
const [actual] = await builder.build()
|
|
81
|
-
expect(actual).toBeDefined()
|
|
82
|
-
})
|
|
83
|
-
})
|
|
84
|
-
})
|
|
85
|
-
})
|