初学记录 · 欢迎交流
区块链DApp从零开始学 (一) | DApp抓包
区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token |宠物领养区块链报错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()函数改变其状态,可写