固态性合同
面向对象的ABI数据构建和剖析Ethereum智能合同.
API 密码
new SolidityContract(abi, address)
abi数字 :Array | String合同的ABI,作为一个解析出JSON阵列,或JSON弦.address数字 :String(可选)
创建新 SolidityContract 并且将合同的方法和事件与ABI中的方法和事件结合起来.
SolidityContract 实例属性
contract.abi数字 :Array<Object>
解析的 ABI 阵列传递给构造者 .
contract.address数字 :String
合同地址串已传递给建筑师 。 这个地址目前没有用.
contract.methodIds数字 :Object<String:Object>
一个对象映射方法 ID 字符串到ABI 方法对象指定该方法的细节. 所有方法 ID 字符串密钥都是小写十六进制字符串的前缀 '0x'。 。 。 .
const { methodId, name, stateMutability, payable, constant, type, inputs, outputs } =
contract.methodIds['0x01234567']
contract[eventName]
对于合同的ABI中的每一起事件,合同实例都将事件作为财产增加。 例如,ERC20令牌合同将 contract.Transfer 财务报告和审定财务报表 contract.Approval。 。 。 .
每个属性都是具有下列属性和方法的物体:
build数字 :(...any) => Buffer统一parse数字 :(callData: String | Buffer) => Array<any>解析 ABI 事件日志数据调用并返回解析值 。 数值的类型取决于ABI规格中的输入参数的类型. 例如,astring类型将返回字符串, auint将返回基准 10 中的字符串编号, abytes值将返回 aBuffer等 (中文(简体) ). 必须是事件原始的未索引日志数据 .testInput数字 :(String | Buffer) => boolean统一eventId数字 :String事件 ID 十六进制字符串 .abi数字 :Object此事件的ABI 规格传递给构建者 .
contract.eventIds数字 :Object<String:Object>
与 contract.methodIds,但合同活动除外。 固态事件ID以长式表示,为全32字节克查克散列,而不是方法ID所用的短4字节形式.
const { eventId, name, type, inputs, anonymous } =
contract.eventIds['0xb5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c']
contract[methodName]数字 :Object
对于合同的ABI上的每一功能,合同实例都添加了作为财产的方法. 例如,一份带有ERC20令牌ABI的即时合同会 contract.transfer, (中文(简体) ), contract.approve等 (中文(简体) ).
每个属性都是具有下列属性和方法的物体:
build数字 :(...any) => Buffer构建 ABI 交易数据调用methodName与所提供的参数。 例如,你可以打电话token.transfer('0x' + '0'.repeat(40), 100000)用于构建任何ERC20令牌的 100000 Wei 传输数据.parse数字 :(callData: String | Buffer) => Array<any>解析 ABI 交易数据调用此函数并返回解析值 。 数值的类型取决于ABI规格中的输入参数的类型. 例如,astring类型将返回字符串, auint将返回基准 10 中的字符串编号, abytes值将返回 aBuffer等 (中文(简体) ). 必须在不使用 4 方法 ID 前缀字节的情况下提供调用数据 .testInput数字 :(String | Buffer) => boolean检查输入数据是否对这种方法有效 .methodId数字 :String方法 ID 十六进制字符串.abi数字 :Object将这种方法的ABI 规格传递给构造者.
const callData = tokenContract.balanceOf.build(address)
console.log(Buffer.isBuffer(callData)) // true
console.log(tokenContract.balanceOf.testInput(callData)) // true
contract[eventName]数字 :Object
对于合同的ABI中的每一起事件,合同实例都将事件作为财产增加。 例如,一个ERC20固态合同实例 contract.Transfer, (中文(简体) ), contract.Approval等 (中文(简体) ).
每个属性均与本次事件的ABI 规格对象等同,外加一个 eventId 十六进制字符串属性 。 见 contract.eventIds[eventId]。 。 。 .
SolidityContract 实例方法
decodeInput(callData: String | Buffer): { method: string, values: Array<any> }
解码给定的呼叫数据,并试图确定合同中所使用的方法。 如果成功, 请解码输入参数, 在 values 阵列。 如果失败, 则出现错误 .
SolidityContract 静态方法
SolidityContract.erc20(address: String)数字 :SolidityContract
退回一份合同,执行完整的ERC20令牌标准. address 参数是可选的.
SolidityContract.simpleErc20(address: String)数字 :SolidityContract
返回只执行以下 ERC20 方法和事件的合同:
transfer(address,uint256)
balanceOf(address)
Transfer(address,address,uint256)
address 参数是可选的.
SolidityContract.simpleErc721(address: String)数字 :SolidityContract
返回只采用下列ERC721方法的合同:
ownerOf(uint256)
tokenURI(uint256)
uri(uint256)
symbol()
totalSupply()
safeTransferFrom(address,address,uint256)
address 参数是可选的.