前言
在以太坊生态中,token 是最常见的东西之一,我们可以通过一些 Dapp 进行代币交易。eth-tokens 是一个 npm 包,提供了一些常见的代币交易逻辑。
安装
使用 npm 安装 eth-tokens
npm install eth-tokens
使用
下面是 eth-tokens 的使用示例,我们可以通过下面的代码来了解如何使用 eth-tokens。
-- -------------------- ---- ------- -- -- ---------- ----- --------- - ---------------------- -- ------ ----- --------------- - --------------------------------------------- -- ----- ---- ----- ------- - -- -- ------ ----- ------ - --------------------------------------------- -- --- --- ----- ----------- - ------- -- ---- -- --- ---------- ----- --------- - --- -------------------------- -------- -------- -- ------ --------------------------------------------- -- - ------------------ -- - ----- ------- ----- --------- - - -- -- ------ ----- ------- - --------------------------------------------- -- ------- ------------------------------------------ -- - --------------------- -- ------------ --- -- ---- ----- -- - --------------------------------------------- -- ----- ----- ----- - ---- -- ---- ---------------------- ------------------ -- - -------------------- -- -------------------------------------------------------------------- --
以上示例包含了 eth-tokens 的三个常用方法,分别是 getTokenInfo
、getBalance
和 transfer
。
深度分析
我们可以通过分析 eth-tokens 源码,对其中一些细节进行深入了解。
- 初始化 Web3 实例 在 EthTokens 的 constructor 中,会初始化一个 Web3 实例。Web3 是以太坊官方的 JavaScript 库,用于连接以太坊节点并与智能合约进行交互。在初始化 Web3 实例时,我们需要传入一个 RPC url。
this.web3 = new Web3(new Web3.providers.HttpProvider(this.rpcUrl));
- 获取代币信息
获取代币信息的核心逻辑是调用 ERC20 合约的
name
和decimals
方法,并解析返回值。eth-tokens 在内部定义了合约 abi,可以直接使用合约地址创建合约实例。
const contract = new this.web3.eth.Contract(erc20Abi, this.contractAddress); promiseList.push( contract.methods.name().call().then(name => tokenInfo.name = name), contract.methods.decimals().call().then(decimals => tokenInfo.decimals = decimals), ); Promise.all(promiseList).then(() => resolve(tokenInfo))
- 获取代币余额
获取代币余额的核心逻辑是调用 ERC20 合约的
balanceOf
方法。下面是 eth-tokens 的实现。
contract.methods.balanceOf(address).call().then(balance => resolve(balance / 10 ** tokenInfo.decimals));
- 发送代币
发送代币的核心逻辑是调用 ERC20 合约的
transfer
方法,并使用发送方的私钥进行签名。eth-tokens 使用了 ethereumjs-tx 库进行签名操作。
-- -------------------- ---- ------- -- ---- ----- ---------- - --- ------------ ------ ------ --------- --------- --------- --------- --- --- ------ -- ----- ----------------------------- ----- - -- -- -------------------------------- -- - ------ ------- --- -- -------- ---------------------------------- -- ---- ----- ------------ - ----------------------- ---------------------------------------- - --------------------------------------------------- ---- -- ---------------
总结
eth-tokens 是一个方便好用的 npm 包,我们可以通过 eth-tokens 快速实现代币交易功能。在使用 eth-tokens 时,我们需要深入了解 eth-tokens 的核心逻辑,以便更好地使用 eth-tokens。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005737981e8991b448e9695