web3.eth.Contract详解

该web3.eth.Contract对象可以轻松地与以太坊区块链上的智能合约进行交互。当你创建一个新的合约对象时,你给它相应的智能合约的json接口,web3将自动将所有的调用转换为RPC的低级别ABI调用。

这允许您与智能合约进行交互,就像它们是JavaScript对象一样。
独立使用:

新合约

new web3.eth.Contract(jsonInterface[, address][, options])
创建一个新的契约实例及其在json接口对象中定义的所有方法和事件。

参数

  1. jsonInterface- Object:实例化合约的json接口
  2. address- String(可选):要调用的智能合约的地址,可以在以后添加myContract.options.address = ‘0x1234…’
  3. options- Object(可选):合约的选项。有些用作调用和交易的后备:

• from- String:地址交易应该来自。
• gasPrice- String:用于交易的用于天然气的价格。
• gas- Number:为交易提供的最大气体(气体限制)。
• data- String:合约的字节代码。合约部署时使用。

返回

Object:合约实例及其所有方法和事件。

示例

var myContract = new web3.eth.Contract([…], ‘0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe’, {
from: ‘0x1234567890123456789012345678901234567891’, // 交易地址
gasPrice: ‘20000000000’ // 默认gas
});

=属性=

选项

myContract.options
object合约实例的选项。from,gas并gasPrice在发送事务时用作后备值。

属性

Object - 选项:
• address- String:部署合约的地址。请参阅options.address。
• jsonInterface- Array:合约的json接口。请参见options.jsonInterface。
• data- String:合约的字节代码。合约部署时使用。
• from- String:地址交易应该来自。
• gasPrice- String:用于交易的用于天然气的价格。
• gas- Number:为交易提供的最大气体(气体限制)。

示例

myContract.options;

{
address: ‘0x1234567890123456789012345678901234567891’,
jsonInterface: […],
from: ‘0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe’,
gasPrice: ‘10000000000000’,
gas: 1000000
}

myContract.options.from = ‘0x1234567890123456789012345678901234567891’; // 交易地址
myContract.options.gasPrice = ‘20000000000000’; // 默认的gas价格
myContract.options.gas = 5000000; // 默认的gas

options.address

myContract.options.address
用于此合约实例的地址。web3.js从此合约生成的所有事务都将此地址包含为“to”。

地址将以小写形式存储。

属性

address- String|null:此合约的地址,或者null尚未设置的地址。

示例

myContract.options.address;

‘0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae’

// 设置新地址
myContract.options.address = ‘0x1234FFDD…’;


options.jsonInterface

myContract.options.jsonInterface
的JSON接口从派生对象ABI本合约。

属性

jsonInterface- Array:此合约的json接口。重新设置它将重新生成合约实例的方法和事件。

示例

myContract.options.jsonInterface;

[{
“type”:“function”,
“name”:“foo”,
“inputs”: [{“name”:“a”,“type”:“uint256”}],
“outputs”: [{“name”:“b”,“type”:“address”}]
},{
“type”:“event”,
“name”:“Event”
“inputs”: [{“name”:“a”,“type”:“uint256”,“indexed”:true},{“name”:“b”,“type”:“bytes32”,“indexed”:false}],
}]

//设置接口
myContract.options.jsonInterface = […];

=方法=
克隆

myContract.clone()
克隆当前合约实例。

参数

没有

返回

Object:新的合约实例。

示例

var contract1 = new eth.Contract(abi, address, {gasPrice: ‘12345678’, from: fromAddress});

var contract2 = contract1.clone();
contract2.options.address = address2;

(contract1.options.address !== contract2.options.address);

true

部署

myContract.deploy(options)
调用此函数将合约部署到区块链。成功部署后,承诺将通过新的合约实例解决。

参数

  1. options- Object:用于部署的选项。
    • data- String:合约的字节代码。
    • arguments- Array(可选):在部署时传递给构造函数的参数。

返回

Object:事务对象:
• Array - arguments:之前传递给方法的参数。它们可以改变。
• Function- 发送:将部署合约。承诺将通过新的合约实例解决,而不是收据!
• Function- 估计气体:估计用于部署的气体。
• Function- encodeABI:对部署的ABI进行编码

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值