ecash-agora 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -207,3 +207,11 @@ Running from `bitcoin-abc/modules/ecash-agora` if your build dir is `bitcoin-abc
207
207
  ### 2.3.0
208
208
 
209
209
  - Expose precision param to allow app creation of 64-bit int offers [D18829](https://reviews.bitcoinabc.org/D18829)
210
+
211
+ ### 2.4.0
212
+
213
+ - Add new `take` method to `AgoraOffer` that will automatically build and broadcast an agora acceptTx given a `Wallet` from `ecash-wallet` [D18833](https://reviews.bitcoinabc.org/D18833)
214
+
215
+ ### 2.5.0
216
+
217
+ - Add new `cancel` method to `AgoraOffer` that will automatically build and broadcast an agora cancelTx given a `Wallet` from `ecash-wallet` [D18842](https://reviews.bitcoinabc.org/D18842)
package/dist/agora.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ChronikClient, Token, WsEndpoint } from 'chronik-client';
2
2
  import { Op, OutPoint, Script, Tx, TxBuilderInput, TxInput } from 'ecash-lib';
3
+ import { Wallet } from 'ecash-wallet';
3
4
  import { AgoraOneshot } from './oneshot.js';
4
5
  import { AgoraPartial, AgoraPartialParams } from './partial.js';
5
6
  /** Offer variant, determines the Script used to enforce the offer */
@@ -44,7 +45,7 @@ export declare class AgoraOffer {
44
45
  takenInfo?: TakenInfo;
45
46
  });
46
47
  /**
47
- * Build a tx accepting this offer.
48
+ * Build and broadcast an acceptTx, effectively taking this offer.
48
49
  *
49
50
  * Agora offers are UTXOs on the blockchain that can be accepted by anyone
50
51
  * sending sufficient satoshis to a required output.
@@ -82,6 +83,60 @@ export declare class AgoraOffer {
82
83
  /** Allow accepting an offer such that the remaining quantity is unacceptable */
83
84
  allowUnspendable?: boolean;
84
85
  }): Tx;
86
+ /**
87
+ * Build and broadcast a tx that accepts an agora offer
88
+ * according to user-provided params, to a user-provided
89
+ * ecash-wallet Wallet
90
+ *
91
+ * NB there is no option to "only build" by passing a Wallet, but this can be
92
+ * accomplished using the acceptTx method above
93
+ */
94
+ take(
95
+ /**
96
+ * NB these params are identical to the params required for acceptTx method above,
97
+ * except
98
+ *
99
+ * 1) We require a Wallet
100
+ * 2) We get fuelInputs from the provided wallet instead of accepting them
101
+ * as a param
102
+ */
103
+ params: {
104
+ /**
105
+ * An initialized Wallet from ecash-wallet
106
+ * This is the wallet that will take the offer
107
+ */
108
+ wallet: Wallet;
109
+ /**
110
+ * Arbitrary secret key to sign the accept tx with. Recommended to set
111
+ * this to a random key. Must be paired with covenantSk.
112
+ */
113
+ covenantSk: Uint8Array;
114
+ /**
115
+ * Arbitrary public key to sign the accept tx with, must be paired with
116
+ * covenantSk.
117
+ */
118
+ covenantPk: Uint8Array;
119
+ /** Script to send the tokens and the leftover sats (if any) to. */
120
+ recipientScript: Script;
121
+ /** For partial offers: Number of accepted atoms (base tokens) */
122
+ acceptedAtoms?: bigint;
123
+ /** Dust amount to use for the token output. */
124
+ dustSats?: bigint;
125
+ /** Fee per kB to use when building the tx. */
126
+ feePerKb?: bigint;
127
+ /** Allow accepting an offer such that the remaining quantity is unacceptable */
128
+ allowUnspendable?: boolean;
129
+ }): Promise<{
130
+ success: boolean;
131
+ broadcasted: string[];
132
+ unbroadcasted: string[];
133
+ errors: string[];
134
+ } | {
135
+ success: boolean;
136
+ broadcasted: string[];
137
+ unbroadcasted?: undefined;
138
+ errors?: undefined;
139
+ }>;
85
140
  /**
86
141
  * How many extra satoshis are required to fuel this offer so it can be
87
142
  * broadcast on the network, excluding the asked sats.
@@ -126,6 +181,41 @@ export declare class AgoraOffer {
126
181
  /** Fee per kB to use when building the tx. */
127
182
  feePerKb?: bigint;
128
183
  }): Tx;
184
+ /**
185
+ * Convenience method to cancel an offer using a Wallet
186
+ * The cancel tx is broadcast by the Wallet and canceled
187
+ * tokens / leftover sats are returned to this wallet
188
+ *
189
+ * NB this wallet must have the correct cancelSk to
190
+ * actually cancel the offer, otherwise expect an error
191
+ *
192
+ * NB you can see in the oneshot.test.ts that cancelTx can be used
193
+ * to "relist" an agora oneshot offer; this method will not do this
194
+ *
195
+ * Though we could add a relist() method to also simplify that procedure
196
+ */
197
+ cancel(params: {
198
+ /**
199
+ * An initialized Wallet from ecash-wallet
200
+ * This is the wallet that will take the offer
201
+ *
202
+ * Note this wallet must have the correct cancelSk
203
+ * for the method to work
204
+ *
205
+ * This is also the wallet that will receive canceled
206
+ * tokens and leftover sats
207
+ */
208
+ wallet: Wallet;
209
+ /** Dust amount to use for the token output. */
210
+ dustSats?: bigint;
211
+ /** Fee per kB to use when building the tx. */
212
+ feePerKb?: bigint;
213
+ }): Promise<{
214
+ success: boolean;
215
+ broadcasted: string[];
216
+ unbroadcasted?: string[];
217
+ errors?: string[];
218
+ }>;
129
219
  /**
130
220
  * How many extra satoshis are required to fuel cancelling this offer,
131
221
  * so the cancel tx can be broadcast on the network, excluding the asked
@@ -1 +1 @@
1
- {"version":3,"file":"agora.d.ts","sourceRoot":"","sources":["../src/agora.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agora.d.ts","sourceRoot":"","sources":["../src/agora.ts"],"names":[],"mappings":"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"}
package/dist/agora.js CHANGED
@@ -5,6 +5,8 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.scriptOps = exports.Agora = exports.AgoraOffer = void 0;
7
7
  const ecash_lib_1 = require("ecash-lib");
8
+ const ecash_wallet_1 = require("ecash-wallet");
9
+ const inputs_1 = require("./inputs");
8
10
  const oneshot_js_1 = require("./oneshot.js");
9
11
  const partial_js_1 = require("./partial.js");
10
12
  const TOKEN_ID_PREFIX = (0, ecash_lib_1.toHex)((0, ecash_lib_1.strToBytes)('T'));
@@ -32,7 +34,7 @@ class AgoraOffer {
32
34
  }
33
35
  }
34
36
  /**
35
- * Build a tx accepting this offer.
37
+ * Build and broadcast an acceptTx, effectively taking this offer.
36
38
  *
37
39
  * Agora offers are UTXOs on the blockchain that can be accepted by anyone
38
40
  * sending sufficient satoshis to a required output.
@@ -59,6 +61,65 @@ class AgoraOffer {
59
61
  });
60
62
  return txBuild.sign({ feePerKb, dustSats });
61
63
  }
64
+ /**
65
+ * Build and broadcast a tx that accepts an agora offer
66
+ * according to user-provided params, to a user-provided
67
+ * ecash-wallet Wallet
68
+ *
69
+ * NB there is no option to "only build" by passing a Wallet, but this can be
70
+ * accomplished using the acceptTx method above
71
+ */
72
+ async take(
73
+ /**
74
+ * NB these params are identical to the params required for acceptTx method above,
75
+ * except
76
+ *
77
+ * 1) We require a Wallet
78
+ * 2) We get fuelInputs from the provided wallet instead of accepting them
79
+ * as a param
80
+ */
81
+ params) {
82
+ // Use default params for unspecified
83
+ const dustSats = params.dustSats ?? ecash_lib_1.DEFAULT_DUST_SATS;
84
+ const feePerKb = params.feePerKb ?? ecash_lib_1.DEFAULT_FEE_SATS_PER_KB;
85
+ const allowUnspendable = params.allowUnspendable ?? false;
86
+ const wallet = params.wallet;
87
+ // Get fuel inputs
88
+ let fuelUtxos;
89
+ if (this.variant.type === 'ONESHOT') {
90
+ fuelUtxos = (0, inputs_1.getAgoraOneshotAcceptFuelInputs)(this, wallet.spendableSatsOnlyUtxos(), params.feePerKb);
91
+ }
92
+ else if (typeof params.acceptedAtoms === 'bigint') {
93
+ fuelUtxos = (0, inputs_1.getAgoraPartialAcceptFuelInputs)(this, wallet.spendableSatsOnlyUtxos(), params.acceptedAtoms, params.feePerKb);
94
+ }
95
+ else {
96
+ throw new Error('Must provide acceptedAtoms to accept a partial offer');
97
+ }
98
+ // Sign inputs using Wallet
99
+ // NB the take() method only supports ALL_BIP143 sighash type (for now),
100
+ // i.e. "normal" eCash txs and not postage
101
+ const finalizedInputs = fuelUtxos.map(utxo => wallet.p2pkhUtxoToBuilderInput(utxo, ecash_lib_1.ALL_BIP143));
102
+ // Build the tx using available ecash-agora method
103
+ const txBuild = this._acceptTxBuilder({
104
+ covenantSk: params.covenantSk,
105
+ covenantPk: params.covenantPk,
106
+ fuelInputs: finalizedInputs,
107
+ extraOutputs: [
108
+ {
109
+ sats: dustSats,
110
+ script: params.recipientScript,
111
+ },
112
+ params.recipientScript,
113
+ ],
114
+ acceptedAtoms: params.acceptedAtoms,
115
+ allowUnspendable,
116
+ });
117
+ const signedTx = txBuild.sign({ feePerKb, dustSats });
118
+ // Broadcast using Wallet, and match the return type of ecash-wallet broadcasts
119
+ const builtAction = new ecash_wallet_1.BuiltAction(wallet, [signedTx], feePerKb);
120
+ const broadcastResult = await builtAction.broadcast();
121
+ return broadcastResult;
122
+ }
62
123
  /**
63
124
  * How many extra satoshis are required to fuel this offer so it can be
64
125
  * broadcast on the network, excluding the asked sats.
@@ -189,6 +250,45 @@ class AgoraOffer {
189
250
  });
190
251
  return txBuild.sign({ feePerKb, dustSats });
191
252
  }
253
+ /**
254
+ * Convenience method to cancel an offer using a Wallet
255
+ * The cancel tx is broadcast by the Wallet and canceled
256
+ * tokens / leftover sats are returned to this wallet
257
+ *
258
+ * NB this wallet must have the correct cancelSk to
259
+ * actually cancel the offer, otherwise expect an error
260
+ *
261
+ * NB you can see in the oneshot.test.ts that cancelTx can be used
262
+ * to "relist" an agora oneshot offer; this method will not do this
263
+ *
264
+ * Though we could add a relist() method to also simplify that procedure
265
+ */
266
+ async cancel(params) {
267
+ const dustSats = params.dustSats ?? ecash_lib_1.DEFAULT_DUST_SATS;
268
+ const feePerKb = params.feePerKb ?? ecash_lib_1.DEFAULT_FEE_SATS_PER_KB;
269
+ // Determine fuel utxos
270
+ const fuelUtxos = (0, inputs_1.getAgoraCancelFuelInputs)(this, params.wallet.spendableSatsOnlyUtxos(), params.feePerKb);
271
+ // Sign inputs using Wallet
272
+ // NB the cancel() method only supports ALL_BIP143 sighash type (for now),
273
+ // i.e. "normal" eCash txs and not postage
274
+ const fuelInputs = fuelUtxos.map(utxo => params.wallet.p2pkhUtxoToBuilderInput(utxo, ecash_lib_1.ALL_BIP143));
275
+ const txBuild = this._cancelTxBuilder({
276
+ cancelSk: params.wallet.sk,
277
+ fuelInputs,
278
+ extraOutputs: [
279
+ {
280
+ sats: dustSats,
281
+ script: params.wallet.script,
282
+ },
283
+ params.wallet.script,
284
+ ],
285
+ });
286
+ const signedTx = txBuild.sign({ feePerKb, dustSats });
287
+ // Broadcast using Wallet, and match the return type of ecash-wallet broadcasts
288
+ const builtAction = new ecash_wallet_1.BuiltAction(params.wallet, [signedTx], feePerKb);
289
+ const broadcastResult = await builtAction.broadcast();
290
+ return broadcastResult;
291
+ }
192
292
  /**
193
293
  * How many extra satoshis are required to fuel cancelling this offer,
194
294
  * so the cancel tx can be broadcast on the network, excluding the asked
package/dist/agora.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agora.js","sourceRoot":"","sources":["../src/agora.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agora.js","sourceRoot":"","sources":["../src/agora.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ecash-agora",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "description": "Library for interacting with the eCash Agora protocol",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -34,7 +34,7 @@
34
34
  "@types/node": "^20.12.7",
35
35
  "chai": "^4.4.1",
36
36
  "chai-as-promised": "^7.1.1",
37
- "ecash-wallet": "^2.0.1",
37
+ "ecash-wallet": "^2.1.3",
38
38
  "mocha": "^10.4.0",
39
39
  "mocha-junit-reporter": "^2.2.1",
40
40
  "nyc": "^15.1.0",
@@ -44,7 +44,7 @@
44
44
  "typescript": "^5.4.3"
45
45
  },
46
46
  "dependencies": {
47
- "chronik-client": "^3.4.0",
48
- "ecash-lib": "^4.4.0"
47
+ "chronik-client": "^3.4.1",
48
+ "ecash-lib": "^4.5.1"
49
49
  }
50
50
  }
@@ -32,6 +32,7 @@ import {
32
32
  } from '../src/oneshot.js';
33
33
  import { Agora, AgoraOffer } from '../src/agora.js';
34
34
  import { EventEmitter, once } from 'node:events';
35
+ import { Wallet } from 'ecash-wallet/src/wallet.js';
35
36
 
36
37
  use(chaiAsPromised);
37
38
 
@@ -704,4 +705,293 @@ describe('SLP', () => {
704
705
  numPages: 1,
705
706
  });
706
707
  });
708
+ it('We can cancel an Agora Oneshot offer using cancel()', async () => {
709
+ // Create Agora object to access trades
710
+ const agora = new Agora(chronik);
711
+
712
+ const cancelerSk = fromHex('99'.repeat(32));
713
+ const cancelerWallet = Wallet.fromSk(cancelerSk, chronik);
714
+
715
+ const cancelerPk = cancelerWallet.pk;
716
+
717
+ const cancelerP2pkh = cancelerWallet.script;
718
+
719
+ await runner.sendToScript(50000n, cancelerP2pkh);
720
+
721
+ await cancelerWallet.sync();
722
+
723
+ const utxos = cancelerWallet.utxos;
724
+ expect(utxos.length).to.equal(1);
725
+ const utxo = utxos[0];
726
+
727
+ // 1. Seller creates an NFT1 GROUP token
728
+ const txBuildGenesisGroup = new TxBuilder({
729
+ inputs: [
730
+ {
731
+ input: {
732
+ prevOut: utxo.outpoint,
733
+ signData: {
734
+ sats: utxo.sats,
735
+ outputScript: cancelerP2pkh,
736
+ },
737
+ },
738
+ signatory: P2PKHSignatory(
739
+ cancelerSk,
740
+ cancelerPk,
741
+ ALL_BIP143,
742
+ ),
743
+ },
744
+ ],
745
+ outputs: [
746
+ {
747
+ sats: 0n,
748
+ script: slpGenesis(
749
+ SLP_NFT1_GROUP,
750
+ {
751
+ tokenTicker: 'SLP NFT1 GROUP TOKEN',
752
+ decimals: 4,
753
+ },
754
+ 1n,
755
+ ),
756
+ },
757
+ { sats: 10000n, script: cancelerP2pkh },
758
+ ],
759
+ });
760
+ const genesisTx = txBuildGenesisGroup.sign();
761
+ const genesisTxid = (await chronik.broadcastTx(genesisTx.ser())).txid;
762
+ const groupTokenId = genesisTxid;
763
+
764
+ expect(await chronik.token(genesisTxid)).to.deep.equal({
765
+ tokenId: groupTokenId,
766
+ tokenType: SLP_TOKEN_TYPE_NFT1_GROUP,
767
+ genesisInfo: {
768
+ tokenTicker: 'SLP NFT1 GROUP TOKEN',
769
+ tokenName: '',
770
+ url: '',
771
+ hash: '',
772
+ decimals: 4,
773
+ },
774
+ timeFirstSeen: 1300000000,
775
+ });
776
+
777
+ // 2. Seller creates an NFT1 CHILD token using the group token
778
+ const txBuildGenesisChild = new TxBuilder({
779
+ inputs: [
780
+ {
781
+ input: {
782
+ prevOut: {
783
+ txid: genesisTxid,
784
+ outIdx: 1,
785
+ },
786
+ signData: {
787
+ sats: 10000n,
788
+ outputScript: cancelerP2pkh,
789
+ },
790
+ },
791
+ signatory: P2PKHSignatory(
792
+ cancelerSk,
793
+ cancelerPk,
794
+ ALL_BIP143,
795
+ ),
796
+ },
797
+ ],
798
+ outputs: [
799
+ {
800
+ sats: 0n,
801
+ script: slpGenesis(
802
+ SLP_NFT1_CHILD,
803
+ {
804
+ tokenTicker: 'SLP NFT1 CHILD TOKEN',
805
+ decimals: 0,
806
+ },
807
+ 1n,
808
+ ),
809
+ },
810
+ { sats: 8000n, script: cancelerP2pkh },
811
+ ],
812
+ });
813
+ const genesisChildTx = txBuildGenesisChild.sign();
814
+ const genesisChildTxid = (
815
+ await chronik.broadcastTx(genesisChildTx.ser())
816
+ ).txid;
817
+ const childTokenId = genesisChildTxid;
818
+
819
+ expect(await chronik.token(childTokenId)).to.deep.equal({
820
+ tokenId: childTokenId,
821
+ tokenType: SLP_TOKEN_TYPE_NFT1_CHILD,
822
+ genesisInfo: {
823
+ tokenTicker: 'SLP NFT1 CHILD TOKEN',
824
+ tokenName: '',
825
+ url: '',
826
+ hash: '',
827
+ decimals: 0,
828
+ },
829
+ timeFirstSeen: 1300000000,
830
+ });
831
+
832
+ const emitter = new EventEmitter();
833
+ const ws = chronik.ws({
834
+ onMessage: async msg => {
835
+ if (!emitter.emit('ws', msg)) {
836
+ console.warn('Emitted msg without any listeners', msg);
837
+ }
838
+ },
839
+ });
840
+ await ws.waitForOpen();
841
+ agora.subscribeWs(ws, {
842
+ type: 'TOKEN_ID',
843
+ tokenId: childTokenId,
844
+ });
845
+ const listenNext = () => once(emitter, 'ws') as Promise<[MsgTxClient]>;
846
+
847
+ // 3. Seller sends the NFT to an ad setup output for an Agora Oneshot
848
+ // covenant that asks for 80000 sats
849
+ const enforcedOutputs: TxOutput[] = [
850
+ {
851
+ sats: BigInt(0),
852
+ script: slpSend(childTokenId, SLP_NFT1_CHILD, [0n, 1n]),
853
+ },
854
+ { sats: BigInt(80000), script: cancelerP2pkh },
855
+ ];
856
+ const agoraOneshot = new AgoraOneshot({
857
+ enforcedOutputs,
858
+ cancelPk: cancelerPk,
859
+ });
860
+ const agoraAdScript = agoraOneshot.adScript();
861
+ const agoraAdP2sh = Script.p2sh(shaRmd160(agoraAdScript.bytecode));
862
+ const txBuildAdSetup = new TxBuilder({
863
+ inputs: [
864
+ {
865
+ input: {
866
+ prevOut: {
867
+ txid: genesisChildTxid,
868
+ outIdx: 1,
869
+ },
870
+ signData: {
871
+ sats: 8000n,
872
+ outputScript: cancelerP2pkh,
873
+ },
874
+ },
875
+ signatory: P2PKHSignatory(
876
+ cancelerSk,
877
+ cancelerPk,
878
+ ALL_BIP143,
879
+ ),
880
+ },
881
+ ],
882
+ outputs: [
883
+ {
884
+ sats: 0n,
885
+ script: slpSend(childTokenId, SLP_NFT1_CHILD, [1n]),
886
+ },
887
+ { sats: 7000n, script: agoraAdP2sh },
888
+ ],
889
+ });
890
+ const adSetupTx = txBuildAdSetup.sign();
891
+ const adSetupTxid = (await chronik.broadcastTx(adSetupTx.ser())).txid;
892
+
893
+ // 4. Seller finishes offer setup + sends NFT to the advertised P2SH
894
+ const agoraScript = agoraOneshot.script();
895
+ const agoraP2sh = Script.p2sh(shaRmd160(agoraScript.bytecode));
896
+ const txBuildOffer = new TxBuilder({
897
+ inputs: [
898
+ {
899
+ input: {
900
+ prevOut: {
901
+ txid: adSetupTxid,
902
+ outIdx: 1,
903
+ },
904
+ signData: {
905
+ sats: 7000n,
906
+ redeemScript: agoraAdScript,
907
+ },
908
+ },
909
+ signatory: AgoraOneshotAdSignatory(cancelerSk),
910
+ },
911
+ ],
912
+ outputs: [
913
+ {
914
+ sats: 0n,
915
+ script: slpSend(childTokenId, SLP_NFT1_CHILD, [1n]),
916
+ },
917
+ { sats: 546n, script: agoraP2sh },
918
+ ],
919
+ });
920
+ const offerTx = txBuildOffer.sign();
921
+ const offerPromise = listenNext();
922
+ const offerTxid = (await chronik.broadcastTx(offerTx.ser())).txid;
923
+ const offerOutpoint: OutPoint = {
924
+ txid: offerTxid,
925
+ outIdx: 1,
926
+ };
927
+ const offerTxBuilderInput: TxInput = {
928
+ prevOut: offerOutpoint,
929
+ signData: {
930
+ redeemScript: agoraScript,
931
+ sats: 546n,
932
+ },
933
+ };
934
+
935
+ // Expected created offer
936
+ const expectedOffer = new AgoraOffer({
937
+ variant: {
938
+ type: 'ONESHOT',
939
+ params: agoraOneshot,
940
+ },
941
+ outpoint: offerOutpoint,
942
+ txBuilderInput: offerTxBuilderInput,
943
+ token: {
944
+ tokenId: childTokenId,
945
+ tokenType: SLP_TOKEN_TYPE_NFT1_CHILD,
946
+ atoms: 1n,
947
+ isMintBaton: false,
948
+ },
949
+ status: 'OPEN',
950
+ });
951
+
952
+ const [offerMsg] = await offerPromise;
953
+ expect(offerMsg.type).to.equal('Tx');
954
+ expect(offerMsg.msgType).to.equal('TX_ADDED_TO_MEMPOOL');
955
+ expect(offerMsg.txid).to.equal(offerTxid);
956
+
957
+ // 5. Buyer searches for NFT trades, finds the advertised one
958
+ expect(await agora.allOfferedTokenIds()).to.deep.equal([childTokenId]);
959
+
960
+ // Query by group token ID
961
+ expect(
962
+ await agora.activeOffersByGroupTokenId(groupTokenId),
963
+ ).to.deep.equal([expectedOffer]);
964
+
965
+ // Query by child token ID
966
+ expect(await agora.activeOffersByTokenId(childTokenId)).to.deep.equal([
967
+ expectedOffer,
968
+ ]);
969
+
970
+ // Query by cancelPk
971
+ expect(
972
+ await agora.activeOffersByPubKey(toHex(cancelerPk)),
973
+ ).to.deep.equal([expectedOffer]);
974
+
975
+ // We can cancel the offer using cancel()
976
+ // We need a utxo to spend to cancel this offer
977
+ await runner.sendToScript(50000n, cancelerP2pkh);
978
+ await cancelerWallet.sync();
979
+ await expectedOffer.cancel({
980
+ wallet: cancelerWallet,
981
+ });
982
+
983
+ // We can no longer find the offer
984
+ expect(await agora.allOfferedTokenIds()).to.deep.equal([]);
985
+ expect(await agora.offeredGroupTokenIds()).to.deep.equal([]);
986
+ expect(await agora.offeredFungibleTokenIds()).to.deep.equal([]);
987
+ expect(
988
+ await agora.activeOffersByGroupTokenId(groupTokenId),
989
+ ).to.deep.equal([]);
990
+ expect(await agora.activeOffersByTokenId(childTokenId)).to.deep.equal(
991
+ [],
992
+ );
993
+ expect(
994
+ await agora.activeOffersByPubKey(toHex(cancelerPk)),
995
+ ).to.deep.equal([]);
996
+ });
707
997
  });
@@ -16,6 +16,7 @@ import {
16
16
  TxBuilderInput,
17
17
  TxBuilderOutput,
18
18
  } from 'ecash-lib';
19
+ import { Wallet } from 'ecash-wallet';
19
20
  import { expect } from 'chai';
20
21
 
21
22
  import { AgoraPartial } from '../src/partial.js';
@@ -124,22 +125,23 @@ export async function takeAlpOffer(params: {
124
125
  chronik: ChronikClient;
125
126
  offer: AgoraOffer;
126
127
  takerSk: Uint8Array;
127
- takerInput: TxBuilderInput;
128
128
  acceptedAtoms: bigint;
129
129
  allowUnspendable?: boolean;
130
130
  }) {
131
131
  const takerSk = params.takerSk;
132
- const takerPk = new Ecc().derivePubkey(takerSk);
133
- const takerPkh = shaRmd160(takerPk);
134
- const takerP2pkh = Script.p2pkh(takerPkh);
135
- const acceptTx = params.offer.acceptTx({
136
- covenantSk: params.takerSk,
132
+ const takerWallet = Wallet.fromSk(takerSk, params.chronik);
133
+ const takerPk = takerWallet.pk;
134
+ const takerP2pkh = takerWallet.script;
135
+
136
+ await takerWallet.sync();
137
+ const broadcastResult = await params.offer.take({
138
+ wallet: takerWallet,
139
+ covenantSk: takerSk,
137
140
  covenantPk: takerPk,
138
- fuelInputs: [params.takerInput],
139
141
  recipientScript: takerP2pkh,
140
142
  acceptedAtoms: params.acceptedAtoms,
141
143
  allowUnspendable: params.allowUnspendable,
142
144
  });
143
- const acceptTxid = (await params.chronik.broadcastTx(acceptTx.ser())).txid;
145
+ const acceptTxid = broadcastResult.broadcasted[0];
144
146
  return acceptTxid;
145
147
  }
@@ -14,6 +14,7 @@ import {
14
14
  TxBuilder,
15
15
  TxBuilderInput,
16
16
  } from 'ecash-lib';
17
+ import { Wallet } from 'ecash-wallet';
17
18
  import { expect } from 'chai';
18
19
 
19
20
  import { AgoraPartial, AgoraPartialAdSignatory } from '../src/partial.js';
@@ -132,22 +133,22 @@ export async function takeSlpOffer(params: {
132
133
  chronik: ChronikClient;
133
134
  offer: AgoraOffer;
134
135
  takerSk: Uint8Array;
135
- takerInput: TxBuilderInput;
136
136
  acceptedAtoms: bigint;
137
137
  allowUnspendable?: boolean;
138
138
  }) {
139
139
  const takerSk = params.takerSk;
140
- const takerPk = new Ecc().derivePubkey(takerSk);
141
- const takerPkh = shaRmd160(takerPk);
142
- const takerP2pkh = Script.p2pkh(takerPkh);
143
- const acceptTx = params.offer.acceptTx({
144
- covenantSk: params.takerSk,
140
+ const takerWallet = Wallet.fromSk(takerSk, params.chronik);
141
+ const takerPk = takerWallet.pk;
142
+ const takerP2pkh = takerWallet.script;
143
+ await takerWallet.sync();
144
+ const broadcastResult = await params.offer.take({
145
+ wallet: takerWallet,
146
+ covenantSk: takerSk,
145
147
  covenantPk: takerPk,
146
- fuelInputs: [params.takerInput],
147
148
  recipientScript: takerP2pkh,
148
149
  acceptedAtoms: params.acceptedAtoms,
149
150
  allowUnspendable: params.allowUnspendable,
150
151
  });
151
- const acceptTxid = (await params.chronik.broadcastTx(acceptTx.ser())).txid;
152
+ const acceptTxid = broadcastResult.broadcasted[0];
152
153
  return acceptTxid;
153
154
  }
@@ -53,7 +53,10 @@ async function makeBuilderInputs(
53
53
  runner: TestRunner,
54
54
  values: bigint[],
55
55
  ): Promise<TxBuilderInput[]> {
56
- const txid = await runner.sendToScript(values, makerScript);
56
+ const txid = await runner.sendToTwoScripts(
57
+ { script: makerScript, sats: values[0] },
58
+ { script: takerScript, sats: values[1] },
59
+ );
57
60
  return values.map((sats, outIdx) => ({
58
61
  input: {
59
62
  prevOut: {
@@ -84,10 +87,7 @@ describe('AgoraPartial ALP 7450M XEC vs 2p48-1 full accept', () => {
84
87
  });
85
88
 
86
89
  it('AgoraPartial ALP 7450M XEC vs 2p48-1 full accept', async () => {
87
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
88
- 10000n,
89
- BIGSATS,
90
- ]);
90
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
91
91
 
92
92
  const agora = new Agora(chronik);
93
93
  const agoraPartial = await agora.selectParams({
@@ -133,7 +133,6 @@ describe('AgoraPartial ALP 7450M XEC vs 2p48-1 full accept', () => {
133
133
  chronik,
134
134
  offer,
135
135
  takerSk,
136
- takerInput,
137
136
  acceptedAtoms: agoraPartial.offeredAtoms(),
138
137
  });
139
138
 
@@ -178,10 +177,7 @@ describe('AgoraPartial 7450M XEC vs 2p48-1 small accept', () => {
178
177
  });
179
178
 
180
179
  it('AgoraPartial ALP 7450M XEC vs 2p48-1 small accept', async () => {
181
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
182
- 10000n,
183
- BIGSATS,
184
- ]);
180
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
185
181
 
186
182
  const agora = new Agora(chronik);
187
183
  const agoraPartial = await agora.selectParams({
@@ -229,7 +225,6 @@ describe('AgoraPartial 7450M XEC vs 2p48-1 small accept', () => {
229
225
  chronik,
230
226
  offer,
231
227
  takerSk,
232
- takerInput,
233
228
  acceptedAtoms,
234
229
  });
235
230
 
@@ -282,10 +277,7 @@ describe('AgoraPartial 7450M XEC vs 2p47-1 full accept', () => {
282
277
  });
283
278
 
284
279
  it('AgoraPartial ALP 7450M XEC vs 2p47-1 full accept', async () => {
285
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
286
- 10000n,
287
- BIGSATS,
288
- ]);
280
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
289
281
 
290
282
  const agora = new Agora(chronik);
291
283
  const agoraPartial = await agora.selectParams({
@@ -330,7 +322,6 @@ describe('AgoraPartial 7450M XEC vs 2p47-1 full accept', () => {
330
322
  chronik,
331
323
  offer,
332
324
  takerSk,
333
- takerInput,
334
325
  acceptedAtoms: agoraPartial.offeredAtoms(),
335
326
  });
336
327
 
@@ -378,10 +369,7 @@ describe('AgoraPartial ALP 7450M XEC vs 2p47-1 small accept', () => {
378
369
  });
379
370
 
380
371
  it('AgoraPartial ALP 7450M XEC vs 2p47-1 small accept', async () => {
381
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
382
- 10000n,
383
- BIGSATS,
384
- ]);
372
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
385
373
 
386
374
  const agora = new Agora(chronik);
387
375
  const agoraPartial = await agora.selectParams({
@@ -429,7 +417,6 @@ describe('AgoraPartial ALP 7450M XEC vs 2p47-1 small accept', () => {
429
417
  chronik,
430
418
  offer,
431
419
  takerSk,
432
- takerInput,
433
420
  acceptedAtoms,
434
421
  });
435
422
 
@@ -482,10 +469,7 @@ describe('AgoraPartial ALP 7450M XEC vs 100 full accept', () => {
482
469
  });
483
470
 
484
471
  it('AgoraPartial ALP 7450M XEC vs 100 full accept', async () => {
485
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
486
- 10000n,
487
- BIGSATS,
488
- ]);
472
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
489
473
 
490
474
  const agora = new Agora(chronik);
491
475
  const agoraPartial = await agora.selectParams({
@@ -529,7 +513,6 @@ describe('AgoraPartial ALP 7450M XEC vs 100 full accept', () => {
529
513
  chronik,
530
514
  offer,
531
515
  takerSk,
532
- takerInput,
533
516
  acceptedAtoms: 100n,
534
517
  });
535
518
  const acceptTx = await chronik.tx(acceptTxid);
@@ -574,10 +557,7 @@ describe('AgoraPartial ALP 7450M XEC vs 100 small accept', () => {
574
557
  });
575
558
 
576
559
  it('AgoraPartial ALP 7450M XEC vs 100 small accept', async () => {
577
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
578
- 10000n,
579
- BIGSATS,
580
- ]);
560
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
581
561
 
582
562
  const agora = new Agora(chronik);
583
563
  const agoraPartial = await agora.selectParams({
@@ -617,7 +597,6 @@ describe('AgoraPartial ALP 7450M XEC vs 100 small accept', () => {
617
597
  chronik,
618
598
  offer,
619
599
  takerSk,
620
- takerInput,
621
600
  acceptedAtoms: 1n,
622
601
  });
623
602
  const acceptTx = await chronik.tx(acceptTxid);
@@ -24,6 +24,7 @@ import { TestRunner } from 'ecash-lib/dist/test/testRunner.js';
24
24
  import { AgoraPartial } from '../src/partial.js';
25
25
  import { makeAlpOffer, takeAlpOffer } from './partial-helper-alp.js';
26
26
  import { Agora, TakenInfo } from '../src/agora.js';
27
+ import { Wallet } from 'ecash-wallet/src/wallet.js';
27
28
 
28
29
  use(chaiAsPromised);
29
30
 
@@ -57,7 +58,10 @@ describe('AgoraPartial ALP', () => {
57
58
  async function makeBuilderInputs(
58
59
  values: bigint[],
59
60
  ): Promise<TxBuilderInput[]> {
61
+ // NB for these "not big sats" tests, we can just send to both, no need to sendToTwoScripts
60
62
  const txid = await runner.sendToScript(values, makerScript);
63
+ // Send some cash to the taker, since the accept() tests spend from this wallet
64
+ await runner.sendToScript(values, takerScript);
61
65
  return values.map((sats, outIdx) => ({
62
66
  input: {
63
67
  prevOut: {
@@ -417,6 +421,7 @@ describe('AgoraPartial ALP', () => {
417
421
  },
418
422
  ];
419
423
 
424
+ let cancelTxsMatchCount = 0;
420
425
  for (const testCase of TEST_CASES) {
421
426
  it(`AgoraPartial ALP ${testCase.offeredAtoms} for ${testCase.info}`, async () => {
422
427
  const agora = new Agora(chronik);
@@ -429,10 +434,7 @@ describe('AgoraPartial ALP', () => {
429
434
  });
430
435
  const askedSats = agoraPartial.askedSats(testCase.acceptedAtoms);
431
436
  const requiredSats = askedSats + 2000n;
432
- const [fuelInput, takerInput] = await makeBuilderInputs([
433
- 4000n,
434
- requiredSats,
435
- ]);
437
+ const [fuelInput] = await makeBuilderInputs([4000n, requiredSats]);
436
438
 
437
439
  const offer = await makeAlpOffer({
438
440
  chronik,
@@ -444,12 +446,10 @@ describe('AgoraPartial ALP', () => {
444
446
  chronik,
445
447
  takerSk,
446
448
  offer,
447
- takerInput,
448
449
  acceptedAtoms: testCase.acceptedAtoms,
449
450
  allowUnspendable: testCase.allowUnspendable,
450
451
  });
451
452
  const acceptTx = await chronik.tx(acceptTxid);
452
- // TODO we do not even get here, keep debugging
453
453
  const offeredAtoms = agoraPartial.offeredAtoms();
454
454
  const isFullAccept = testCase.acceptedAtoms == offeredAtoms;
455
455
  if (isFullAccept) {
@@ -543,17 +543,40 @@ describe('AgoraPartial ALP', () => {
543
543
  recipientScript: makerScript,
544
544
  extraInputs: [fuelInput], // dummy input for measuring
545
545
  });
546
- const cancelTxSer = newOffer
547
- .cancelTx({
548
- cancelSk: makerSk,
549
- fuelInputs: await makeBuilderInputs([cancelFeeSats]),
550
- recipientScript: makerScript,
551
- })
552
- .ser();
553
- const cancelTxid = (await chronik.broadcastTx(cancelTxSer)).txid;
554
- const cancelTx = await chronik.tx(cancelTxid);
555
- expect(cancelTx.outputs[1].token?.atoms).to.equal(leftoverTokens);
556
- expect(cancelTx.outputs[1].outputScript).to.equal(makerScriptHex);
546
+ const cancelTx = newOffer.cancelTx({
547
+ cancelSk: makerSk,
548
+ fuelInputs: await makeBuilderInputs([cancelFeeSats]),
549
+ recipientScript: makerScript,
550
+ });
551
+ const cancelTxid = cancelTx.txid();
552
+
553
+ // Let's build and broadcast using cancel() instead
554
+ const cancelWallet = Wallet.fromSk(makerSk, chronik);
555
+ await cancelWallet.sync();
556
+ const cancelResult = await newOffer.cancel({
557
+ wallet: cancelWallet,
558
+ });
559
+ const broadcastCancelTxid = cancelResult.broadcasted[0];
560
+ if (broadcastCancelTxid === cancelTxid) {
561
+ cancelTxsMatchCount++;
562
+ console.log(
563
+ `${cancelTxsMatchCount} of ${TEST_CASES.length} produce equal txids with cancelTx() and cancel()`,
564
+ );
565
+
566
+ // Between ~5 and ~8 of 46 of these txs are identical from each method
567
+
568
+ // On inspection, when cancel() txid does not match,
569
+ // it is because cancel has selected different fuel inputs
570
+ // This is expected behavior, these txs still show change
571
+ // going to the cancel wallet as expected
572
+ }
573
+ const cancelChronikTx = await chronik.tx(broadcastCancelTxid);
574
+ expect(cancelChronikTx.outputs[1].token?.atoms).to.equal(
575
+ leftoverTokens,
576
+ );
577
+ expect(cancelChronikTx.outputs[1].outputScript).to.equal(
578
+ makerScriptHex,
579
+ );
557
580
 
558
581
  // takerIndex is 2 for full accept, 3 for partial accept
559
582
  const takerIndex = isFullAccept ? 2 : 3;
@@ -611,10 +634,7 @@ describe('AgoraPartial ALP', () => {
611
634
  });
612
635
  const askedSats = agoraPartial.askedSats(thisTestCase.acceptedAtoms);
613
636
  const requiredSats = askedSats + 2000n;
614
- const [fuelInput, takerInput] = await makeBuilderInputs([
615
- 4000n,
616
- requiredSats,
617
- ]);
637
+ const [fuelInput] = await makeBuilderInputs([4000n, requiredSats]);
618
638
 
619
639
  const offer = await makeAlpOffer({
620
640
  chronik,
@@ -639,7 +659,6 @@ describe('AgoraPartial ALP', () => {
639
659
  chronik,
640
660
  takerSk,
641
661
  offer,
642
- takerInput,
643
662
  acceptedAtoms: thisTestCase.acceptedAtoms,
644
663
  allowUnspendable: false,
645
664
  }),
@@ -678,10 +697,7 @@ describe('AgoraPartial ALP', () => {
678
697
  const acceptedAtoms = 500n;
679
698
  const askedSats = agoraPartial.askedSats(acceptedAtoms);
680
699
  const requiredSats = askedSats + 2000n;
681
- const [fuelInput, takerInput] = await makeBuilderInputs([
682
- 4000n,
683
- requiredSats,
684
- ]);
700
+ const [fuelInput] = await makeBuilderInputs([4000n, requiredSats]);
685
701
 
686
702
  const offer = await makeAlpOffer({
687
703
  chronik,
@@ -703,7 +719,6 @@ describe('AgoraPartial ALP', () => {
703
719
  chronik,
704
720
  takerSk,
705
721
  offer,
706
- takerInput,
707
722
  acceptedAtoms: acceptedAtoms,
708
723
  allowUnspendable: false,
709
724
  }),
@@ -51,7 +51,10 @@ async function makeBuilderInputs(
51
51
  runner: TestRunner,
52
52
  values: bigint[],
53
53
  ): Promise<TxBuilderInput[]> {
54
- const txid = await runner.sendToScript(values, makerScript);
54
+ const txid = await runner.sendToTwoScripts(
55
+ { script: makerScript, sats: values[0] },
56
+ { script: takerScript, sats: values[1] },
57
+ );
55
58
  return values.map((sats, outIdx) => ({
56
59
  input: {
57
60
  prevOut: {
@@ -82,10 +85,7 @@ describe('Agora Partial 7450M XEC vs 2p64-1 full accept', () => {
82
85
  });
83
86
 
84
87
  it('Agora Partial 7450M XEC vs 2p64-1 full accept', async () => {
85
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
86
- 10000n,
87
- BIGSATS,
88
- ]);
88
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
89
89
 
90
90
  const agora = new Agora(chronik);
91
91
  const agoraPartial = await agora.selectParams({
@@ -131,7 +131,6 @@ describe('Agora Partial 7450M XEC vs 2p64-1 full accept', () => {
131
131
  chronik,
132
132
  offer,
133
133
  takerSk,
134
- takerInput,
135
134
  acceptedAtoms: agoraPartial.offeredAtoms(),
136
135
  });
137
136
 
@@ -173,10 +172,7 @@ describe('Agora Partial 7450M XEC vs 2p64-1 small accept', () => {
173
172
  });
174
173
 
175
174
  it('Agora Partial 7450M XEC vs 2p64-1 small accept', async () => {
176
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
177
- 10000n,
178
- BIGSATS,
179
- ]);
175
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
180
176
 
181
177
  const agora = new Agora(chronik);
182
178
  const agoraPartial = await agora.selectParams({
@@ -224,7 +220,6 @@ describe('Agora Partial 7450M XEC vs 2p64-1 small accept', () => {
224
220
  chronik,
225
221
  offer,
226
222
  takerSk,
227
- takerInput,
228
223
  acceptedAtoms,
229
224
  });
230
225
 
@@ -274,10 +269,7 @@ describe('Agora Partial 7450M XEC vs 2p63-1 full accept', () => {
274
269
  });
275
270
 
276
271
  it('Agora Partial 7450M XEC vs 2p63-1 full accept', async () => {
277
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
278
- 10000n,
279
- BIGSATS,
280
- ]);
272
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
281
273
 
282
274
  const agora = new Agora(chronik);
283
275
  const agoraPartial = await agora.selectParams({
@@ -326,7 +318,6 @@ describe('Agora Partial 7450M XEC vs 2p63-1 full accept', () => {
326
318
  chronik,
327
319
  offer,
328
320
  takerSk,
329
- takerInput,
330
321
  acceptedAtoms,
331
322
  });
332
323
 
@@ -369,10 +360,7 @@ describe('Agora Partial 7450M XEC vs 2p63-1 small accept', () => {
369
360
  });
370
361
 
371
362
  it('Agora Partial 7450M XEC vs 2p63-1 small accept', async () => {
372
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
373
- 10000n,
374
- BIGSATS,
375
- ]);
363
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
376
364
 
377
365
  const agora = new Agora(chronik);
378
366
  const agoraPartial = await agora.selectParams({
@@ -420,7 +408,6 @@ describe('Agora Partial 7450M XEC vs 2p63-1 small accept', () => {
420
408
  chronik,
421
409
  offer,
422
410
  takerSk,
423
- takerInput,
424
411
  acceptedAtoms,
425
412
  });
426
413
 
@@ -470,10 +457,7 @@ describe('Agora Partial 7450M XEC vs 100 full accept', () => {
470
457
  });
471
458
 
472
459
  it('Agora Partial 7450M XEC vs 100 full accept', async () => {
473
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
474
- 10000n,
475
- BIGSATS,
476
- ]);
460
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
477
461
 
478
462
  const agora = new Agora(chronik);
479
463
  const agoraPartial = await agora.selectParams({
@@ -517,7 +501,6 @@ describe('Agora Partial 7450M XEC vs 100 full accept', () => {
517
501
  chronik,
518
502
  offer,
519
503
  takerSk,
520
- takerInput,
521
504
  acceptedAtoms: 100n,
522
505
  });
523
506
  const acceptTx = await chronik.tx(acceptTxid);
@@ -559,10 +542,7 @@ describe('Agora Partial 7450M XEC vs 100 small accept', () => {
559
542
  });
560
543
 
561
544
  it('Agora Partial 7450M XEC vs 100 small accept', async () => {
562
- const [fuelInput, takerInput] = await makeBuilderInputs(runner, [
563
- 10000n,
564
- BIGSATS,
565
- ]);
545
+ const [fuelInput] = await makeBuilderInputs(runner, [10000n, BIGSATS]);
566
546
 
567
547
  const agora = new Agora(chronik);
568
548
  const agoraPartial = await agora.selectParams({
@@ -602,7 +582,6 @@ describe('Agora Partial 7450M XEC vs 100 small accept', () => {
602
582
  chronik,
603
583
  offer,
604
584
  takerSk,
605
- takerInput,
606
585
  acceptedAtoms: 1n,
607
586
  });
608
587
  const acceptTx = await chronik.tx(acceptTxid);
@@ -23,6 +23,7 @@ import { TestRunner } from 'ecash-lib/dist/test/testRunner.js';
23
23
  import { AgoraPartial } from '../src/partial.js';
24
24
  import { makeSlpOffer, takeSlpOffer } from './partial-helper-slp.js';
25
25
  import { Agora, TakenInfo } from '../src/agora.js';
26
+ import { Wallet } from 'ecash-wallet/src/wallet.js';
26
27
 
27
28
  use(chaiAsPromised);
28
29
 
@@ -56,7 +57,10 @@ describe('AgoraPartial SLP', () => {
56
57
  async function makeBuilderInputs(
57
58
  values: bigint[],
58
59
  ): Promise<TxBuilderInput[]> {
60
+ // NB for these "not big sats" tests, we can just send to both, no need to sendToTwoScripts
59
61
  const txid = await runner.sendToScript(values, makerScript);
62
+ // Send some cash to the taker, since the accept() tests spend from this wallet
63
+ await runner.sendToScript(values, takerScript);
60
64
  return values.map((sats, outIdx) => ({
61
65
  input: {
62
66
  prevOut: {
@@ -472,6 +476,7 @@ describe('AgoraPartial SLP', () => {
472
476
  },
473
477
  ];
474
478
 
479
+ let cancelTxsMatchCount = 0;
475
480
  for (const testCase of TEST_CASES) {
476
481
  it(`AgoraPartial SLP ${testCase.offeredAtoms} for ${testCase.info}`, async () => {
477
482
  const agora = new Agora(chronik);
@@ -484,10 +489,7 @@ describe('AgoraPartial SLP', () => {
484
489
  });
485
490
  const askedSats = agoraPartial.askedSats(testCase.acceptedAtoms);
486
491
  const requiredSats = askedSats + 2000n;
487
- const [fuelInput, takerInput] = await makeBuilderInputs([
488
- 4000n,
489
- requiredSats,
490
- ]);
492
+ const [fuelInput] = await makeBuilderInputs([4000n, requiredSats]);
491
493
 
492
494
  const offer = await makeSlpOffer({
493
495
  chronik,
@@ -499,7 +501,6 @@ describe('AgoraPartial SLP', () => {
499
501
  chronik,
500
502
  takerSk,
501
503
  offer,
502
- takerInput,
503
504
  acceptedAtoms: testCase.acceptedAtoms,
504
505
  allowUnspendable: testCase.allowUnspendable,
505
506
  });
@@ -586,17 +587,40 @@ describe('AgoraPartial SLP', () => {
586
587
  recipientScript: makerScript,
587
588
  extraInputs: [fuelInput], // dummy input for measuring
588
589
  });
589
- const cancelTxSer = newOffer
590
- .cancelTx({
591
- cancelSk: makerSk,
592
- fuelInputs: await makeBuilderInputs([cancelFeeSats]),
593
- recipientScript: makerScript,
594
- })
595
- .ser();
596
- const cancelTxid = (await chronik.broadcastTx(cancelTxSer)).txid;
597
- const cancelTx = await chronik.tx(cancelTxid);
598
- expect(cancelTx.outputs[1].token?.atoms).to.equal(leftoverTokens);
599
- expect(cancelTx.outputs[1].outputScript).to.equal(makerScriptHex);
590
+ const cancelTx = newOffer.cancelTx({
591
+ cancelSk: makerSk,
592
+ fuelInputs: await makeBuilderInputs([cancelFeeSats]),
593
+ recipientScript: makerScript,
594
+ });
595
+ const cancelTxid = cancelTx.txid();
596
+
597
+ // Let's build and broadcast using cancel() instead
598
+ const cancelWallet = Wallet.fromSk(makerSk, chronik);
599
+ await cancelWallet.sync();
600
+ const cancelResult = await newOffer.cancel({
601
+ wallet: cancelWallet,
602
+ });
603
+ const broadcastCancelTxid = cancelResult.broadcasted[0];
604
+ if (broadcastCancelTxid === cancelTxid) {
605
+ cancelTxsMatchCount++;
606
+ console.log(
607
+ `${cancelTxsMatchCount} of ${TEST_CASES.length} produce equal txids with cancelTx() and cancel()`,
608
+ );
609
+
610
+ // Between ~5 and ~8 of 46 of these txs are identical from each method
611
+
612
+ // On inspection, when cancel() txid does not match,
613
+ // it is because cancel has selected different fuel inputs
614
+ // This is expected behavior, these txs still show change
615
+ // going to the cancel wallet as expected
616
+ }
617
+ const cancelChronikTx = await chronik.tx(broadcastCancelTxid);
618
+ expect(cancelChronikTx.outputs[1].token?.atoms).to.equal(
619
+ leftoverTokens,
620
+ );
621
+ expect(cancelChronikTx.outputs[1].outputScript).to.equal(
622
+ makerScriptHex,
623
+ );
600
624
 
601
625
  // takerIndex is 2 for full accept, 3 for partial accept
602
626
  const takerIndex = isFullAccept ? 2 : 3;
@@ -655,10 +679,7 @@ describe('AgoraPartial SLP', () => {
655
679
  });
656
680
  const askedSats = agoraPartial.askedSats(thisTestCase.acceptedAtoms);
657
681
  const requiredSats = askedSats + 2000n;
658
- const [fuelInput, takerInput] = await makeBuilderInputs([
659
- 4000n,
660
- requiredSats,
661
- ]);
682
+ const [fuelInput] = await makeBuilderInputs([4000n, requiredSats]);
662
683
 
663
684
  const offer = await makeSlpOffer({
664
685
  chronik,
@@ -683,7 +704,6 @@ describe('AgoraPartial SLP', () => {
683
704
  chronik,
684
705
  takerSk,
685
706
  offer,
686
- takerInput,
687
707
  acceptedAtoms: thisTestCase.acceptedAtoms,
688
708
  allowUnspendable: false,
689
709
  }),
@@ -713,10 +733,7 @@ describe('AgoraPartial SLP', () => {
713
733
  const acceptedAtoms = 500n;
714
734
  const askedSats = agoraPartial.askedSats(acceptedAtoms);
715
735
  const requiredSats = askedSats + 2000n;
716
- const [fuelInput, takerInput] = await makeBuilderInputs([
717
- 4000n,
718
- requiredSats,
719
- ]);
736
+ const [fuelInput] = await makeBuilderInputs([4000n, requiredSats]);
720
737
 
721
738
  const offer = await makeSlpOffer({
722
739
  chronik,
@@ -739,7 +756,6 @@ describe('AgoraPartial SLP', () => {
739
756
  chronik,
740
757
  takerSk,
741
758
  offer,
742
- takerInput,
743
759
  acceptedAtoms: acceptedAtoms,
744
760
  allowUnspendable: false,
745
761
  }),
@@ -752,7 +768,6 @@ describe('AgoraPartial SLP', () => {
752
768
  chronik,
753
769
  takerSk,
754
770
  offer,
755
- takerInput,
756
771
  acceptedAtoms: acceptedAtoms,
757
772
  allowUnspendable: undefined,
758
773
  }),
@@ -765,7 +780,6 @@ describe('AgoraPartial SLP', () => {
765
780
  chronik,
766
781
  takerSk,
767
782
  offer,
768
- takerInput,
769
783
  acceptedAtoms: acceptedAtoms,
770
784
  }),
771
785
  expectedError,