首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用智能契约whoAmI函数

调用智能契约whoAmI函数
EN

Ethereum用户
提问于 2016-11-01 12:50:51
回答 1查看 287关注 0票数 1

在testnet上具有smart协议,地址为0x5a6661c75df7de88ba74437a6dc372ccfa72a564,具有以下功能:

代码语言:javascript
复制
    function whoAmI() constant returns (address) {
        return msg.sender;
    }

应该总是回呼叫者。这就是我想要证实的。在从geth控制台同步调用时,我工作正常,如下所示:

代码语言:javascript
复制
// creation of contract object
var aContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"queryBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"initialSupply","type":"uint256"}],"name":"MyToken","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"whoAmI","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]);

// initiate contract for an address
var sc = aContract.at('0x5a6661c75df7de88ba74437a6dc372ccfa72a564');

// calling function
sc.whoAmI();
    "0x47978a69f410d0f61850c92acdb0d4c464d70937"

当尝试从另一个帐户异步调用它时,会出现这样的问题:

代码语言:javascript
复制
sc.whoAmI.sendTransaction({from:"0x3b877e80b5c0b29d88f3768ed4292b35fdd93a9d"});
txHash => "0x5fc3f7454d558ad4bd01294448b45bc7072b46958375fafe32e277a770d48e90"

事务的输出存储在哪里?试试看:

代码语言:javascript
复制
eth.getTransactionReceipt("0x5fc3f7454d558ad4bd01294448b45bc7072b46958375fafe32e277a770d48e90")
{
  blockHash: "0xa19553677ede1d1eed791d1658a4229629346f90db5907c14c915dda13926df9",
  blockNumber: 1821495,
  contractAddress: null,
  cumulativeGasUsed: 21612,
  from: "0x3b877e80b5c0b29d88f3768ed4292b35fdd93a9d",
  gasUsed: 21612,
  logs: [],
  root: "31aa355a0a7534b18c7874a31fd78926a6869f0e9e309a972d1b5505405c6421",
  to: "0x5a6661c75df7de88ba74437a6dc372ccfa72a564",
  transactionHash: "0x5fc3f7454d558ad4bd01294448b45bc7072b46958375fafe32e277a770d48e90",
  transactionIndex: 0
}

我找不到它。有什么帮助吗?谢谢!

EN

回答 1

Ethereum用户

发布于 2016-11-02 11:32:34

我想当异步挖掘时不可能获得函数的返回值。根据调用带参数的函数时如何获得返回值?,目前无法从修改块链的函数返回值.“返回”信息的唯一方法是使用Solidity。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/9755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档