什么是 ethereum-common?
ethereum-common 是针对以太坊的 JavaScript 库,它包含了一系列关于以太坊链的工具和帮助函数。你可以用所有这些函数和工具来加快以太坊开发的过程以及打包优化。ethereum-common 真正成为了以太坊开发的工具包。
开始使用 ethereum-common
安装
运行以下命令以安装 ethereum-common:
npm instal ethereum-common
使用
当安装好 ethereum-common 后,在你的代码中引入它:
const { Common } = require('ethereum-common'); const network = 'mainnet'; // 这里可以是 goerli、ropsten 等其它网络; const common = new Common({ chain: network }); // 接下来就可以使用 common 的所有函数或工具了。
ethereum-common 的功能
可用网络
- mainnet
- rinkeby
- kovan
- ropsten
- goerli
- xdai
- polygon
- matic
功能和方法
create
此函数从地址、JSON 文件或私钥中创建一个 Account
对象,仅当需要从去中心化存储中恢复现有账户时才需要。
签名方法中使用此类的账户时,用户必须提供获取此账户的密码或私钥。
const account = common.create(new Uint8Array(32)); console.log(account); // 私钥 (hex): 0x8c7016f01948fbf033d9baf5ab5f50a5b5c5cd5d5d5ec5e5c5c5e5c5c5e5c5c5
toBuffer
此方法将常见输入格式 (string | Buffer | number | Uint8Array | Big | BN | Array<number>)
转换为 Buffer。
console.log(common.toBuffer('0x012345aBcDeF')); console.log(common.toBuffer([0x01, 0x23, 0x45, 0xAB, 0xCD, 0xEF]));
sha3
一个对输入和算法的简单的包装器,这个方法将值进行哈希,返回结果。
const hash = common.sha3('0x012345aBcDeF'); console.log(hash); // "0x1fa6b8190f5c5de5b977309f52d7b793021c8eab76b11ac9d3a7a1e5c5f5bb5d"
splitSignature
此方法从签名参数中拆分数字签名,并将它们作为 v、r、s 三个部分返回。
const signature = common.splitSignature('0x6f243b79aefa55f608761585aa0b1debd663d63c63ca2da1dd9dce61cc98215b684484b0e068973a3c3a2d1ee0880af174038105881b9ba13d7f4580e09d2b801'); console.log(signature); // {v: 28, r: "0xc47db76c78fbb031087d76625d62f69443a74c952e86fab27027ccfc9b810885", s: "0x7caf76aa4e4eb4d4f8588adca6e4d9de9b6af0c5358f47ebcfbf5cbf44b7cdae"}
ecsign
此方法将已签名的消息(即带有私钥的数据)哈希后,生成 ECDSA 签名,并返回一个对象,其中包含 r、s 和 v 参数。
const privateKey = '0x5444e1ad8dbeb4bc9d9a6b95544b17525e6e950a225307aaa34d1e802235a8c7'; const messageHash = '0xb670055beff1c8b61affe0545701c52a3f3b609f8eaf3fedd9f257614f221104'; const signature = common.ecsign(Buffer.from(messageHash.slice(2), 'hex'), Buffer.from(privateKey.slice(2), 'hex')); console.log(signature); // {r: "0x2f1a3153f3e718b183ceb3e0edec214dc85806b251106c19629a173f581e5ba0", s: "0x6be6895b5ea0c9d3b3ca8c54b5e0e17c4c4f2182c1ff38f42b16251ee716359f", v: 27}
示例代码
以下代码展示了如何使用 ethereum-common 包的函数来签名以太坊交易。
-- -------------------- ---- ------- ----- - ------ - - --------------------------- ----- ---- - ---------------- ----- ------- - ---------- ----- ------ - --- -------- ------ ------- --- -- -- ---- --- ----- ---- - --- -------- ------------------------------------------------------ ----- ---------- - --------------------------------------------------------------------- -- ------ ----- -- - - ----- --------------------------------------------- --- --------------------------------------------- ------ -------------------- ---- -------- --------- ------------ ------ ------- -- -- ------- ----- -------- ------------------- ----------- - ----- ------ - ----- ------------------------------------- ------------ -------------------- ------ ---------------------- - ----- -------- - ------------------- ------------ ----------------------
总结
ethereum-common 是一个十分有用的工具包,它可以帮助你更快捷地开发、打包和优化以太坊应用。在本文中,我们介绍了 ethereum-common 的一些常用函数和工具,以及如何引入和使用 ethereum-common。了解和掌握 ethereum-common 会对以太坊开发非常有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/57406