ecash-agora 0.1.1-rc
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/.eslintignore +8 -0
- package/.nycrc +4 -0
- package/README.md +122 -0
- package/agora.py +771 -0
- package/dist/ad.d.ts +15 -0
- package/dist/ad.d.ts.map +1 -0
- package/dist/ad.js +111 -0
- package/dist/ad.js.map +1 -0
- package/dist/agora.d.ts +178 -0
- package/dist/agora.d.ts.map +1 -0
- package/dist/agora.js +432 -0
- package/dist/agora.js.map +1 -0
- package/dist/consts.d.ts +5 -0
- package/dist/consts.d.ts.map +1 -0
- package/dist/consts.js +9 -0
- package/dist/consts.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/oneshot.d.ts +34 -0
- package/dist/oneshot.d.ts.map +1 -0
- package/dist/oneshot.js +204 -0
- package/dist/oneshot.js.map +1 -0
- package/dist/partial.d.ts +256 -0
- package/dist/partial.d.ts.map +1 -0
- package/dist/partial.js +955 -0
- package/dist/partial.js.map +1 -0
- package/eslint.config.js +16 -0
- package/package.json +52 -0
- package/tests/oneshot.test.ts +569 -0
- package/tests/partial-helper-alp.ts +131 -0
- package/tests/partial-helper-slp.ts +154 -0
- package/tests/partial.alp.bigsats.test.ts +694 -0
- package/tests/partial.alp.test.ts +586 -0
- package/tests/partial.slp.bigsats.test.ts +681 -0
- package/tests/partial.slp.test.ts +630 -0
- package/tsconfig.build.json +13 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partial.js","sourceRoot":"","sources":["../src/partial.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Copyright (c) 2024 The Bitcoin developers
|
|
2
|
+
// Distributed under the MIT software license, see the accompanying
|
|
3
|
+
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
4
|
+
|
|
5
|
+
// @ts-check
|
|
6
|
+
|
|
7
|
+
import eslint from '@eslint/js';
|
|
8
|
+
import tseslint from 'typescript-eslint';
|
|
9
|
+
|
|
10
|
+
export default tseslint.config(
|
|
11
|
+
eslint.configs.recommended,
|
|
12
|
+
...tseslint.configs.recommended,
|
|
13
|
+
{
|
|
14
|
+
ignores: ['dist/*'],
|
|
15
|
+
},
|
|
16
|
+
);
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ecash-agora",
|
|
3
|
+
"version": "0.1.1rc",
|
|
4
|
+
"description": "Library for interacting with the eCash Agora protocol",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc && tsc -p ./tsconfig.build.json",
|
|
9
|
+
"test": "mocha --import=tsx ./src/*.test.ts ./src/**/*.test.ts",
|
|
10
|
+
"integration-tests": "mocha --import=tsx ./tests/*.test.ts --timeout 60000",
|
|
11
|
+
"coverage": "nyc npm run test",
|
|
12
|
+
"junit": "npm run test --reporter mocha-junit-reporter"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/Bitcoin-ABC/bitcoin-abc.git",
|
|
17
|
+
"directory": "modules/ecash-agora"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"ecash",
|
|
21
|
+
"xec",
|
|
22
|
+
"bitcoin"
|
|
23
|
+
],
|
|
24
|
+
"author": "Bitcoin ABC",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/Bitcoin-ABC/bitcoin-abc/issues"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/Bitcoin-ABC/bitcoin-abc#readme",
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
32
|
+
"@types/chai": "^4.3.14",
|
|
33
|
+
"@types/chai-as-promised": "^7.1.8",
|
|
34
|
+
"@types/mocha": "^10.0.6",
|
|
35
|
+
"@types/node": "^20.12.7",
|
|
36
|
+
"chai": "^4.4.1",
|
|
37
|
+
"chai-as-promised": "^7.1.1",
|
|
38
|
+
"eslint-plugin-header": "^3.1.1",
|
|
39
|
+
"mocha": "^10.4.0",
|
|
40
|
+
"mocha-junit-reporter": "^2.2.1",
|
|
41
|
+
"nyc": "^15.1.0",
|
|
42
|
+
"source-map-support": "^0.5.21",
|
|
43
|
+
"ts-node": "^10.9.2",
|
|
44
|
+
"tsx": "^4.7.2",
|
|
45
|
+
"typescript": "^5.4.3",
|
|
46
|
+
"typescript-eslint": "^7.6.0"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"chronik-client": "file:../chronik-client",
|
|
50
|
+
"ecash-lib": "file:../ecash-lib"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
// Copyright (c) 2024 The Bitcoin developers
|
|
2
|
+
// Distributed under the MIT software license, see the accompanying
|
|
3
|
+
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
4
|
+
|
|
5
|
+
import { assert, expect, use } from 'chai';
|
|
6
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
7
|
+
import { ChronikClient } from 'chronik-client';
|
|
8
|
+
import {
|
|
9
|
+
ALL_BIP143,
|
|
10
|
+
Ecc,
|
|
11
|
+
OutPoint,
|
|
12
|
+
P2PKHSignatory,
|
|
13
|
+
SLP_NFT1_CHILD,
|
|
14
|
+
SLP_NFT1_GROUP,
|
|
15
|
+
Script,
|
|
16
|
+
TxBuilder,
|
|
17
|
+
TxInput,
|
|
18
|
+
TxOutput,
|
|
19
|
+
fromHex,
|
|
20
|
+
initWasm,
|
|
21
|
+
shaRmd160,
|
|
22
|
+
slpGenesis,
|
|
23
|
+
slpSend,
|
|
24
|
+
toHex,
|
|
25
|
+
} from 'ecash-lib';
|
|
26
|
+
import { TestRunner } from 'ecash-lib/dist/test/testRunner.js';
|
|
27
|
+
import { parseAgoraTx } from '../src/ad.js';
|
|
28
|
+
import { AGORA_LOKAD_ID } from '../src/consts.js';
|
|
29
|
+
import {
|
|
30
|
+
AgoraOneshot,
|
|
31
|
+
AgoraOneshotAdSignatory,
|
|
32
|
+
AgoraOneshotSignatory,
|
|
33
|
+
} from '../src/oneshot.js';
|
|
34
|
+
import { Agora, AgoraOffer } from '../src/agora.js';
|
|
35
|
+
|
|
36
|
+
use(chaiAsPromised);
|
|
37
|
+
|
|
38
|
+
const NUM_COINS = 500;
|
|
39
|
+
const COIN_VALUE = 100000;
|
|
40
|
+
|
|
41
|
+
const SLP_TOKEN_TYPE_NFT1_GROUP = {
|
|
42
|
+
number: 0x81,
|
|
43
|
+
protocol: 'SLP' as const,
|
|
44
|
+
type: 'SLP_TOKEN_TYPE_NFT1_GROUP' as const,
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const SLP_TOKEN_TYPE_NFT1_CHILD = {
|
|
48
|
+
number: 0x41,
|
|
49
|
+
protocol: 'SLP' as const,
|
|
50
|
+
type: 'SLP_TOKEN_TYPE_NFT1_CHILD' as const,
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
describe('SLP', () => {
|
|
54
|
+
let runner: TestRunner;
|
|
55
|
+
let chronik: ChronikClient;
|
|
56
|
+
let ecc: Ecc;
|
|
57
|
+
|
|
58
|
+
before(async () => {
|
|
59
|
+
await initWasm();
|
|
60
|
+
runner = await TestRunner.setup('setup_scripts/ecash-agora_base');
|
|
61
|
+
chronik = runner.chronik;
|
|
62
|
+
ecc = runner.ecc;
|
|
63
|
+
await runner.setupCoins(NUM_COINS, COIN_VALUE);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
after(() => {
|
|
67
|
+
runner.stop();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('SLP NFT1 Agora Oneshot', async () => {
|
|
71
|
+
// Tests the Agora Oneshot Script using SLP NFT1 tokens:
|
|
72
|
+
// 1. Seller creates an NFT1 GROUP token
|
|
73
|
+
// 2. Seller creates an NFT1 CHILD token using the group token
|
|
74
|
+
// 3. Seller sends the NFT to an ad setup output for an Agora Oneshot
|
|
75
|
+
// covenant that asks for 80000 sats
|
|
76
|
+
// 4. Seller finishes offer setup + sends NFT to the advertised P2SH
|
|
77
|
+
// 5. Buyer searches for NFT trades, finds the advertised one
|
|
78
|
+
// 6. Buyer attempts to buy the NFT using 79999 sats, which is rejected
|
|
79
|
+
// 7. Seller cancels the trade and changes the price to 70000 sats,
|
|
80
|
+
// with a new advertisement
|
|
81
|
+
// 8. Buyer searches for NFT trades again, finding both, one spent
|
|
82
|
+
// 9. Buyer successfully accepts advertized NFT offer for 70000 sats
|
|
83
|
+
|
|
84
|
+
// Create Agora object to access trades
|
|
85
|
+
const agora = new Agora(chronik);
|
|
86
|
+
|
|
87
|
+
const sellerSk = fromHex('11'.repeat(32));
|
|
88
|
+
const sellerPk = ecc.derivePubkey(sellerSk);
|
|
89
|
+
const sellerPkh = shaRmd160(sellerPk);
|
|
90
|
+
const sellerP2pkh = Script.p2pkh(sellerPkh);
|
|
91
|
+
|
|
92
|
+
const buyerSk = fromHex('22'.repeat(32));
|
|
93
|
+
const buyerPk = ecc.derivePubkey(buyerSk);
|
|
94
|
+
const buyerPkh = shaRmd160(buyerPk);
|
|
95
|
+
const buyerP2pkh = Script.p2pkh(buyerPkh);
|
|
96
|
+
|
|
97
|
+
await runner.sendToScript(50000, sellerP2pkh);
|
|
98
|
+
|
|
99
|
+
const utxos = await chronik.script('p2pkh', toHex(sellerPkh)).utxos();
|
|
100
|
+
expect(utxos.utxos.length).to.equal(1);
|
|
101
|
+
const utxo = utxos.utxos[0];
|
|
102
|
+
|
|
103
|
+
// 1. Seller creates an NFT1 GROUP token
|
|
104
|
+
const txBuildGenesisGroup = new TxBuilder({
|
|
105
|
+
inputs: [
|
|
106
|
+
{
|
|
107
|
+
input: {
|
|
108
|
+
prevOut: utxo.outpoint,
|
|
109
|
+
signData: {
|
|
110
|
+
value: utxo.value,
|
|
111
|
+
outputScript: sellerP2pkh,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
signatory: P2PKHSignatory(sellerSk, sellerPk, ALL_BIP143),
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
outputs: [
|
|
118
|
+
{
|
|
119
|
+
value: 0,
|
|
120
|
+
script: slpGenesis(
|
|
121
|
+
SLP_NFT1_GROUP,
|
|
122
|
+
{
|
|
123
|
+
tokenTicker: 'SLP NFT1 GROUP TOKEN',
|
|
124
|
+
decimals: 4,
|
|
125
|
+
},
|
|
126
|
+
1,
|
|
127
|
+
),
|
|
128
|
+
},
|
|
129
|
+
{ value: 10000, script: sellerP2pkh },
|
|
130
|
+
],
|
|
131
|
+
});
|
|
132
|
+
const genesisTx = txBuildGenesisGroup.sign(ecc);
|
|
133
|
+
const genesisTxid = (await chronik.broadcastTx(genesisTx.ser())).txid;
|
|
134
|
+
const groupTokenId = genesisTxid;
|
|
135
|
+
|
|
136
|
+
expect(await chronik.token(genesisTxid)).to.deep.equal({
|
|
137
|
+
tokenId: groupTokenId,
|
|
138
|
+
tokenType: SLP_TOKEN_TYPE_NFT1_GROUP,
|
|
139
|
+
genesisInfo: {
|
|
140
|
+
tokenTicker: 'SLP NFT1 GROUP TOKEN',
|
|
141
|
+
tokenName: '',
|
|
142
|
+
url: '',
|
|
143
|
+
hash: '',
|
|
144
|
+
decimals: 4,
|
|
145
|
+
},
|
|
146
|
+
timeFirstSeen: 1300000000,
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// 2. Seller creates an NFT1 CHILD token using the group token
|
|
150
|
+
const txBuildGenesisChild = new TxBuilder({
|
|
151
|
+
inputs: [
|
|
152
|
+
{
|
|
153
|
+
input: {
|
|
154
|
+
prevOut: {
|
|
155
|
+
txid: genesisTxid,
|
|
156
|
+
outIdx: 1,
|
|
157
|
+
},
|
|
158
|
+
signData: {
|
|
159
|
+
value: 10000,
|
|
160
|
+
outputScript: sellerP2pkh,
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
signatory: P2PKHSignatory(sellerSk, sellerPk, ALL_BIP143),
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
outputs: [
|
|
167
|
+
{
|
|
168
|
+
value: 0,
|
|
169
|
+
script: slpGenesis(
|
|
170
|
+
SLP_NFT1_CHILD,
|
|
171
|
+
{
|
|
172
|
+
tokenTicker: 'SLP NFT1 CHILD TOKEN',
|
|
173
|
+
decimals: 0,
|
|
174
|
+
},
|
|
175
|
+
1,
|
|
176
|
+
),
|
|
177
|
+
},
|
|
178
|
+
{ value: 8000, script: sellerP2pkh },
|
|
179
|
+
],
|
|
180
|
+
});
|
|
181
|
+
const genesisChildTx = txBuildGenesisChild.sign(ecc);
|
|
182
|
+
const genesisChildTxid = (
|
|
183
|
+
await chronik.broadcastTx(genesisChildTx.ser())
|
|
184
|
+
).txid;
|
|
185
|
+
const childTokenId = genesisChildTxid;
|
|
186
|
+
|
|
187
|
+
expect(await chronik.token(childTokenId)).to.deep.equal({
|
|
188
|
+
tokenId: childTokenId,
|
|
189
|
+
tokenType: SLP_TOKEN_TYPE_NFT1_CHILD,
|
|
190
|
+
genesisInfo: {
|
|
191
|
+
tokenTicker: 'SLP NFT1 CHILD TOKEN',
|
|
192
|
+
tokenName: '',
|
|
193
|
+
url: '',
|
|
194
|
+
hash: '',
|
|
195
|
+
decimals: 0,
|
|
196
|
+
},
|
|
197
|
+
timeFirstSeen: 1300000000,
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// 3. Seller sends the NFT to an ad setup output for an Agora Oneshot
|
|
201
|
+
// covenant that asks for 80000 sats
|
|
202
|
+
const enforcedOutputs: TxOutput[] = [
|
|
203
|
+
{
|
|
204
|
+
value: BigInt(0),
|
|
205
|
+
script: slpSend(childTokenId, SLP_NFT1_CHILD, [0, 1]),
|
|
206
|
+
},
|
|
207
|
+
{ value: BigInt(80000), script: sellerP2pkh },
|
|
208
|
+
];
|
|
209
|
+
const agoraOneshot = new AgoraOneshot({
|
|
210
|
+
enforcedOutputs,
|
|
211
|
+
cancelPk: sellerPk,
|
|
212
|
+
});
|
|
213
|
+
const agoraAdScript = agoraOneshot.adScript();
|
|
214
|
+
const agoraAdP2sh = Script.p2sh(shaRmd160(agoraAdScript.bytecode));
|
|
215
|
+
const txBuildAdSetup = new TxBuilder({
|
|
216
|
+
inputs: [
|
|
217
|
+
{
|
|
218
|
+
input: {
|
|
219
|
+
prevOut: {
|
|
220
|
+
txid: genesisChildTxid,
|
|
221
|
+
outIdx: 1,
|
|
222
|
+
},
|
|
223
|
+
signData: {
|
|
224
|
+
value: 8000,
|
|
225
|
+
outputScript: sellerP2pkh,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
signatory: P2PKHSignatory(sellerSk, sellerPk, ALL_BIP143),
|
|
229
|
+
},
|
|
230
|
+
],
|
|
231
|
+
outputs: [
|
|
232
|
+
{
|
|
233
|
+
value: 0,
|
|
234
|
+
script: slpSend(childTokenId, SLP_NFT1_CHILD, [1]),
|
|
235
|
+
},
|
|
236
|
+
{ value: 7000, script: agoraAdP2sh },
|
|
237
|
+
],
|
|
238
|
+
});
|
|
239
|
+
const adSetupTx = txBuildAdSetup.sign(ecc);
|
|
240
|
+
const adSetupTxid = (await chronik.broadcastTx(adSetupTx.ser())).txid;
|
|
241
|
+
|
|
242
|
+
// 4. Seller finishes offer setup + sends NFT to the advertised P2SH
|
|
243
|
+
const agoraScript = agoraOneshot.script();
|
|
244
|
+
const agoraP2sh = Script.p2sh(shaRmd160(agoraScript.bytecode));
|
|
245
|
+
const txBuildOffer = new TxBuilder({
|
|
246
|
+
inputs: [
|
|
247
|
+
{
|
|
248
|
+
input: {
|
|
249
|
+
prevOut: {
|
|
250
|
+
txid: adSetupTxid,
|
|
251
|
+
outIdx: 1,
|
|
252
|
+
},
|
|
253
|
+
signData: {
|
|
254
|
+
value: 7000,
|
|
255
|
+
redeemScript: agoraAdScript,
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
signatory: AgoraOneshotAdSignatory(sellerSk),
|
|
259
|
+
},
|
|
260
|
+
],
|
|
261
|
+
outputs: [
|
|
262
|
+
{
|
|
263
|
+
value: 0,
|
|
264
|
+
script: slpSend(childTokenId, SLP_NFT1_CHILD, [1]),
|
|
265
|
+
},
|
|
266
|
+
{ value: 546, script: agoraP2sh },
|
|
267
|
+
],
|
|
268
|
+
});
|
|
269
|
+
const offerTx = txBuildOffer.sign(ecc);
|
|
270
|
+
const offerTxid = (await chronik.broadcastTx(offerTx.ser())).txid;
|
|
271
|
+
const offerOutpoint: OutPoint = {
|
|
272
|
+
txid: offerTxid,
|
|
273
|
+
outIdx: 1,
|
|
274
|
+
};
|
|
275
|
+
const offerTxBuilderInput: TxInput = {
|
|
276
|
+
prevOut: offerOutpoint,
|
|
277
|
+
signData: {
|
|
278
|
+
redeemScript: agoraScript,
|
|
279
|
+
value: 546,
|
|
280
|
+
},
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
// Expected created offer
|
|
284
|
+
const expectedOffer = new AgoraOffer({
|
|
285
|
+
variant: {
|
|
286
|
+
type: 'ONESHOT',
|
|
287
|
+
params: agoraOneshot,
|
|
288
|
+
},
|
|
289
|
+
outpoint: offerOutpoint,
|
|
290
|
+
txBuilderInput: offerTxBuilderInput,
|
|
291
|
+
token: {
|
|
292
|
+
tokenId: childTokenId,
|
|
293
|
+
tokenType: SLP_TOKEN_TYPE_NFT1_CHILD,
|
|
294
|
+
amount: '1',
|
|
295
|
+
isMintBaton: false,
|
|
296
|
+
},
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
// 5. Buyer searches for NFT trades, finds the advertised one
|
|
300
|
+
expect(await agora.allOfferedTokenIds()).to.deep.equal([childTokenId]);
|
|
301
|
+
expect(await agora.offeredGroupTokenIds()).to.deep.equal([
|
|
302
|
+
groupTokenId,
|
|
303
|
+
]);
|
|
304
|
+
expect(await agora.offeredFungibleTokenIds()).to.deep.equal([]);
|
|
305
|
+
|
|
306
|
+
// Query by group token ID
|
|
307
|
+
expect(
|
|
308
|
+
await agora.activeOffersByGroupTokenId(groupTokenId),
|
|
309
|
+
).to.deep.equal([expectedOffer]);
|
|
310
|
+
// activeOffersByGroupTokenId with child token ID -> empty result
|
|
311
|
+
expect(
|
|
312
|
+
await agora.activeOffersByGroupTokenId(childTokenId),
|
|
313
|
+
).to.deep.equal([]);
|
|
314
|
+
|
|
315
|
+
// Query by child token ID
|
|
316
|
+
expect(await agora.activeOffersByTokenId(childTokenId)).to.deep.equal([
|
|
317
|
+
expectedOffer,
|
|
318
|
+
]);
|
|
319
|
+
// activeOffersByTokenId with by group token ID -> empty result
|
|
320
|
+
expect(await agora.activeOffersByTokenId(groupTokenId)).to.deep.equal(
|
|
321
|
+
[],
|
|
322
|
+
);
|
|
323
|
+
|
|
324
|
+
// Query by cancelPk
|
|
325
|
+
expect(await agora.activeOffersByPubKey(toHex(sellerPk))).to.deep.equal(
|
|
326
|
+
[expectedOffer],
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
// Use LOKAD ID enpoint + parseAgoraTx to find offers
|
|
330
|
+
const agoraTxs = (
|
|
331
|
+
await chronik.lokadId(toHex(AGORA_LOKAD_ID)).history()
|
|
332
|
+
).txs;
|
|
333
|
+
expect(agoraTxs.length).to.be.equal(1);
|
|
334
|
+
const agoraTx = agoraTxs[0];
|
|
335
|
+
expect(agoraTx.inputs.length).to.be.equal(1);
|
|
336
|
+
const parsedAd = parseAgoraTx(agoraTx);
|
|
337
|
+
if (parsedAd === undefined) {
|
|
338
|
+
throw 'Parsing agora tx failed';
|
|
339
|
+
}
|
|
340
|
+
if (parsedAd.type !== 'ONESHOT') {
|
|
341
|
+
throw 'Expected ONESHOT offer in this test';
|
|
342
|
+
}
|
|
343
|
+
expect(parsedAd).to.be.deep.equal({
|
|
344
|
+
type: 'ONESHOT',
|
|
345
|
+
params: agoraOneshot,
|
|
346
|
+
outpoint: offerOutpoint,
|
|
347
|
+
spentBy: undefined,
|
|
348
|
+
txBuilderInput: offerTxBuilderInput,
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
// 6. Buyer attempts to buy the NFT using 79999 sats, which is rejected
|
|
352
|
+
const buyerSatsTxid = await runner.sendToScript(90000, buyerP2pkh);
|
|
353
|
+
const txBuildAcceptFail = new TxBuilder({
|
|
354
|
+
version: 2,
|
|
355
|
+
inputs: [
|
|
356
|
+
{
|
|
357
|
+
input: parsedAd.txBuilderInput,
|
|
358
|
+
signatory: AgoraOneshotSignatory(
|
|
359
|
+
buyerSk,
|
|
360
|
+
buyerPk,
|
|
361
|
+
parsedAd.params.enforcedOutputs.length,
|
|
362
|
+
),
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
input: {
|
|
366
|
+
prevOut: {
|
|
367
|
+
txid: buyerSatsTxid,
|
|
368
|
+
outIdx: 0,
|
|
369
|
+
},
|
|
370
|
+
signData: {
|
|
371
|
+
value: 90000,
|
|
372
|
+
outputScript: buyerP2pkh,
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
signatory: P2PKHSignatory(buyerSk, buyerPk, ALL_BIP143),
|
|
376
|
+
},
|
|
377
|
+
],
|
|
378
|
+
outputs: [
|
|
379
|
+
{
|
|
380
|
+
value: 0,
|
|
381
|
+
script: slpSend(childTokenId, SLP_NFT1_CHILD, [0, 1]),
|
|
382
|
+
},
|
|
383
|
+
// failure: one sat missing
|
|
384
|
+
{ value: 79999, script: sellerP2pkh },
|
|
385
|
+
{ value: 546, script: buyerP2pkh },
|
|
386
|
+
],
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
// Accepting trade failed, must send 80000 sats to seller, but sent 79999
|
|
390
|
+
const acceptFailTx = txBuildAcceptFail.sign(ecc);
|
|
391
|
+
// OP_EQUALVERIFY failed
|
|
392
|
+
assert.isRejected(chronik.broadcastTx(acceptFailTx.ser()));
|
|
393
|
+
|
|
394
|
+
// 7. Seller cancels the trade and changes the price to 70000 sats,
|
|
395
|
+
// with a new advertisement
|
|
396
|
+
const newEnforcedOutputs: TxOutput[] = [
|
|
397
|
+
{
|
|
398
|
+
value: BigInt(0),
|
|
399
|
+
script: slpSend(childTokenId, SLP_NFT1_CHILD, [0, 1]),
|
|
400
|
+
},
|
|
401
|
+
{ value: BigInt(70000), script: sellerP2pkh },
|
|
402
|
+
];
|
|
403
|
+
const newAgoraOneshot = new AgoraOneshot({
|
|
404
|
+
enforcedOutputs: newEnforcedOutputs,
|
|
405
|
+
cancelPk: sellerPk,
|
|
406
|
+
});
|
|
407
|
+
const newAgoraScript = newAgoraOneshot.script();
|
|
408
|
+
const newAgoraP2sh = Script.p2sh(shaRmd160(newAgoraScript.bytecode));
|
|
409
|
+
const newAgoraAdScript = newAgoraOneshot.adScript();
|
|
410
|
+
const cancelFeeSats = 600;
|
|
411
|
+
const newAdSetupTxid = await runner.sendToScript(
|
|
412
|
+
cancelFeeSats,
|
|
413
|
+
Script.p2sh(shaRmd160(newAgoraAdScript.bytecode)),
|
|
414
|
+
);
|
|
415
|
+
const offer1 = (await agora.activeOffersByTokenId(childTokenId))[0];
|
|
416
|
+
const offer1AdInput = {
|
|
417
|
+
input: {
|
|
418
|
+
prevOut: {
|
|
419
|
+
txid: newAdSetupTxid,
|
|
420
|
+
outIdx: 0,
|
|
421
|
+
},
|
|
422
|
+
signData: {
|
|
423
|
+
value: cancelFeeSats,
|
|
424
|
+
redeemScript: newAgoraAdScript,
|
|
425
|
+
},
|
|
426
|
+
},
|
|
427
|
+
signatory: AgoraOneshotAdSignatory(sellerSk),
|
|
428
|
+
};
|
|
429
|
+
expect(offer1.askedSats()).to.equal(80000n);
|
|
430
|
+
expect(
|
|
431
|
+
offer1.cancelFeeSats({
|
|
432
|
+
recipientScript: newAgoraP2sh,
|
|
433
|
+
extraInputs: [offer1AdInput],
|
|
434
|
+
}),
|
|
435
|
+
).to.equal(BigInt(cancelFeeSats));
|
|
436
|
+
const cancelTx = offer1.cancelTx({
|
|
437
|
+
ecc,
|
|
438
|
+
cancelSk: sellerSk,
|
|
439
|
+
fuelInputs: [offer1AdInput],
|
|
440
|
+
recipientScript: newAgoraP2sh,
|
|
441
|
+
});
|
|
442
|
+
expect(cancelTx.serSize()).to.equal(cancelFeeSats);
|
|
443
|
+
const newOfferTxid = (await chronik.broadcastTx(cancelTx.ser())).txid;
|
|
444
|
+
const newOfferOutpoint: OutPoint = {
|
|
445
|
+
txid: newOfferTxid,
|
|
446
|
+
outIdx: 1,
|
|
447
|
+
};
|
|
448
|
+
const newOfferTxBuilderInput: TxInput = {
|
|
449
|
+
prevOut: newOfferOutpoint,
|
|
450
|
+
signData: {
|
|
451
|
+
redeemScript: newAgoraScript,
|
|
452
|
+
value: 546,
|
|
453
|
+
},
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
// 8. Buyer searches for NFT trades again, finding both, one spent
|
|
457
|
+
expect(await agora.allOfferedTokenIds()).to.deep.equal([childTokenId]);
|
|
458
|
+
expect(await agora.offeredGroupTokenIds()).to.deep.equal([
|
|
459
|
+
groupTokenId,
|
|
460
|
+
]);
|
|
461
|
+
expect(await agora.offeredFungibleTokenIds()).to.deep.equal([]);
|
|
462
|
+
|
|
463
|
+
const newExpectedOffer = new AgoraOffer({
|
|
464
|
+
variant: {
|
|
465
|
+
type: 'ONESHOT',
|
|
466
|
+
params: newAgoraOneshot,
|
|
467
|
+
},
|
|
468
|
+
outpoint: newOfferOutpoint,
|
|
469
|
+
txBuilderInput: newOfferTxBuilderInput,
|
|
470
|
+
token: {
|
|
471
|
+
tokenId: childTokenId,
|
|
472
|
+
tokenType: SLP_TOKEN_TYPE_NFT1_CHILD,
|
|
473
|
+
amount: '1',
|
|
474
|
+
isMintBaton: false,
|
|
475
|
+
},
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
expect(
|
|
479
|
+
await agora.activeOffersByGroupTokenId(groupTokenId),
|
|
480
|
+
).to.deep.equal([newExpectedOffer]);
|
|
481
|
+
expect(await agora.activeOffersByTokenId(childTokenId)).to.deep.equal([
|
|
482
|
+
newExpectedOffer,
|
|
483
|
+
]);
|
|
484
|
+
expect(await agora.activeOffersByPubKey(toHex(sellerPk))).to.deep.equal(
|
|
485
|
+
[newExpectedOffer],
|
|
486
|
+
);
|
|
487
|
+
|
|
488
|
+
// Use LOKAD ID index + parseAgoraTx to find the offers
|
|
489
|
+
const newAgoraTxs = (
|
|
490
|
+
await chronik.lokadId(toHex(AGORA_LOKAD_ID)).history()
|
|
491
|
+
).txs;
|
|
492
|
+
expect(newAgoraTxs.length).to.equal(2);
|
|
493
|
+
newAgoraTxs.sort(
|
|
494
|
+
(a, b) => +!a.outputs[1].spentBy - +!b.outputs[1].spentBy,
|
|
495
|
+
);
|
|
496
|
+
const parsedAds = newAgoraTxs.map(parseAgoraTx);
|
|
497
|
+
expect(parsedAds).to.deep.equal([
|
|
498
|
+
{
|
|
499
|
+
type: 'ONESHOT',
|
|
500
|
+
params: agoraOneshot,
|
|
501
|
+
outpoint: offerOutpoint,
|
|
502
|
+
txBuilderInput: offerTxBuilderInput,
|
|
503
|
+
spentBy: {
|
|
504
|
+
txid: newOfferTxid,
|
|
505
|
+
outIdx: 1,
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
type: 'ONESHOT',
|
|
510
|
+
params: newAgoraOneshot,
|
|
511
|
+
outpoint: newOfferOutpoint,
|
|
512
|
+
txBuilderInput: newOfferTxBuilderInput,
|
|
513
|
+
spentBy: undefined,
|
|
514
|
+
},
|
|
515
|
+
]);
|
|
516
|
+
|
|
517
|
+
// 9. Buyer successfully accepts advertized NFT offer for 70000 sats
|
|
518
|
+
const offer2 = (await agora.activeOffersByTokenId(childTokenId))[0];
|
|
519
|
+
expect(offer2.askedSats()).to.equal(70000n);
|
|
520
|
+
const acceptFeeSats = 740;
|
|
521
|
+
const acceptSats = acceptFeeSats + Number(offer2.askedSats());
|
|
522
|
+
const acceptSatsTxid = await runner.sendToScript(
|
|
523
|
+
acceptSats,
|
|
524
|
+
buyerP2pkh,
|
|
525
|
+
);
|
|
526
|
+
const offer2AcceptInput = {
|
|
527
|
+
input: {
|
|
528
|
+
prevOut: {
|
|
529
|
+
txid: acceptSatsTxid,
|
|
530
|
+
outIdx: 0,
|
|
531
|
+
},
|
|
532
|
+
signData: {
|
|
533
|
+
value: acceptSats,
|
|
534
|
+
outputScript: buyerP2pkh,
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
signatory: P2PKHSignatory(buyerSk, buyerPk, ALL_BIP143),
|
|
538
|
+
};
|
|
539
|
+
expect(
|
|
540
|
+
offer2.acceptFeeSats({
|
|
541
|
+
recipientScript: buyerP2pkh,
|
|
542
|
+
extraInputs: [offer2AcceptInput],
|
|
543
|
+
}),
|
|
544
|
+
).to.equal(BigInt(acceptFeeSats));
|
|
545
|
+
const acceptSuccessTx = offer2.acceptTx({
|
|
546
|
+
ecc,
|
|
547
|
+
covenantSk: buyerSk,
|
|
548
|
+
covenantPk: buyerPk,
|
|
549
|
+
fuelInputs: [offer2AcceptInput],
|
|
550
|
+
recipientScript: buyerP2pkh,
|
|
551
|
+
});
|
|
552
|
+
expect(acceptSuccessTx.serSize()).to.equal(acceptFeeSats);
|
|
553
|
+
await chronik.broadcastTx(acceptSuccessTx.ser());
|
|
554
|
+
|
|
555
|
+
// No trades left anymore
|
|
556
|
+
expect(await agora.allOfferedTokenIds()).to.deep.equal([]);
|
|
557
|
+
expect(await agora.offeredGroupTokenIds()).to.deep.equal([]);
|
|
558
|
+
expect(await agora.offeredFungibleTokenIds()).to.deep.equal([]);
|
|
559
|
+
expect(
|
|
560
|
+
await agora.activeOffersByGroupTokenId(groupTokenId),
|
|
561
|
+
).to.deep.equal([]);
|
|
562
|
+
expect(await agora.activeOffersByTokenId(childTokenId)).to.deep.equal(
|
|
563
|
+
[],
|
|
564
|
+
);
|
|
565
|
+
expect(await agora.activeOffersByPubKey(toHex(sellerPk))).to.deep.equal(
|
|
566
|
+
[],
|
|
567
|
+
);
|
|
568
|
+
});
|
|
569
|
+
});
|