介绍
@97network/gdao 是一个基于 Gnosis Safe 智能合约的 Node.js 包。它提供了一系列简单易用的函数接口,供 Node.js 开发者调用 Gnosis Safe 合约的方法。它能够让你在 Node.js 应用中轻松地读取、创建、修改 Gnosis Safe 合约。
安装
要使用 @97network/gdao,你需要首先在你的项目中安装它。可以通过 npm 安装,命令如下:
npm install @97network/gdao
使用
使用 @97network/gdao,你需要连接一个以太坊节点,并且拥有对 Gnosis Safe 合约的访问权限。以下为一个简单的示例代码,它演示了如何读取 Gnosis Safe 合约的余额:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ---- - --------------------------- ----- ---- - --- ---------------------------------- ----- ---- - --- ----------- ----- ----------- - --------------------------------------------- ------ -- -- - --- - ----- ------- - ----- --------------------------------- --------------------- - ----- --- - --------------- - -----
在上述示例代码中,我们首先创建了一个 Web3 实例,并将其连接到了以太坊节点。然后,我们创建了一个 Gdao 实例,并传入了我们所连接的 Web3 对象。接着,我们指定了要查询余额的 Gnosis Safe 的地址,并调用了 gdao 的 getSafeBalance 函数。最后,我们输出了获取到的余额。
如果你希望在开发中使用本地的以太坊节点,可以参考以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------- - ------------------------ ----- ---- - --------------------------- ----- -------- - ------------------- ----- ---- - --- --------------- ----- ---- - --- ----------- -- ---------
在上述代码中,我们使用了 ganache-core 包作为本地的以太坊节点。我们创建了一个 provider 对象,并将其传入了 Web3 中。最后,我们将连接到这个 provider 的 web3 对象传递给了 gdao。
API
构造函数
const gdao = new Gdao(web3 [, options])
创建一个 Gdao 实例。
参数:
- web3 - 一个已连接到以太坊网络的 web3 实例对象。
- options - 配置对象,可选,包含以下字段:
- gasPrice - 以 Gwei 为单位的 gas 价格。默认值为 20 Gwei。
- gasLimit - 每次交易的 gas 上限。默认值为 300000。
getSafeBalance
const balance = await gdao.getSafeBalance(safeAddress);
获取指定 Gnosis Safe 合约的余额。
参数:
- safeAddress - 待查询余额的 Gnosis Safe 合约地址。
getSafeInfo
const info = await gdao.getSafeInfo(safeAddress);
获取指定 Gnosis Safe 合约的信息。
参数:
- safeAddress - 待查询信息的 Gnosis Safe 合约地址。
返回值:
- info - 包含如下字段的对象:
- owners - Gnosis Safe 交易授权者的地址列表。
- threshold - 交易的多重签名阈值。
- currentNonce - 当前交易 nonce,用于避免交易重放。
signTransaction
const signature = await gdao.signTransaction(transaction, privateKey);
使用指定的私钥对交易进行签名。
参数:
- transaction - 代表待签名交易的对象,包含以下字段:
- from - 发送者地址。
- to - 接收者地址。
- value - 转账金额。
- data - 调用合约的数据。
- gas - gas 上限。
- gasPrice - gas 价格。
- nonce - 交易 nonce。
- chainId - 链的 ID。
- privateKey - 用于进行签名的私钥。
返回值:
- signature - 签名结果,包含 r、s 和 v 值。
executeTransaction
const result = await gdao.executeTransaction(safeAddress, transaction, privateKey);
使用指定的私钥对交易进行签名,并将签名后的交易发送给 Gnosis Safe 合约进行执行。注意,本函数并不会将交易上链。实际应用中,你需要通过 web3 等工具将交易上链。
参数:
- safeAddress - 待操作的 Gnosis Safe 合约地址。
- transaction - 代表待执行交易的对象,包含以下字段:
- from - 发送者地址。
- to - 接收者地址。
- value - 转账金额。
- data - 调用合约的数据。
- gas - gas 上限。
- gasPrice - gas 价格。
- nonce - 交易 nonce。
- chainId - 链的 ID。
- privateKey - 用于进行签名的私钥。
返回值:
- result - 一个包含如下字段的对象:
- transactionHash - 交易哈希。
- success - 是否执行成功。
- error - 错误信息。
结语
通过本文,你应该已经掌握了如何使用 @97network/gdao 包进行 Gnosis Safe 合约的交互了。当然,这只是一个基础,你可以通过查看 Web3.js API 等文档来深入学习和了解更多内容。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600559e181e8991b448d7707