Go-Ethereum
分流器觸點:是否缺少應付修飾符?
我正在使用 geth javascript 控制台,嘗試使用 ReplaySafeSplit v2 合約
0xaBbb6bEbFA05aA13e908EaA492Bd7a8343760477
(此處的程式碼)拆分 pre-fork ETH。我這樣做如下:
splitteraddr = "0xaBbb6bEbFA05aA13e908EaA492Bd7a8343760477" abi = [{"constant":false,"inputs":[{"name":"targetFork","type":"address"},{"name":"targetNoFork","type":"address"}],"name":"split","outputs":[{"name":"","type":"bool"}],"type":"function"}] splitter = eth.contract(abi).at(splitteraddr) preforkaddr = eth.accounts[0] newethaddr = eth.accounts[1] etcaddr = <a classic ether wallet address> personal.unlockAccount(preforkaddr) splitter.split.sendTransaction(newethaddr, etcaddr, {from: preforkaddr, value: web3.toWei(0.01, 'ether'), gas: 100000, gasPrice: web3.toWei(100, 'gwei')})
但是,這會導致:
Error: Cannot send value to non-payable function
。據我目前了解,從 v0.4.0 版本開始,需要使用
payable
(在此處說明)顯式修改功能。ReplaySafeSplit 合約似乎是使用 v0.3.5 編譯的,並且該split
函式不包含此修飾符。這是否會阻止我的交易通過 geth 內置的某種機制進行?通過查看契約的交易歷史,我可以看到正在進行正常交易,因此契約顯然是可用的。
geth有解決方法嗎?我在某個地方有什麼問題嗎?
自部署EIP 155以來,不再需要重放保護。
但是如果你真的需要它,你可以修改
"payable":true
之前添加的合約 ABI"type":"function"
。我自己沒有對此進行測試,因此您應該先嘗試少量。