首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >请提供web3.eth.sendTransaction示例

请提供web3.eth.sendTransaction示例
EN

Ethereum用户
提问于 2017-08-31 13:11:40
回答 1查看 3.3K关注 0票数 1

我为本文中描述的最基本的示例创建了一个契约(在Ropsten测试网中):http://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html

代码语言:javascript
复制
pragma solidity ^0.4.0;

contract SimpleStorage {
    uint storedData;

    function set(uint x) {
        storedData = x;
    }

    function get() constant returns (uint) {
        return storedData;
    }
}

以下Javascript调用该合同:

代码语言:javascript
复制
var abi = [{"constant":false,"inputs":[{"name":"x","type":"uint256"}],"name":"set","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"get","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}];
var MyContract = web3.eth.contract(abi);
var myContractInstance = MyContract.at('0x51a5846DB9DEb1Cd72ccab36F825C06328a21b8C');

myContractInstance.set.call(1, function(error, result){
    if(!error) {
        console.log("#" + result + "#")
    } else {
        console.error(error);
    }
})

myContractInstance.get.call(function(error, result){
    if(!error) {
        console.log("##" + result + "##")
    } else {
        console.error(error);
    }
})

"set“调用不起作用,因为它需要"sendTransaction”而不是“调用”。

我尝试了web3.eth.sendTransaction中的每一个参数组合,并不断地收到以下错误消息:"sendTransaction无效的Solidity函数参数数“

我已经阅读了API文档(https://github.com/ethereum/wiki/wiki/JavaScript-API),它没有为web3.eth.sendTransaction提供一个很好的示例。请不要只提供一个理论解释,或要求安装额外的工具。

请提供一个经过测试的特定javascript代码示例,以说明我如何使用javascript来执行上述契约中的"set“函数。

EN

回答 1

Ethereum用户

发布于 2017-08-31 13:20:16

可以直接调用set函数,如下所示:

代码语言:javascript
复制
myContractInstance.set(2,{from:eth.coinbase}, function(error, result){
    if(!error) {
        console.log("#" + result + "#")
    } else {
        console.error(error);
    }
})

或按以下方式调用sendTransaction函数:

代码语言:javascript
复制
myContractInstance.set.sendTransaction(1,{from:eth.coinbase}, function(error, result){
    if(!error) {
        console.log("#" + result + "#")
    } else {
        console.error(error);
    }
})

希望能帮上忙~

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

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

复制
相关文章

相似问题

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