在以太坊的开发中,经常需要和智能合约进行交互。而 @0xproject/contract-wrappers 就是一个非常好用的 npm 包,提供了便捷的 API,方便我们在前端中调用智能合约的函数。
安装
首先,我们需要使用 npm 安装 @0xproject/contract-wrappers:
npm install @0xproject/contract-wrappers --save
初始化
接下来,我们需要初始化 @0xproject/contract-wrappers。在初始化之前,我们需要用 web3.js 连接以太坊节点,并解锁账户,才能够对智能合约进行读写操作。
-- -------------------- ---- ------- ----- - ----------- - - ----------------------------------- ----- - -------------------------------------- ---------------- - - ---------------------------------------- -- --- ------- ----- -------- - --- ----------------------------------------------------- ----- ----------- - --- ---------------------- -- ---- ----- ---------------------------------------------- ---------------------------------- ----- -------- --- -------- ------ --- ------------- ---- -- ------ ----- ----------------- - ------------------------------------------ -- ----- -- -- --- ----------------- ----- ---------------- - --- -------------------------- - ---------- -- --- ----- ---------------- - -------------------------- ----- ---------- - ----------------------------- ----- ---------- - -----------------------------
值得注意的是,我们需要指定网络 ID。这里使用的是 Kovan 网络,你需要根据实际情况进行修改。
查询余额
在对智能合约进行读操作时,我们可以直接调用合约函数。例如,查询某个地址在交易所中的代币余额,可以调用 Exchange 里的 getBalanceAsync
函数:
const address = '0x...'; const balance = await contractInstance.getBalanceAsync(makerToken, address); console.log(`Balance of ${address}: ${balance.toString()}`);
这里仅仅是查询余额,不需要进行一笔真正的交易,所以我们不需要解锁账户。
调用函数
在对智能合约进行写操作时,我们需要构造一笔交易,并调用 awaitTransactionSuccessAsync
函数等待交易被确认。
-- -------------------- ---- ------- ----- - ----- - - ---------------------------- ----- ----------- - --- -------------- ----- ----------- - --- -------------- -- ---- ----- ----- - -------------- ------ -------- ------ -------- ------------------ ----------- ------------------ ----------- ----------------- ------------ ----------------- ------------ ---------------- --------------------------- ------- ---------- - -------- -- - ----- --- -- ---- ----- ----------- - ----- --------------------------------- --------- -- -------- -- --------- ----- -------------------------------------------- ------------ --------- ------------------ ------ ----------------
这里我们已经构造了一个订单,使用私钥进行了签名,然后调用 fillOrderAsync
函数进行交易。值得注意的是,我们需要提供 taker 的资产数量,并传入一笔交易的 gasPrice 和 gasLimit。
总结
通过本篇文章,我们学习了如何使用 @0xproject/contract-wrappers 进行智能合约的读写操作,包括查询余额和构造、签名、发送交易等。这对于开发基于以太坊的 dApp 非常有指导意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/125376