pragma solidity ^0.4.18;
contract Auction {
event newBid();
address owner;
address public leader;
address public winner;
string public item;
uint public leadingBid;
function Auction(string name, uint price) public {
owner = msg.sender;
item = name;
leadingBid = price;
}
function placeBid() payable public{
if (msg.value > leadingBid) {
returnPrevBid();
leader = msg.sender;
leadingBid = msg.value;
emit newBid();
}
}
function returnPrevBid() private{
if (leader != 0) {
leader.transfer(leadingBid);
}
}
function endAuction() public {
if (msg.sender == owner) {
winner = leader;
owner.transfer(leadingBid);
}
}
}
请问如何在一个新合约中调用上面这个拍卖合约的 leadingBid 这个变量的结果(在上面合约执行之后)?如果不能,能不能从区块中读取这个变量?很急很急,回答的好可以追加,谢谢。是调用变量,不是函数调用。就算调用getleadingBid函数也不能在另外一个合约返回变量leadingBid的值。
uint public leadingBid;
这是一个public变量,在智能合约中public变量其实就是一个函数,可以按照调用外部函数的方法来调用这个变量。
首先得知道这个合约的地址
然后可以参与下面这段代码,如果对你有帮助,还请给点分哦。
simple2调用simple1中的函数的方法,要先知道simple1在区块链中的合约地址,然后你就可以像调用函数一样的调用public变量了。
pragma solidity ^0.4.21;
contract sample1 {
//payable是一个内置的函数修改器
//如果另一个合约在调用方法时发送以太,则需要这个修改器。
function sample1(int b) payable
{
a = b;
}
function assign(int c)
{
a = c;
}
function makePayment(int d) payable
{
a = d;
}
}
contract sample2 {
function hello() {
}
function sample2(address addressOfContract) {
//当创建sample1合约对象时,发送12 wei
sample1 s = (new sample1).value(12)(23);
s.makePayment(22);
//发送以太也是的
s.makePayment.value(45)(12);
//指定要使用的gas数
s.makePayment.gas(895)(12);
//发送Ether,并指定gas
s.makePayment.value(4).gas(900)(12);
//使用this关键字进行的调用称为外部调用。在函数中,this关键字代表当前合约实例。
//如果是hello(),则是内部调用
this.hello();
//指定一个已经部署好的合约
sample1 s2 = sample1(addressOfContract);
s2.makePayment(112);
}
}
http://www.tryblockchain.org/Solidity-FunctionCalls-函数调用.html
请问,怎么在外部调用智能合约里面返回值是结构体的方法