使用 TypeScript 与多重签名钱包交互
引言
如果您不知道TON中的多重签名钱包是什么,可以在此处查看。
按照以下步骤操作,您将学习如何:
- 创建并部署多重签名钱包
- 使用该钱包创建、签名并发送交易
我们将创建一个TypeScript项目,并使用ton库,因此您需要首先安装它。我们还将使用ton-access:
yarn add typescript @types/node ton ton-crypto ton-core buffer @orbs-network/ton-access
yarn tsc --init -t es2022
本指南的完整代码可在此处查看:
创建并部署多重签名钱包
首先创建一个源文件,例如main.ts
。在您喜欢的代码编辑器中打开它,然后按照本指南操作!
首先我们需要导入所有重要的东西
import { Address, beginCell, MessageRelaxed, toNano, TonClient, WalletContractV4, MultisigWallet, MultisigOrder, MultisigOrderBuilder } from "ton";
import { KeyPair, mnemonicToPrivateKey } from 'ton-crypto';
import { getHttpEndpoint } from "@orbs-network/ton-access";
创建TonClient
实例:
const endpoint = await getHttpEndpoint();
const client = new TonClient({ endpoint });
然后我们需要一些密钥对来操作:
let keyPairs: KeyPair[] = [];
let mnemonics[] = [
['orbit', 'feature', ...], //this should be the seed phrase of 24 words
['sing', 'pattern', ...],
['piece', 'deputy', ...],
['toss', 'shadow', ...],
['guard', 'nurse', ...]
];
for (let i = 0; i < mnemonics.length; i++) keyPairs[i] = await mnemonicToPrivateKey(mnemonics[i]);
创建MultisigWallet
对象有两种方式:
- 从地址导入现有钱包
let addr: Address = Address.parse('EQADBXugwmn4YvWsQizHdWGgfCTN_s3qFP0Ae0pzkU-jwzoE');
let mw: MultisigWallet = await MultisigWallet.fromAddress(addr, { client });
- 创建一个新的
let mw: MultisigWallet = new MultisigWallet([keyPairs[0].publicKey, keyPairs[1].publicKey], 0, 0, 1, { client });
部署它也有两种方式
- 通过内部消息
let wallet: WalletContractV4 = WalletContractV4.create({ workchain: 0, publicKey: keyPairs[4].publicKey });
//wallet should be active and have some balance
await mw.deployInternal(wallet.sender(client.provider(wallet.address, null), keyPairs[4].secretKey), toNano('0.05'));
- 通过外部消息
await mw.deployExternal();