首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用契约状态更改方法的语法

调用契约状态更改方法的语法
EN

Ethereum用户
提问于 2016-07-29 13:09:22
回答 1查看 3.9K关注 0票数 8

我一直在为改变合同状态的调用方法而挣扎。例如,以以下合同为例:

代码语言:javascript
复制
contract C {

     uint[] numbers;

     function initNumbers() {
         numbers.push(1);
         numbers.push(2);
     }

     function stateChanger(uint a) {
         numbers.push(a);
     }
}

部署之后,必须将initNumbers()方法作为事务调用/发送:

代码语言:javascript
复制
c.initNumbers({from:eth.accounts[0],gas:400000});

因为它改变了块链上的状态(执行写操作)。

如何调用第二个具有参数但同时更改状态(将其存储在合同中)的方法?

我尝试了以下方法,但得到了一个BigNumber异常:

代码语言:javascript
复制
c.stateChanger({from:web3.eth.accounts[0],gas:400000}).call(3);

堆栈跟踪是:

代码语言:javascript
复制
/usr/lib/node_modules/web3/node_modules/bignumber.js/bignumber.js:1209
            throw error;
            ^

BigNumber Error: new BigNumber() not a number: [object Object]
    at raise (/usr/lib/node_modules/web3/node_modules/bignumber.js/bignumber.js:1177:25)
    at /usr/lib/node_modules/web3/node_modules/bignumber.js/bignumber.js:1165:33
    at new BigNumber (/usr/lib/node_modules/web3/node_modules/bignumber.js/bignumber.js:193:67)
    at new BigNumber (/usr/lib/node_modules/web3/node_modules/bignumber.js/bignumber.js:203:25)
    at toBigNumber (/usr/lib/node_modules/web3/lib/utils/utils.js:367:12)
    at Object.toTwosComplement (/usr/lib/node_modules/web3/lib/utils/utils.js:378:21)
    at formatInputInt [as _inputFormatter] (/usr/lib/node_modules/web3/lib/solidity/formatters.js:40:38)
    at SolidityType.encode (/usr/lib/node_modules/web3/lib/solidity/type.js:179:17)
    at /usr/lib/node_modules/web3/lib/solidity/coder.js:86:29
    at Array.map (native)
EN

回答 1

Ethereum用户

发布于 2016-08-01 08:05:14

我的回答和Bokky相似:

代码语言:javascript
复制
cContract = web3.eth.contract(cContractABI).at(cContractEthAddress);

cContract.initAddrs({from:web3.eth.accounts[0],gas:utils.DEFAULT_TX_COST});

其中cContract是定义契约的Javascript对象。一个关键的注意事项是确保调用状态更改方法的帐户始终保持足够的平衡,否则方法调用将中止,以太将丢失。

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

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

复制
相关文章

相似问题

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