![](/img/trans.png)
[英]How to add ETH as parameter when calling solidity contract function on web3
[英]web3 calls Solidity contract function with extra parameter?
在http://truffleframework.com/tutorials/pet-shop示例中,有以下约定,而函数adopt(uint petId)
仅具有一个参数。
contract Adoption {
address[16] public adopters;
function adopt(uint petId) public returns (uint) {
require(petId >= 0 && petId <= 15);
adopters[petId] = msg.sender;
return petId;
}
function getAdopters() public returns (address[16]) {
return adopters;
}
}
但是,在javascript代码app.js
, handleAdopt
函数使用以下代码调用contract函数。
App.contracts.Adoption.deployed().then(function(instance) {
adoptionInstance = instance;
return adoptionInstance.adopt(petId, {from: account});
})
该函数由额外的对象{from: account}
调用。 为什么? 并且此参数是否在固定代码中丢弃?
顺便说一句,有一个未定义的全局变量web3
吗? 该值由MetaMask扩展名分配吗?
那是transactionObject
,它描述了有关所有交易调用的一般信息(汽油限额,价格,要发送的乙醚数量等)。 您发布的JS代码正在使用web3库。 这不是对合同API的直接调用。 web3库将其转换为RPC。 transactionObject
位于所有合同参数之后。 紧随其后的另一个参数是带有合同调用结果的回调(请参见此处 )。
这些是docs中描述的transactionobject
所有选项:
- from:字符串-发送帐户的地址。 如果未指定,则使用web3.eth.defaultAccount属性。
- to:字符串-(可选)消息的目标地址,对于合同创建交易而言,未定义。
- 值:Number | String | BigNumber-(可选)在Wei中为交易传输的值,如果是合同创建交易,则为捐赠。
- 气体:Number | String | BigNumber-(可选,默认值:待定)用于交易的气体量(未使用的气体将退还)。
- gasPrice:Number | String | BigNumber-(可选,默认值:待定)此交易中以wei为单位的天然气价格,默认为平均网络天然气价格。
- data:字符串-(可选)包含消息的关联数据的字节字符串,或者在进行合同创建交易的情况下为初始化代码。
- 随机数:数字-(可选)随机数的整数。 这允许覆盖使用相同随机数的未决事务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.