如何强制事务在某个未来块#上执行?(以太坊,JS API)

fiv*_*git 2 ethereum

我正在尝试发送一个事务并让它在某个块上执行.根据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)

......成功就好了.

有谁知道这是怎么回事?我正在努力做甚么可能吗?

Imi*_*fos 5

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个单词解释所有这些都有点困难.每一次,我重新阅读文本,我都会添加新的句子;)我希望这会有所帮助.)