最近做侧链项目中需要把合约内的decimals、name和symbol传到侧链,需要根据合约address获取到这三个值,研究了一下怎么获取,记录一下。
获取合约内值有两种方法, 一种是本地call,另外一种是sendTransaction,前者不需要耗费gas,后者需要上链耗费gas,我们使用的场景是本地调用,所以只写前一种。
准备条件
1 合约abi
需要合约源码, 写一个简单的合约:
pragma solidity ^0.4.25;
contract Decimals {
uint8 public decimals = 18;
}
合约贴到http://remix.ethereum.org,就会生成abi信息,右侧有个ABI,可以复制
[
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
]
2 合约address,已经部署到链上的
比如0x9d013ea462b2f03082afbc39eb352b337359