区块链智能合约调用变量

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的值。

0

3个回答

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);
}

}

0
0

请问,怎么在外部调用智能合约里面返回值是结构体的方法

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!