我正在尝试发送一个事务并让它在某个块上执行.根据JS API,这似乎是可能的:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethsendtransaction
参见参数#2,除非我误解了它.
但每次我尝试这样做时,它都会失败并显示"无效地址":
incrementer.increment.sendTransaction({from:eth.coinbase}, 28410, function(err, address) {
if (!err)
console.log("no err " + address);
else
console.log("err " + address);
});
Run Code Online (Sandbox Code Playgroud)
...而删除块参数28410 ...
incrementer.increment.sendTransaction({from:eth.coinbase}, function(err, address) {
if (!err)
console.log("no err " + address);
else
console.log("err " + address);
});
Run Code Online (Sandbox Code Playgroud)
......成功就好了.
有谁知道这是怎么回事?我正在努力做甚么可能吗?
该web3.eth.sendTransaction(transactionObject [,callback])功能实际上只有2个参数.
(见这里:https://github.com/ethereum/web3.js/blob/master/lib/web3/methods/eth.js#L177,隐含了可选的Callback).
维基中的文字可能是一个副本和过去的错误.我现在修好了,所以请不要因为没有阅读文档而责怪:)
NB.我不明白为什么你希望针对包含事务的特殊块.您永远无法确定您的交易是否包含在一个区块中,因为这是由矿工决定的,而不是交易提交者.如果您想要延期执行,则需要使用合同.
编辑:在下面添加对评论的回复,因为它是一般信息.
"交易"和"合同"是不同层次的两件事.当谈到"合同"时,人们通常(在以太坊的上下文中)说明应用程序代码定义完全或根本不执行的逻辑(由区块链确保,因此不需要第三个可信方,因此"智能合约").这段代码"生活"在区块链上,即.它的代码存储在那里,并在那里有状态/内存.
交易是您在区块链上"做"的事情.当您要部署合同时,将它(代码)放在一个事务对象中,并将其发送到没有目标地址(可以这么说)到Blockchain.部署由矿工执行,合同将插入区块链中.部署操作是一个事务.
执行以太传输也是事务(基本上调用简单的内部价值转移合同).调用和执行复杂的"用户"-Contract是一个事务,它也由矿工执行,结果/结果存储在区块链上(作为当前挖掘的块的一部分).基本事务执行具有成本(发送值,部署),执行复杂合同(cf Gas等).
(用2个单词解释所有这些都有点困难.每一次,我重新阅读文本,我都会添加新的句子;)我希望这会有所帮助.)
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |