Blockchain 在合同上运行方法时,如何获得运行结果?

Blockchain 在合同上运行方法时,如何获得运行结果?,blockchain,ethereum,solidity,web3,truffle,Blockchain,Ethereum,Solidity,Web3,Truffle,我想写一个简单的函数来调用contract上的方法并得到运行结果 这是合同代码 前端js代码 但事实上,我发现返回的r是一个**事务细节**,比如 收据:{…},日志:数组(0)} 日志 : [] 收据 : {transactionHash:“0xa543fff3c3bac2268c0c94a21f6cf62faa8cf667defcd9fd8dcdbcf7669a4e58”, transactionIndex:0,区块哈希: “0x07d691308724c73025de2f346dc0d6b

我想写一个简单的函数来调用contract上的方法并得到运行结果

这是合同代码 前端js代码 但事实上,我发现返回的r是一个**事务细节**,比如

收据:{…},日志:数组(0)} 日志 : [] 收据 : {transactionHash:“0xa543fff3c3bac2268c0c94a21f6cf62faa8cf667defcd9fd8dcdbcf7669a4e58”, transactionIndex:0,区块哈希: “0x07d691308724c73025de2f346dc0d6bc4eb7e7de9871e29ea2c4d4e8fb8222bb”, 区块编号:20,气体使用:56460,…} 德克萨斯州 : “0xa543fff3c3bac2268c0c94a21f6cf62faa8cf667defcd9fd8dcdbcf7669a4e58” proto : 反对

没有应返回的id的相关信息

我做错什么了吗?

在函数定义中指定“视图”:

function upload(uint8[5] _inputs) public view returns ( bytes32 resultId) {
    // do something here
    // save ad calculate
    return "123";
 }

我想我知道答案了

当前无法从以下函数返回值: 修改区块链。要接收返回值,可以标记 只读功能为“常量”

对于非常量函数,“返回”信息的唯一方法是 使用Solidity事件,在以太坊中合并为日志操作码 虚拟机


不,您不能,我没有在这里包含用于在区块链中存储数据的代码,但它确实做了一些事情我只是更新了问题以添加更多关于合同代码的内容,因为您正在将变量保存到存储,它将成为一个事务。因此,函数不能“返回”值。
// DEE is the contract name
return this.DEE.deployed()
        .then((instance) => instance.upload(this.inputs,  {from: base.accounts[0]}))
        .then((r) => {
          this.message = "Transaction done"

          console.log(r);



        })
        .catch((e) => {
          console.error(e)
          this.message = "Transaction failed"
        })
{tx: "0xa543fff3c3bac2268c0c94a21f6cf62faa8cf667defcd9fd8dcdbcf7669a4e58",
function upload(uint8[5] _inputs) public view returns ( bytes32 resultId) {
    // do something here
    // save ad calculate
    return "123";
 }