在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
函数使用以下代码调用合约函数。
App.contracts.Adoption.deployed().then(function(instance) {
adoptionInstance = instance;
return adoptionInstance.adopt(petId, {from: account});
})
使用额外的对象调用该函数{from: account}
。为什么?这个参数在solidity代码中被丢弃了吗?
顺便说一句,有一个未定义的全局变量web3
?该值是否由 MetaMask 扩展分配?