下载

arrow_down

构建

arrow_down

更多

arrow_down
activityactivityactivityactivity
  • themelight
  • languageIcon

  • menu
Skip to Content
Zh CnDocs
参考
Dapp智能合约

智能合约

智能合约是在区块链上运行的程序。它们是位于区块链特定地址的一组代码(函数)和数据(状态)。

智能合约也被视为账户,我们称之为合约账户。它们有余额,可以成为交易的主体。它们被部署到网络上作为程序运行。个人用户可以通过提交交易来执行智能合约中的特定函数,从而与智能合约交互。

智能合约可以像传统合约一样定义规则,并通过代码自动执行它们。默认情况下,您无法删除智能合约,与它们的交互是不可逆的。

ABI

应用程序二进制接口(ABI)是调用以太坊合约的接口规范。不同的合约有自己的 ABI,您需要在调用合约之前获取合约的 ABI。

以太坊上的USDT合约地址及其 ABI 如下:

[ { "constant": true, "inputs": [], "name": "name", "outputs": [{ "name": "", "type": "string" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "_totalSupply", "outputs": [{ "name": "", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, ... { "anonymous": false, "inputs": [], "name": "Unpause", "type": "event" } ]

合约初始化

您可以使用各种库与智能合约交互,例如 web3.js。

合约的初始化如下:

import Web3 from 'web3' const web3 = new Web3(provider); const abi = [{"constant":true,"inputs":[],...}]; const contractAddress = '0xdAC17F958D2ee523a2206206994597C13D831ec7';//usdt合约地址 const contract = new web3.eth.Contract(abi, contractAddress);

注意:provider 必须对应于所选钱包。

调用合约方法

数据读取方法.myMethod.call

contract.methods.myMethod(...args).call() //返回promise await usdtContract.methods.name().call() // => Tether USD await usdtContract.methods.totalSupply().call() // => 51998545629548753 await usdtContract.methods.balances('your address').call() // 您的余额

估算 Gas 费用

contract.methods.myMethod(...args).estimateGas({ from: 'your address', })

数据写入

contract.methods.myMethod(...args).send({ from: 'your address', })

其他合约方法以此类推。

相关阅读

Last updated on