@btc-vision/transaction 1.0.41 → 1.0.44
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/browser/_version.d.ts +1 -1
- package/browser/index.js +1 -1
- package/browser/opnet.d.ts +3 -0
- package/browser/transaction/TransactionFactory.d.ts +3 -3
- package/browser/transaction/browser/BrowserSigner.d.ts +9 -0
- package/browser/transaction/browser/BrowserSignerBase.d.ts +18 -0
- package/browser/transaction/browser/extensions/UnisatSigner.d.ts +35 -0
- package/browser/transaction/browser/types/Unisat.d.ts +54 -0
- package/browser/transaction/builders/DeploymentTransaction.d.ts +2 -2
- package/browser/transaction/builders/FundingTransaction.d.ts +1 -1
- package/browser/transaction/builders/MultiSignTransaction.d.ts +4 -4
- package/browser/transaction/builders/SharedInteractionTransaction.d.ts +2 -2
- package/browser/transaction/builders/TransactionBuilder.d.ts +10 -9
- package/browser/transaction/builders/UnwrapSegwitTransaction.d.ts +3 -3
- package/browser/transaction/builders/UnwrapTransaction.d.ts +2 -2
- package/browser/transaction/builders/WrapTransaction.d.ts +1 -1
- package/browser/transaction/interfaces/ITransactionParameters.d.ts +1 -0
- package/browser/transaction/processor/PsbtTransaction.d.ts +1 -1
- package/browser/transaction/shared/TweakedTransaction.d.ts +5 -4
- package/build/_version.d.ts +1 -1
- package/build/_version.js +1 -1
- package/build/metadata/contracts/wBTC.js +1 -1
- package/build/opnet.d.ts +3 -0
- package/build/opnet.js +3 -0
- package/build/tests/adaptPSBT.js +1 -1
- package/build/tests/deploy.js +1 -2
- package/build/tests/deployMotoRegStep1.d.ts +1 -0
- package/build/tests/deployMotoRegStep1.js +85 -0
- package/build/tests/deployReg.js +2 -2
- package/build/tests/factory/createPairReg.js +6 -77
- package/build/tests/gen.js +6 -17
- package/build/tests/interaction.d.ts +5 -0
- package/build/tests/interaction.js +62 -0
- package/build/tests/mineReg.js +1 -4
- package/build/tests/moto/airdropToken.d.ts +1 -0
- package/build/tests/moto/airdropToken.js +21 -0
- package/build/tests/moto/allowance.d.ts +1 -0
- package/build/tests/moto/allowance.js +5 -0
- package/build/tests/moto/approve.d.ts +1 -0
- package/build/tests/moto/approve.js +6 -0
- package/build/tests/moto/approveWBTC.d.ts +1 -0
- package/build/tests/moto/approveWBTC.js +12 -0
- package/build/tests/moto/balanceOf.d.ts +1 -0
- package/build/tests/moto/balanceOf.js +13 -0
- package/build/tests/motoswap/airdropToken.d.ts +11 -0
- package/build/tests/motoswap/airdropToken.js +36 -0
- package/build/tests/motoswap/deployMoto.d.ts +4 -0
- package/build/tests/motoswap/deployMoto.js +87 -0
- package/build/tests/motoswap/deployMotoRegStep1.d.ts +1 -0
- package/build/tests/motoswap/deployMotoRegStep1.js +91 -0
- package/build/tests/motoswap/deployMotoRegStep2.d.ts +1 -0
- package/build/tests/motoswap/deployMotoRegStep2.js +91 -0
- package/build/tests/motoswap/deployStep1.d.ts +1 -0
- package/build/tests/motoswap/deployStep1.js +5 -0
- package/build/tests/motoswap/deployStep2.d.ts +1 -0
- package/build/tests/motoswap/deployStep2.js +5 -0
- package/build/tests/motoswap/deployStep3.d.ts +1 -0
- package/build/tests/motoswap/deployStep3.js +5 -0
- package/build/tests/motoswap/interaction.d.ts +3 -0
- package/build/tests/motoswap/interaction.js +63 -0
- package/build/tests/motoswap/routerAddLiquidity.d.ts +11 -0
- package/build/tests/motoswap/routerAddLiquidity.js +36 -0
- package/build/tests/multisign.js +1 -1
- package/build/tests/shared/Utils.d.ts +2 -0
- package/build/tests/shared/Utils.js +9 -0
- package/build/tests/shared/interaction.d.ts +5 -0
- package/build/tests/shared/interaction.js +76 -0
- package/build/tests/shared/tokens.d.ts +6 -0
- package/build/tests/shared/tokens.js +5 -0
- package/build/tests/stakeReg.js +1 -1
- package/build/tests/test.js +1 -1
- package/build/tests/testReg.js +1 -1
- package/build/tests/tokens.d.ts +6 -0
- package/build/tests/tokens.js +5 -0
- package/build/tests/transfer.js +1 -1
- package/build/tests/wbtc/approve.d.ts +1 -0
- package/build/tests/wbtc/approve.js +6 -0
- package/build/tests/wbtc/approveWBTC.d.ts +1 -0
- package/build/tests/wbtc/approveWBTC.js +12 -0
- package/build/tests/wbtc/massWrapReg.d.ts +1 -0
- package/build/tests/wbtc/massWrapReg.js +105 -0
- package/build/tests/wbtc/transferReg.d.ts +1 -0
- package/build/tests/wbtc/transferReg.js +16 -0
- package/build/tests/wbtc/unStakeReg.d.ts +1 -0
- package/build/tests/wbtc/unStakeReg.js +72 -0
- package/build/tests/wbtc/unwrapReg.d.ts +1 -0
- package/build/tests/wbtc/unwrapReg.js +60 -0
- package/build/tests/wbtc/unwrapRegSegwit.d.ts +1 -0
- package/build/tests/wbtc/unwrapRegSegwit.js +83 -0
- package/build/tests/wbtc/withdrawalRequestReg.d.ts +1 -0
- package/build/tests/wbtc/withdrawalRequestReg.js +71 -0
- package/build/tests/wbtc/wrapReg.d.ts +1 -0
- package/build/tests/wbtc/wrapReg.js +69 -0
- package/build/tests/wbtc/wrapTest.d.ts +1 -0
- package/build/tests/wbtc/wrapTest.js +66 -0
- package/build/tests/writers/allowance.d.ts +3 -0
- package/build/tests/writers/allowance.js +10 -0
- package/build/tests/writers/approve.d.ts +4 -0
- package/build/tests/writers/approve.js +11 -0
- package/build/transaction/TransactionFactory.d.ts +3 -3
- package/build/transaction/TransactionFactory.js +41 -38
- package/build/transaction/browser/BrowserSigner.d.ts +11 -0
- package/build/transaction/browser/BrowserSigner.js +10 -0
- package/build/transaction/browser/BrowserSignerBase.d.ts +18 -0
- package/build/transaction/browser/BrowserSignerBase.js +3 -0
- package/build/transaction/browser/extensions/Unisat.d.ts +54 -0
- package/build/transaction/browser/extensions/Unisat.js +11 -0
- package/build/transaction/browser/extensions/UnisatSigner.d.ts +35 -0
- package/build/transaction/browser/extensions/UnisatSigner.js +150 -0
- package/build/transaction/browser/types/Unisat.d.ts +54 -0
- package/build/transaction/browser/types/Unisat.js +11 -0
- package/build/transaction/builders/DeploymentTransaction.d.ts +2 -2
- package/build/transaction/builders/DeploymentTransaction.js +4 -4
- package/build/transaction/builders/FundingTransaction.d.ts +1 -1
- package/build/transaction/builders/FundingTransaction.js +2 -2
- package/build/transaction/builders/MultiSignTransaction.d.ts +4 -4
- package/build/transaction/builders/MultiSignTransaction.js +7 -7
- package/build/transaction/builders/SharedInteractionTransaction.d.ts +2 -2
- package/build/transaction/builders/SharedInteractionTransaction.js +6 -6
- package/build/transaction/builders/TransactionBuilder.d.ts +10 -9
- package/build/transaction/builders/TransactionBuilder.js +29 -22
- package/build/transaction/builders/UnwrapSegwitTransaction.d.ts +3 -3
- package/build/transaction/builders/UnwrapSegwitTransaction.js +10 -10
- package/build/transaction/builders/UnwrapTransaction.d.ts +2 -2
- package/build/transaction/builders/UnwrapTransaction.js +9 -6
- package/build/transaction/builders/WrapTransaction.d.ts +1 -1
- package/build/transaction/builders/WrapTransaction.js +2 -2
- package/build/transaction/interfaces/ITransactionParameters.d.ts +1 -0
- package/build/transaction/processor/PsbtTransaction.d.ts +1 -1
- package/build/transaction/processor/PsbtTransaction.js +2 -2
- package/build/transaction/shared/TweakedTransaction.d.ts +5 -4
- package/build/transaction/shared/TweakedTransaction.js +59 -23
- package/package.json +2 -2
- package/src/_version.ts +1 -1
- package/src/metadata/contracts/wBTC.ts +1 -1
- package/src/opnet.ts +81 -76
- package/src/transaction/TransactionFactory.ts +52 -44
- package/src/transaction/browser/BrowserSignerBase.ts +44 -0
- package/src/transaction/browser/extensions/UnisatSigner.ts +218 -0
- package/src/transaction/browser/types/Unisat.ts +77 -0
- package/src/transaction/builders/DeploymentTransaction.ts +4 -4
- package/src/transaction/builders/FundingTransaction.ts +40 -40
- package/src/transaction/builders/MultiSignTransaction.ts +9 -17
- package/src/transaction/builders/SharedInteractionTransaction.ts +368 -368
- package/src/transaction/builders/TransactionBuilder.ts +637 -632
- package/src/transaction/builders/UnwrapSegwitTransaction.ts +365 -362
- package/src/transaction/builders/UnwrapTransaction.ts +503 -499
- package/src/transaction/builders/WrapTransaction.ts +346 -346
- package/src/transaction/interfaces/ITransactionParameters.ts +55 -54
- package/src/transaction/processor/PsbtTransaction.ts +192 -192
- package/src/transaction/shared/TweakedTransaction.ts +109 -56
package/browser/opnet.d.ts
CHANGED
|
@@ -41,3 +41,6 @@ export * from './wbtc/UnwrapGeneration.js';
|
|
|
41
41
|
export * from './consensus/ConsensusConfig.js';
|
|
42
42
|
export * from './consensus/Consensus.js';
|
|
43
43
|
export * from './consensus/metadata/RoswellConsensus.js';
|
|
44
|
+
export * from './transaction/browser/BrowserSignerBase.js';
|
|
45
|
+
export * from './transaction/browser/extensions/UnisatSigner.js';
|
|
46
|
+
export * from './transaction/browser/types/Unisat.js';
|
|
@@ -18,9 +18,9 @@ export interface UnwrapResult {
|
|
|
18
18
|
}
|
|
19
19
|
export declare class TransactionFactory {
|
|
20
20
|
constructor();
|
|
21
|
-
signInteraction(interactionParameters: IInteractionParameters): [string, string]
|
|
22
|
-
signDeployment(deploymentParameters: IDeploymentParameters): DeploymentResult
|
|
23
|
-
wrap(warpParameters: IWrapParameters): WrapResult
|
|
21
|
+
signInteraction(interactionParameters: IInteractionParameters): Promise<[string, string]>;
|
|
22
|
+
signDeployment(deploymentParameters: IDeploymentParameters): Promise<DeploymentResult>;
|
|
23
|
+
wrap(warpParameters: IWrapParameters): Promise<WrapResult>;
|
|
24
24
|
unwrapSegwit(unwrapParameters: IUnwrapParameters): Promise<UnwrapResult>;
|
|
25
25
|
unwrap(unwrapParameters: IUnwrapParameters): Promise<UnwrapResult>;
|
|
26
26
|
private calculateNumSignatures;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Network, Psbt, Signer } from 'bitcoinjs-lib';
|
|
3
|
+
import { Address } from '@btc-vision/bsi-binary';
|
|
4
|
+
export declare abstract class CustomKeypair implements Signer {
|
|
5
|
+
abstract network: Network;
|
|
6
|
+
abstract publicKey: Buffer;
|
|
7
|
+
abstract addresses: Address[];
|
|
8
|
+
abstract p2tr: Address;
|
|
9
|
+
abstract p2pkh: Address;
|
|
10
|
+
protected constructor();
|
|
11
|
+
abstract signTaprootInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
|
|
12
|
+
abstract signInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
|
|
13
|
+
abstract getPublicKey(): Buffer;
|
|
14
|
+
abstract sign(hash: Buffer, lowR?: boolean): Buffer;
|
|
15
|
+
abstract signSchnorr(hash: Buffer): Buffer;
|
|
16
|
+
abstract verify(hash: Buffer, signature: Buffer): boolean;
|
|
17
|
+
abstract init(): Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { CustomKeypair } from '../BrowserSignerBase.js';
|
|
3
|
+
import { Network, Psbt } from 'bitcoinjs-lib';
|
|
4
|
+
import { Unisat } from '../types/Unisat.js';
|
|
5
|
+
import { Address } from '@btc-vision/bsi-binary';
|
|
6
|
+
declare global {
|
|
7
|
+
interface Window {
|
|
8
|
+
unisat?: Unisat;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export declare class UnisatSigner extends CustomKeypair {
|
|
12
|
+
private isInitialized;
|
|
13
|
+
constructor();
|
|
14
|
+
private _p2tr;
|
|
15
|
+
get p2tr(): Address;
|
|
16
|
+
private _p2pkh;
|
|
17
|
+
get p2pkh(): Address;
|
|
18
|
+
private _addresses;
|
|
19
|
+
get addresses(): Address[];
|
|
20
|
+
private _publicKey;
|
|
21
|
+
get publicKey(): Buffer;
|
|
22
|
+
_network: Network | undefined;
|
|
23
|
+
get network(): Network;
|
|
24
|
+
get unisat(): Unisat;
|
|
25
|
+
init(): Promise<void>;
|
|
26
|
+
getPublicKey(): Buffer;
|
|
27
|
+
sign(hash: Buffer, lowR?: boolean): Buffer;
|
|
28
|
+
signSchnorr(hash: Buffer): Buffer;
|
|
29
|
+
verify(hash: Buffer, signature: Buffer): boolean;
|
|
30
|
+
signTaprootInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
|
|
31
|
+
signInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
|
|
32
|
+
private combine;
|
|
33
|
+
private signTweaked;
|
|
34
|
+
private getNonDuplicateScriptSig;
|
|
35
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Address } from '@btc-vision/bsi-binary';
|
|
2
|
+
export declare enum UnisatNetwork {
|
|
3
|
+
testnet = "testnet",
|
|
4
|
+
mainnet = "livenet",
|
|
5
|
+
regtest = "regtest"
|
|
6
|
+
}
|
|
7
|
+
export interface Balance {
|
|
8
|
+
readonly confirmed: number;
|
|
9
|
+
readonly unconfirmed: number;
|
|
10
|
+
readonly total: number;
|
|
11
|
+
}
|
|
12
|
+
export declare enum MessageType {
|
|
13
|
+
ecdsa = "ecdsa",
|
|
14
|
+
bip322 = "bip322-simple"
|
|
15
|
+
}
|
|
16
|
+
interface ToSignInputBase {
|
|
17
|
+
readonly index: number;
|
|
18
|
+
readonly sighashTypes?: number[];
|
|
19
|
+
readonly disableTweakSigner?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface ToSignInputPublicKey extends ToSignInputBase {
|
|
22
|
+
readonly publicKey: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ToSignInputAddress extends ToSignInputBase {
|
|
25
|
+
readonly address: Address;
|
|
26
|
+
}
|
|
27
|
+
export type ToSignInput = ToSignInputPublicKey | ToSignInputAddress;
|
|
28
|
+
export interface PsbtSignatureOptions {
|
|
29
|
+
readonly autoFinalized?: boolean;
|
|
30
|
+
readonly toSignInputs?: ToSignInput[];
|
|
31
|
+
}
|
|
32
|
+
export interface Unisat {
|
|
33
|
+
sendBitcoin(toAddress: Address, satoshis: number, options: {
|
|
34
|
+
feeRate: number;
|
|
35
|
+
}): Promise<string>;
|
|
36
|
+
requestAccounts(): Promise<string[]>;
|
|
37
|
+
getNetwork(): Promise<UnisatNetwork>;
|
|
38
|
+
getAccounts(): Promise<string[]>;
|
|
39
|
+
switchNetwork(network: UnisatNetwork): Promise<void>;
|
|
40
|
+
getPublicKey(): Promise<string>;
|
|
41
|
+
getBalance(): Promise<Balance>;
|
|
42
|
+
signMessage(message: string, type?: MessageType): Promise<string>;
|
|
43
|
+
pushTx(options: {
|
|
44
|
+
rawtx: string;
|
|
45
|
+
}): Promise<string>;
|
|
46
|
+
signPsbt(psbtHex: string, psbtOptions: PsbtSignatureOptions): Promise<string>;
|
|
47
|
+
signPsbts(psbtHex: string[], psbtOptions: PsbtSignatureOptions): Promise<string[]>;
|
|
48
|
+
pushPsbt(psbtHex: string): Promise<string>;
|
|
49
|
+
on(event: 'accountsChanged', listener: (accounts: string[]) => void): void;
|
|
50
|
+
on(event: 'networkChanged', listener: (network: UnisatNetwork) => void): void;
|
|
51
|
+
removeListener(event: 'accountsChanged', listener: (accounts: string[]) => void): void;
|
|
52
|
+
removeListener(event: 'networkChanged', listener: (network: UnisatNetwork) => void): void;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
@@ -23,8 +23,8 @@ export declare class DeploymentTransaction extends TransactionBuilder<Transactio
|
|
|
23
23
|
get p2trAddress(): Address;
|
|
24
24
|
getRndBytes(): Buffer;
|
|
25
25
|
protected contractSignerXOnlyPubKey(): Buffer;
|
|
26
|
-
protected buildTransaction(): void
|
|
27
|
-
protected signInputs(transaction: Psbt): void
|
|
26
|
+
protected buildTransaction(): Promise<void>;
|
|
27
|
+
protected signInputs(transaction: Psbt): Promise<void>;
|
|
28
28
|
protected generateScriptAddress(): Payment;
|
|
29
29
|
protected generateTapData(): Payment;
|
|
30
30
|
private getContractSeed;
|
|
@@ -6,6 +6,6 @@ export declare class FundingTransaction extends TransactionBuilder<TransactionTy
|
|
|
6
6
|
readonly type: TransactionType.FUNDING;
|
|
7
7
|
protected childTransactionRequiredFees: bigint;
|
|
8
8
|
constructor(parameters: IFundingTransactionParameters);
|
|
9
|
-
protected buildTransaction(): void
|
|
9
|
+
protected buildTransaction(): Promise<void>;
|
|
10
10
|
protected getSignerKey(): Signer;
|
|
11
11
|
}
|
|
@@ -48,10 +48,10 @@ export declare class MultiSignTransaction extends TransactionBuilder<Transaction
|
|
|
48
48
|
static dedupeSignatures(original: TapScriptSig[], partial: TapScriptSig[]): TapScriptSig[];
|
|
49
49
|
static attemptFinalizeInputs(psbt: Psbt, startIndex: number, orderedPubKeys: Buffer[][], isFinal: boolean): boolean;
|
|
50
50
|
finalizeTransactionInputs(): boolean;
|
|
51
|
-
signPSBT(): Psbt
|
|
52
|
-
protected buildTransaction(): void
|
|
53
|
-
protected internalBuildTransaction(transaction: Psbt): boolean
|
|
54
|
-
protected signInputs(_transaction: Psbt): void
|
|
51
|
+
signPSBT(): Promise<Psbt>;
|
|
52
|
+
protected buildTransaction(): Promise<void>;
|
|
53
|
+
protected internalBuildTransaction(transaction: Psbt): Promise<boolean>;
|
|
54
|
+
protected signInputs(_transaction: Psbt): Promise<void>;
|
|
55
55
|
protected generateScriptAddress(): Payment;
|
|
56
56
|
protected generateTapData(): Payment;
|
|
57
57
|
protected getScriptSolution(input: PsbtInput): Buffer[];
|
|
@@ -24,8 +24,8 @@ export declare abstract class SharedInteractionTransaction<T extends Transaction
|
|
|
24
24
|
protected generateSecret(): Buffer;
|
|
25
25
|
protected scriptSignerXOnlyPubKey(): Buffer;
|
|
26
26
|
protected generateKeyPairFromSeed(): ECPairInterface;
|
|
27
|
-
protected buildTransaction(): void
|
|
28
|
-
protected signInputs(transaction: Psbt): void
|
|
27
|
+
protected buildTransaction(): Promise<void>;
|
|
28
|
+
protected signInputs(transaction: Psbt): Promise<void>;
|
|
29
29
|
protected generateScriptAddress(): Payment;
|
|
30
30
|
protected generateTapData(): Payment;
|
|
31
31
|
protected getScriptSolution(input: PsbtInput): Buffer[];
|
|
@@ -14,6 +14,7 @@ export declare abstract class TransactionBuilder<T extends TransactionType> exte
|
|
|
14
14
|
readonly logColor: string;
|
|
15
15
|
overflowFees: bigint;
|
|
16
16
|
transactionFee: bigint;
|
|
17
|
+
estimatedFees: bigint;
|
|
17
18
|
protected transaction: Psbt;
|
|
18
19
|
protected readonly updateInputs: UpdateInput[];
|
|
19
20
|
protected readonly outputs: PsbtOutputExtended[];
|
|
@@ -30,32 +31,32 @@ export declare abstract class TransactionBuilder<T extends TransactionType> exte
|
|
|
30
31
|
protected constructor(parameters: ITransactionParameters);
|
|
31
32
|
static getFrom(from: string | undefined, keypair: ECPairInterface, network: Network): Address;
|
|
32
33
|
static witnessStackToScriptWitness(witness: Buffer[]): Buffer;
|
|
33
|
-
getFundingTransactionParameters(): IFundingTransactionParameters
|
|
34
|
+
getFundingTransactionParameters(): Promise<IFundingTransactionParameters>;
|
|
34
35
|
setDestinationAddress(address: Address): void;
|
|
35
36
|
setMaximumFeeRate(feeRate: number): void;
|
|
36
|
-
signTransaction(): Transaction
|
|
37
|
-
signPSBT(): Psbt
|
|
37
|
+
signTransaction(): Promise<Transaction>;
|
|
38
|
+
signPSBT(): Promise<Psbt>;
|
|
38
39
|
addInput(input: PsbtInputExtended): void;
|
|
39
40
|
addOutput(output: PsbtOutputExtended): void;
|
|
40
41
|
toAddress(): string | undefined;
|
|
41
42
|
address(): Address | undefined;
|
|
42
|
-
estimateTransactionFees(): bigint
|
|
43
|
-
rebuildFromBase64(base64: string): Psbt
|
|
43
|
+
estimateTransactionFees(): Promise<bigint>;
|
|
44
|
+
rebuildFromBase64(base64: string): Promise<Psbt>;
|
|
44
45
|
setPSBT(psbt: Psbt): void;
|
|
45
|
-
protected addRefundOutput(amountSpent: bigint): void
|
|
46
|
+
protected addRefundOutput(amountSpent: bigint): Promise<void>;
|
|
46
47
|
protected addValueToToOutput(value: number | bigint): void;
|
|
47
48
|
protected getTransactionOPNetFee(): bigint;
|
|
48
49
|
protected calculateTotalUTXOAmount(): bigint;
|
|
49
50
|
protected calculateTotalVOutAmount(): bigint;
|
|
50
51
|
protected addInputsFromUTXO(): void;
|
|
51
52
|
protected internalInit(): void;
|
|
52
|
-
protected abstract buildTransaction(): void
|
|
53
|
+
protected abstract buildTransaction(): Promise<void>;
|
|
53
54
|
protected updateInput(input: UpdateInput): void;
|
|
54
55
|
protected getWitness(): Buffer;
|
|
55
56
|
protected getTapOutput(): Buffer;
|
|
56
57
|
protected getInputs(): PsbtInputExtended[];
|
|
57
58
|
protected getOutputs(): PsbtOutputExtended[];
|
|
58
59
|
protected verifyUTXOValidity(): void;
|
|
59
|
-
protected setFeeOutput(output: PsbtOutputExtended): void
|
|
60
|
-
protected internalBuildTransaction(transaction: Psbt): boolean
|
|
60
|
+
protected setFeeOutput(output: PsbtOutputExtended): Promise<void>;
|
|
61
|
+
protected internalBuildTransaction(transaction: Psbt): Promise<boolean>;
|
|
61
62
|
}
|
|
@@ -18,9 +18,9 @@ export declare class UnwrapSegwitTransaction extends SharedInteractionTransactio
|
|
|
18
18
|
private readonly calculatedSignHash;
|
|
19
19
|
constructor(parameters: IUnwrapParameters);
|
|
20
20
|
static generateBurnCalldata(amount: bigint): Buffer;
|
|
21
|
-
signPSBT(): Psbt
|
|
22
|
-
mergeVaults(input: VaultUTXOs[]): void
|
|
23
|
-
protected internalBuildTransaction(transaction: Psbt): boolean
|
|
21
|
+
signPSBT(): Promise<Psbt>;
|
|
22
|
+
mergeVaults(input: VaultUTXOs[]): Promise<void>;
|
|
23
|
+
protected internalBuildTransaction(transaction: Psbt): Promise<boolean>;
|
|
24
24
|
protected generateMultiSignRedeemScript(publicKeys: string[], minimum: number): {
|
|
25
25
|
witnessUtxo: Buffer;
|
|
26
26
|
redeemScript: Buffer;
|
|
@@ -20,7 +20,7 @@ export declare class UnwrapTransaction extends SharedInteractionTransaction<Tran
|
|
|
20
20
|
private readonly calculatedSignHash;
|
|
21
21
|
constructor(parameters: IUnwrapParameters);
|
|
22
22
|
static generateBurnCalldata(amount: bigint): Buffer;
|
|
23
|
-
signPSBT(): Psbt
|
|
23
|
+
signPSBT(): Promise<Psbt>;
|
|
24
24
|
getRefund(): bigint;
|
|
25
25
|
getFeeLossOrRefund(): bigint;
|
|
26
26
|
protected mergeVaults(): void;
|
|
@@ -35,7 +35,7 @@ export declare class UnwrapTransaction extends SharedInteractionTransaction<Tran
|
|
|
35
35
|
redeem: Payment;
|
|
36
36
|
};
|
|
37
37
|
protected getScriptSolution(input: PsbtInput): Buffer[];
|
|
38
|
-
protected internalBuildTransaction(transaction: Psbt): boolean
|
|
38
|
+
protected internalBuildTransaction(transaction: Psbt): Promise<boolean>;
|
|
39
39
|
private addVaultUTXO;
|
|
40
40
|
private addVaultInputs;
|
|
41
41
|
private calculateOutputLeftAmountFromVaults;
|
|
@@ -22,7 +22,7 @@ export declare class WrapTransaction extends SharedInteractionTransaction<Transa
|
|
|
22
22
|
constructor(parameters: IWrapParameters);
|
|
23
23
|
private static generateMintCalldata;
|
|
24
24
|
verifyPublicKeysConstraints(generation: WrappedGeneration): boolean;
|
|
25
|
-
protected buildTransaction(): void
|
|
25
|
+
protected buildTransaction(): Promise<void>;
|
|
26
26
|
private verifyRequiredValue;
|
|
27
27
|
private addVaultOutput;
|
|
28
28
|
private generateVaultAddress;
|
|
@@ -36,7 +36,7 @@ export declare class PsbtTransaction extends TweakedTransaction {
|
|
|
36
36
|
toHex(): string;
|
|
37
37
|
addInput(input: PsbtInputExtended): void;
|
|
38
38
|
addOutput(output: PsbtOutputExtended): void;
|
|
39
|
-
attemptSignAllInputs(): boolean
|
|
39
|
+
attemptSignAllInputs(): Promise<boolean>;
|
|
40
40
|
attemptFinalizeInputs(n?: number): boolean;
|
|
41
41
|
getPSBT(): Psbt;
|
|
42
42
|
private getTotalOutputAmount;
|
|
@@ -28,10 +28,12 @@ export declare abstract class TweakedTransaction extends Logger {
|
|
|
28
28
|
protected sequence: number;
|
|
29
29
|
protected tapLeafScript: TapLeafScript | null;
|
|
30
30
|
protected nonWitnessUtxo?: Buffer;
|
|
31
|
+
protected readonly isBrowser: boolean;
|
|
31
32
|
protected regenerated: boolean;
|
|
32
33
|
protected ignoreSignatureErrors: boolean;
|
|
33
34
|
protected constructor(data: ITweakedTransactionData);
|
|
34
35
|
static readScriptWitnessToWitnessStack(buffer: Buffer): Buffer[];
|
|
36
|
+
static preEstimateTaprootTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numWitnessElements: bigint, witnessElementSize: bigint, emptyWitness: bigint, taprootControlWitnessSize?: bigint, taprootScriptSize?: bigint): bigint;
|
|
35
37
|
protected static signInput(transaction: Psbt, input: PsbtInput, i: number, signer: Signer, sighashTypes: number[]): void;
|
|
36
38
|
protected static calculateSignHash(sighashTypes: number[]): number;
|
|
37
39
|
ignoreSignatureError(): void;
|
|
@@ -41,15 +43,14 @@ export declare abstract class TweakedTransaction extends Logger {
|
|
|
41
43
|
disableRBF(): void;
|
|
42
44
|
getTweakerHash(): Buffer | undefined;
|
|
43
45
|
preEstimateTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numSignatures: bigint, numPubkeys: bigint): bigint;
|
|
44
|
-
static preEstimateTaprootTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numWitnessElements: bigint, witnessElementSize: bigint, emptyWitness: bigint, taprootControlWitnessSize?: bigint, taprootScriptSize?: bigint): bigint;
|
|
45
46
|
protected generateTapData(): Payment;
|
|
46
47
|
protected generateScriptAddress(): Payment;
|
|
47
48
|
protected getSignerKey(): Signer;
|
|
48
|
-
protected signInput(transaction: Psbt, input: PsbtInput, i: number, signer?: Signer): void
|
|
49
|
-
protected signInputs(transaction: Psbt): void
|
|
49
|
+
protected signInput(transaction: Psbt, input: PsbtInput, i: number, signer?: Signer): Promise<void>;
|
|
50
|
+
protected signInputs(transaction: Psbt): Promise<void>;
|
|
50
51
|
protected internalPubKeyToXOnly(): Buffer;
|
|
51
52
|
protected internalInit(): void;
|
|
52
53
|
protected tweakSigner(): void;
|
|
53
|
-
protected getTweakedSigner(useTweakedHash?: boolean, signer?: Signer): Signer;
|
|
54
|
+
protected getTweakedSigner(useTweakedHash?: boolean, signer?: Signer): Signer | undefined;
|
|
54
55
|
protected generatePsbtInputExtended(utxo: UTXO, i: number): PsbtInputExtended;
|
|
55
56
|
}
|
package/build/_version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "1.0.
|
|
1
|
+
export declare const version = "1.0.44";
|
package/build/_version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.0.
|
|
1
|
+
export const version = '1.0.44';
|
|
@@ -16,7 +16,7 @@ export class wBTC extends ContractBaseMetadata {
|
|
|
16
16
|
case networks.bitcoin.bech32:
|
|
17
17
|
return 'unknown';
|
|
18
18
|
case networks.regtest.bech32:
|
|
19
|
-
return '
|
|
19
|
+
return 'bcrt1q99qtptumw027cw8w274tqzd564q66u537vn0lh';
|
|
20
20
|
case networks.testnet.bech32:
|
|
21
21
|
return 'tb1qj58a6yf4pez426nqvf8wyu6ssggcajw8kr44vy';
|
|
22
22
|
default:
|
package/build/opnet.d.ts
CHANGED
|
@@ -41,3 +41,6 @@ export * from './wbtc/UnwrapGeneration.js';
|
|
|
41
41
|
export * from './consensus/ConsensusConfig.js';
|
|
42
42
|
export * from './consensus/Consensus.js';
|
|
43
43
|
export * from './consensus/metadata/RoswellConsensus.js';
|
|
44
|
+
export * from './transaction/browser/BrowserSignerBase.js';
|
|
45
|
+
export * from './transaction/browser/extensions/UnisatSigner.js';
|
|
46
|
+
export * from './transaction/browser/types/Unisat.js';
|
package/build/opnet.js
CHANGED
|
@@ -41,3 +41,6 @@ export * from './wbtc/UnwrapGeneration.js';
|
|
|
41
41
|
export * from './consensus/ConsensusConfig.js';
|
|
42
42
|
export * from './consensus/Consensus.js';
|
|
43
43
|
export * from './consensus/metadata/RoswellConsensus.js';
|
|
44
|
+
export * from './transaction/browser/BrowserSignerBase.js';
|
|
45
|
+
export * from './transaction/browser/extensions/UnisatSigner.js';
|
|
46
|
+
export * from './transaction/browser/types/Unisat.js';
|
package/build/tests/adaptPSBT.js
CHANGED
|
@@ -37,7 +37,7 @@ const psbtTransactionData2 = {
|
|
|
37
37
|
};
|
|
38
38
|
const psbtTransaction2 = PsbtTransaction.fromBase64('AHBzYnT/AQCJAgAAAAGqpr9zTL0OUcMPJqSjy18vGXoaAwonXBXnpciJFtGgggEAAAAA/f///wLgP+4FAAAAACIAIPxalL3e9VOleQh1cyXELH155fo5VCUAMolPgEQO/yfFSgEAAAAAAAAiUSDL4fsq34Gxa6Svuzh0P0c4zLKBcNLvw1o8qTZs5k6kUQAAAAAAAQErAOH1BQAAAAAiACD8WpS93vVTpXkIdXMlxCx9eeX6OVQlADKJT4BEDv8nxSICAgPmjuI2/MNJM9STswWm8MdWEllHHRPs0Q3+DjdjOny+RzBEAiAZRgcFaRr39GY9sko5lKWov4g4i+77dNzCMKHR2WUbHQIgaPfYFjQZt0sCItEkosLeCZD94VPH4T2q/pZXP//x/luBAQMEgQAAAAEFi1IhAgPmjuI2/MNJM9STswWm8MdWEllHHRPs0Q3+DjdjOny+IQLTjqWw7J4i27NkBrqjxbuwJwjivZTUkpfqbz69JtGMdyEDgkTBMHBPHlBosIU5FOjDbtRC+QtBZmC6HPo353wVzMghA7ZKMoDQJlcQNbzIikCE5MPiFC81RvHHTeTMRx2/bFiOVK4AAAA=', psbtTransactionData2);
|
|
39
39
|
psbtTransaction2.ignoreSignatureError();
|
|
40
|
-
const s = psbtTransaction2.attemptSignAllInputs();
|
|
40
|
+
const s = await psbtTransaction2.attemptSignAllInputs();
|
|
41
41
|
const f = psbtTransaction2.attemptFinalizeInputs(1);
|
|
42
42
|
console.log(psbtTransaction2, s, f);
|
|
43
43
|
const newPsbt = psbtTransaction2.getTransaction().toHex();
|
package/build/tests/deploy.js
CHANGED
|
@@ -13,7 +13,6 @@ const utxoSetting = {
|
|
|
13
13
|
minAmount: 10000n,
|
|
14
14
|
requestedAmount: 100000n,
|
|
15
15
|
};
|
|
16
|
-
console.log(utxoSetting);
|
|
17
16
|
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
18
17
|
if (!utxos) {
|
|
19
18
|
throw new Error('No UTXOs found');
|
|
@@ -28,7 +27,7 @@ const deploymentParameters = {
|
|
|
28
27
|
priorityFee: 50000n,
|
|
29
28
|
bytecode: bytecode,
|
|
30
29
|
};
|
|
31
|
-
const finalTx = factory.signDeployment(deploymentParameters);
|
|
30
|
+
const finalTx = await factory.signDeployment(deploymentParameters);
|
|
32
31
|
console.log(`Final transaction:`, finalTx);
|
|
33
32
|
const firstTxBroadcast = await utxoManager.broadcastTransaction(finalTx.transaction[0], false);
|
|
34
33
|
console.log(`First transaction broadcasted:`, firstTxBroadcast);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Wallet } from '../keypair/Wallet.js';
|
|
2
|
+
import { Regtest } from './Regtest.js';
|
|
3
|
+
import { OPNetLimitedProvider } from '../utxo/OPNetLimitedProvider.js';
|
|
4
|
+
import { networks } from 'bitcoinjs-lib';
|
|
5
|
+
import { TransactionFactory } from '../transaction/TransactionFactory.js';
|
|
6
|
+
import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
const network = networks.regtest;
|
|
9
|
+
const rpc = new BitcoinRPC();
|
|
10
|
+
const wallet = new Wallet(Regtest.wallet, network);
|
|
11
|
+
const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
|
|
12
|
+
const factory = new TransactionFactory();
|
|
13
|
+
const shouldMineBlock = false;
|
|
14
|
+
async function mineBlock() {
|
|
15
|
+
const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
|
|
16
|
+
if (!ok) {
|
|
17
|
+
throw new Error('Could not mine block');
|
|
18
|
+
}
|
|
19
|
+
console.log(`Mined block`, ok);
|
|
20
|
+
return !!ok.length;
|
|
21
|
+
}
|
|
22
|
+
await rpc.init(Regtest.config);
|
|
23
|
+
const requestedAmount = 100000000000n;
|
|
24
|
+
const utxoSetting = {
|
|
25
|
+
addresses: [wallet.p2wpkh, wallet.p2tr],
|
|
26
|
+
minAmount: 10000n,
|
|
27
|
+
requestedAmount: requestedAmount,
|
|
28
|
+
};
|
|
29
|
+
function shuffleArray(array) {
|
|
30
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
31
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
32
|
+
[array[i], array[j]] = [array[j], array[i]];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
36
|
+
if (!utxos) {
|
|
37
|
+
throw new Error('No UTXOs found');
|
|
38
|
+
}
|
|
39
|
+
shuffleArray(utxos);
|
|
40
|
+
const bytecode = fs.readFileSync('./bytecode/wbtc.wasm');
|
|
41
|
+
for (let utxo of utxos) {
|
|
42
|
+
const deploymentParameters = {
|
|
43
|
+
from: wallet.p2wpkh,
|
|
44
|
+
utxos: [utxo],
|
|
45
|
+
signer: wallet.keypair,
|
|
46
|
+
network: network,
|
|
47
|
+
feeRate: 500,
|
|
48
|
+
priorityFee: 50000n,
|
|
49
|
+
bytecode: bytecode,
|
|
50
|
+
};
|
|
51
|
+
try {
|
|
52
|
+
const finalTx = factory.signDeployment(deploymentParameters);
|
|
53
|
+
console.log(`Final transaction:`, finalTx);
|
|
54
|
+
let txid;
|
|
55
|
+
try {
|
|
56
|
+
txid = await utxoManager.broadcastTransaction(finalTx.transaction[0], false);
|
|
57
|
+
console.log(`Transaction ID:`, txid);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (!txid) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
txid = await utxoManager.broadcastTransaction(finalTx.transaction[1], false);
|
|
67
|
+
console.log(`Transaction ID:`, txid);
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (!txid) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
console.log(`Contract deployed at ${finalTx.contractAddress}`);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
if (shouldMineBlock) {
|
|
83
|
+
await mineBlock();
|
|
84
|
+
}
|
|
85
|
+
rpc.destroy();
|
package/build/tests/deployReg.js
CHANGED
|
@@ -37,7 +37,7 @@ if (!utxos) {
|
|
|
37
37
|
throw new Error('No UTXOs found');
|
|
38
38
|
}
|
|
39
39
|
shuffleArray(utxos);
|
|
40
|
-
const bytecode = fs.readFileSync('./bytecode/
|
|
40
|
+
const bytecode = fs.readFileSync('./bytecode/wbtc.wasm');
|
|
41
41
|
for (let utxo of utxos) {
|
|
42
42
|
const deploymentParameters = {
|
|
43
43
|
from: wallet.p2wpkh,
|
|
@@ -49,7 +49,7 @@ for (let utxo of utxos) {
|
|
|
49
49
|
bytecode: bytecode,
|
|
50
50
|
};
|
|
51
51
|
try {
|
|
52
|
-
const finalTx = factory.signDeployment(deploymentParameters);
|
|
52
|
+
const finalTx = await factory.signDeployment(deploymentParameters);
|
|
53
53
|
console.log(`Final transaction:`, finalTx);
|
|
54
54
|
let txid;
|
|
55
55
|
try {
|
|
@@ -1,84 +1,13 @@
|
|
|
1
|
-
import { wBTC } from '../../metadata/contracts/wBTC.js';
|
|
2
|
-
import { Wallet } from '../../keypair/Wallet.js';
|
|
3
|
-
import { Regtest } from '../Regtest.js';
|
|
4
|
-
import { OPNetLimitedProvider } from '../../utxo/OPNetLimitedProvider.js';
|
|
5
|
-
import { networks } from 'bitcoinjs-lib';
|
|
6
|
-
import { TransactionFactory } from '../../transaction/TransactionFactory.js';
|
|
7
|
-
import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
|
|
8
1
|
import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
|
|
9
|
-
|
|
10
|
-
const rpc = new BitcoinRPC();
|
|
11
|
-
const wBtc = new wBTC(network);
|
|
12
|
-
const wallet = new Wallet(Regtest.wallet, network);
|
|
13
|
-
const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
|
|
14
|
-
const factory = new TransactionFactory();
|
|
2
|
+
import { MOTO_ADDRESS, WBTC_ADDRESS } from '../shared/tokens.js';
|
|
15
3
|
const abiCoder = new ABICoder();
|
|
16
|
-
const
|
|
17
|
-
const MOTO_CONTRACT = 'bcrt1q6zk8yjz2l2mzhy0xa645jzsuh44gg3re8qr5zj';
|
|
18
|
-
const FACTORY_CONTRACT = 'bcrt1q65enkl69g8ysh5tg9v7g35dmxzuy34egjftz6w';
|
|
4
|
+
const createPoolSelector = Number(`0x` + abiCoder.encodeSelector('createPool'));
|
|
19
5
|
function generateCalldata() {
|
|
20
6
|
const addCalldata = new BinaryWriter();
|
|
21
|
-
addCalldata.writeSelector(
|
|
22
|
-
addCalldata.writeAddress(
|
|
23
|
-
addCalldata.writeAddress(
|
|
7
|
+
addCalldata.writeSelector(createPoolSelector);
|
|
8
|
+
addCalldata.writeAddress(WBTC_ADDRESS);
|
|
9
|
+
addCalldata.writeAddress(MOTO_ADDRESS);
|
|
24
10
|
return Buffer.from(addCalldata.getBuffer());
|
|
25
11
|
}
|
|
26
|
-
const shouldMineBlock = true;
|
|
27
|
-
async function mineBlock() {
|
|
28
|
-
const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
|
|
29
|
-
if (!ok) {
|
|
30
|
-
throw new Error('Could not mine block');
|
|
31
|
-
}
|
|
32
|
-
return !!ok.length;
|
|
33
|
-
}
|
|
34
|
-
await rpc.init(Regtest.config);
|
|
35
|
-
const requestedAmount = 1n * 10000000000000n;
|
|
36
|
-
const utxoSetting = {
|
|
37
|
-
addresses: [wallet.p2wpkh, wallet.p2tr],
|
|
38
|
-
minAmount: 10000n,
|
|
39
|
-
requestedAmount: requestedAmount,
|
|
40
|
-
};
|
|
41
|
-
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
42
|
-
if (!utxos) {
|
|
43
|
-
throw new Error('No UTXOs found');
|
|
44
|
-
}
|
|
45
12
|
const calldata = generateCalldata();
|
|
46
|
-
|
|
47
|
-
const interactionParameters = {
|
|
48
|
-
from: wallet.p2wpkh,
|
|
49
|
-
to: FACTORY_CONTRACT,
|
|
50
|
-
utxos: [utxo],
|
|
51
|
-
signer: wallet.keypair,
|
|
52
|
-
network: network,
|
|
53
|
-
feeRate: 140,
|
|
54
|
-
priorityFee: 45000n,
|
|
55
|
-
calldata: calldata,
|
|
56
|
-
};
|
|
57
|
-
const finalTx = factory.signInteraction(interactionParameters);
|
|
58
|
-
let txid;
|
|
59
|
-
try {
|
|
60
|
-
txid = await utxoManager.broadcastTransaction(finalTx[0], false);
|
|
61
|
-
console.log(`Transaction ID:`, txid);
|
|
62
|
-
}
|
|
63
|
-
catch (e) {
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
if (!txid) {
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
try {
|
|
70
|
-
txid = await utxoManager.broadcastTransaction(finalTx[1], false);
|
|
71
|
-
console.log(`Transaction ID:`, txid);
|
|
72
|
-
}
|
|
73
|
-
catch (e) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
if (!txid) {
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
if (shouldMineBlock) {
|
|
82
|
-
await mineBlock();
|
|
83
|
-
}
|
|
84
|
-
rpc.destroy();
|
|
13
|
+
console.log('createPool', calldata.toString('hex'));
|
package/build/tests/gen.js
CHANGED
|
@@ -1,30 +1,19 @@
|
|
|
1
|
-
import { TapscriptVerificator } from '../verification/TapscriptVerificator.js';
|
|
2
1
|
import { networks } from 'bitcoinjs-lib';
|
|
3
2
|
import { Regtest } from './Regtest.js';
|
|
4
3
|
import { Wallet } from '../keypair/Wallet.js';
|
|
5
|
-
import { EcKeyPair } from '../keypair/EcKeyPair.js';
|
|
6
4
|
import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
|
|
7
5
|
const walletTest = new Wallet(Regtest.wallet, networks.testnet);
|
|
8
6
|
console.log(walletTest);
|
|
9
7
|
const wallet = new Wallet(Regtest.wallet, networks.regtest);
|
|
10
8
|
console.log(wallet);
|
|
11
9
|
const selector = new ABICoder().encodeSelector('approve');
|
|
12
|
-
console.log('
|
|
10
|
+
console.log('approve', Number(`0x${selector}`), selector);
|
|
13
11
|
const balanceOf = Number('0x' + new ABICoder().encodeSelector('balanceOf'));
|
|
12
|
+
const totalSupplyS = Number('0x' + new ABICoder().encodeSelector('totalSupply'));
|
|
14
13
|
const balanceCall = new BinaryWriter();
|
|
15
14
|
balanceCall.writeSelector(balanceOf);
|
|
16
|
-
balanceCall.writeAddress('
|
|
15
|
+
balanceCall.writeAddress('bcrt1pmc2dz8fy4rwghzmfz4hdsennusld8cwgtr0mjxl45wt8cnqcm3psssc327');
|
|
16
|
+
const totalSupply = new BinaryWriter();
|
|
17
|
+
totalSupply.writeSelector(totalSupplyS);
|
|
17
18
|
console.log('balanceOf', balanceOf, Buffer.from(balanceCall.getBuffer()).toString('hex'));
|
|
18
|
-
|
|
19
|
-
const rndWallet = new Wallet(rndGeneratedRegWallet, networks.regtest);
|
|
20
|
-
console.log('rnd', rndWallet);
|
|
21
|
-
const params = {
|
|
22
|
-
bytecode: Buffer.from('deadbeef', 'hex'),
|
|
23
|
-
contractSaltPubKey: Buffer.from('deadbeef', 'hex'),
|
|
24
|
-
deployerPubKeyXOnly: wallet.xOnly,
|
|
25
|
-
originalSalt: Buffer.from('deadbeef', 'hex'),
|
|
26
|
-
network: networks.regtest,
|
|
27
|
-
};
|
|
28
|
-
const contractAddress = TapscriptVerificator.getContractAddress(params);
|
|
29
|
-
const virtualAddress = TapscriptVerificator.generateContractVirtualAddress(params.deployerPubKeyXOnly, params.bytecode, params.originalSalt, networks.regtest);
|
|
30
|
-
console.log('contract sewgit address', virtualAddress, '\ncontract p2tr address', contractAddress);
|
|
19
|
+
console.log('totalSupply', totalSupplyS, Buffer.from(totalSupply.getBuffer()).toString('hex'));
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Wallet } from '../keypair/Wallet.js';
|
|
3
|
+
import { Address } from '@btc-vision/bsi-binary';
|
|
4
|
+
export declare const wallet: Wallet;
|
|
5
|
+
export declare function interact(contract: Address, calldata: Buffer, mine?: boolean): Promise<void>;
|