介绍
在以太坊开发中,与智能合约交互需要使用钱包账户进行数字签名,并将签名后的交易发送到以太坊网络中。@ethersproject/abstract-signer 是一个 npm 包,提供了创建数字签名者 (Signer) 并进行签名等操作的功能。
安装
可以使用 npm 或 yarn 安装 @ethersproject/abstract-signer 包,例如:
- -- --- -- --- ------- ------------------------------ - -- ---- -- ---- --- ------------------------------
创建数字签名者
@ethersproject/abstract-signer 包提供了各种不同类型的数字签名者,例如钱包签名者、JSON 文件签名者等。不同的签名者类型都实现了 Signer 接口,可以使用相同的方式进行数字签名和操作。
使用钱包地址创建钱包签名者
可以使用钱包地址创建钱包签名者。下面是使用以太坊 JSON-RPC 节点连接方式创建钱包签名者的示例代码:
------ - ------ - ---- --------- ------ - ------------ - ---- --------------------------- ------ - ------ - ---- ------------------------ ------ - ------------- - ---- --------------------------- ------ - ----------- - ---- --------------------------- ------ - ---- - ---- --------------------------- ------ - --------- - ---- --------------------------- ----- ------------ - --- ------------------------------ ----- ------ - ------------------------- ----- ------------ - --- ---------------
其中:
- ethers 是 @ethersproject/providers、@ethersproject/wallet 等 npm 包的入口;
- Web3Provider 是以太坊 JSON-RPC 连接的提供者。可以使用 window.ethereum 或者 Infura 的提供者节点,例如:
----- ------------ - --- ------------- --- ------------------------------------------------------------------------ --
- Wallet 是钱包签名者的实现类;
- getSigner() 方法用于从 Web3Provider 中获取签名者。
使用私钥创建钱包签名者
可以使用私钥创建钱包签名者。下面是使用私钥创建钱包签名者的示例代码:
------ - ------ - ---- --------- ----- ---------- - --------------------------------------------------------------------- ----- ------------ - --- -------------------
使用 JSON 文件创建签名者
可以使用 JSON 文件创建签名者。下面是使用 JSON 文件创建签名者的示例代码:
------ - ------ - ---- --------- ------ -- ---- ----- ----- ---- - -------------------------------- -------- ----- -------- - ------------------- ----- ------------ - ------------------------------------- ----------
签名和发送交易
使用钱包签名者进行数字签名和交易发送的示例代码:
------ - ------ - ---- --------- ------ - -------- - ---- --------------------------- ------ - ----- - ---- --------------------------- ------ - ---------- - ---- ----------------------- ------ - ------ - ---- ------------------------ ----- --------------- - ----------------------------------------------- ----- ----------- - ------ ----- ---------------- - --------------------------------------------------------------------- ----- ------------ - --- ------------------------------------------ ------------------- ----- -------- - --- ------------------------- ------------ -------------- ----- ------ - --- ------------------------ -------------- ----- ---------------- - -------------------------------------------- ----- -- - ----- ----------------------------------- ------------------- - --------- ------- --------- ------------------------------ -------- --- ----- -------- - ----- ---------------- ----- ------ - ----- ---------------------------------------
其中:
- InfuraProvider 是 Infura 节点提供者,可以使用 Infura 的节点连接以太坊网络;
- Contract 是以太坊智能合约的实例;
- Wallet 通过私钥创建签名者实例;
- transfer 方法是以太坊代币转账合约中的方法;
- parseEther 和 parseUnits 方法是将以太金额转换为 Wei 值;
- sign 方法使用钱包签名者对交易进行数字签名;
- sendTransaction 方法将签名后的交易发送给以太坊网络。
总结
本文介绍了 @ethersproject/abstract-signer 包的使用方法,包括创建数字签名者和进行签名和交易操作。希望能对以太坊开发者有所帮助。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedc1c3b5cbfe1ea0611eea