初学记录 · 欢迎交流 区块链DApp从零开始学 (一) | DApp抓包 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token |宠物领养
区块链知识 (一) | 实例化合约Contract
区块链报错1 | npm run dev 无法解析json格式 | npm ERR JSON.parse Failed to parse json 区块链报错2 | 区块链npm run dev失败lite-server 区块链报错3 | truffle unbox 报错 | downloading失败 | unbox failed 区块链报错4 | 区块链玄学 | truffle unbox下载downloading步骤失败 区块链报错5 | Contract has not been deployed to detect network (network/artifact mismatch) 区块链报错6 | Failed to load resource: the server responded with a status of 404 (Not Found)
想获得合约实例,首先需要部署 (deploy/migrate)网络, 可参考 该文章的环境配置的truffle部分
获得合约实例 myContract有两种方法,即通过合约名称实例化智能合约,或通过ABI+ address进行实力化
方法一MathContract2.deployed().then(function(instance){var myContract = instance})
通过合约实例可调用合约中的函数:
myContract.mulAtoB(3,4) # 12
方法二
var myContract = new web3.eth.contract('abi','contractAddress')
其中,abi为:
abi要通过json压缩转为这种行的形式:
contractAddress为: 一个实际例子,
var myContract = new web3.eth.Contract([{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"mulAtoB","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}],'0x1b0127F2d5826Bd462899845A25Bda35b0132648')
ps: ’contractAdress‘以字符串形式输入
通过合约实例调用合约函数:
myContract.methods.mulAtoB(3,4).call() # 返回12
ps: 如果不加call()函数,返回的还将是json格式 call()函数表示不对其值进行改变,仅读;send()函数改变其状态,可写