Contacto divisor: ¿falta el modificador pagadero?

Estoy usando la consola geth javascript, tratando de dividir ETH previo a la bifurcación usando el contrato ReplaySafeSplit v2 0xaBbb6bEbFA05aA13e908EaA492Bd7a8343760477(código aquí ).

Estoy haciendo esto de la siguiente manera:

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')})

Sin embargo, esto resulta en: Error: Cannot send value to non-payable function.

Por lo que entiendo hasta ahora, desde v0.4.0 de solidity, las funciones deben modificarse explícitamente usando payable(indicado aquí ). El contrato ReplaySafeSplit parece haber sido compilado usando v0.3.5 y la splitfunción no incluye este modificador.

¿Evita esto que mi transacción se lleve a cabo a través de algún mecanismo integrado en geth? Al mirar el historial de transacciones del contrato, puedo ver que se están realizando transacciones regulares, por lo que el contrato es claramente utilizable.

¿Hay una solución en geth? ¿Estoy haciendo algo mal en alguna parte?

Respuestas (1)

Desde la implementación de EIP 155 , la protección de reproducción ya no es necesaria.

Pero si realmente lo necesitas puedes modificar el contrato ABI añadiendo "payable":trueantes "type":"function". No probé esto yo mismo, así que primero debes probar con una pequeña cantidad.

Gracias. Finalmente llegué a la conclusión de que la protección ya no es necesaria después de encontrarme con EIP155. Sin embargo, todavía hay muchas transacciones ejecutándose a través de él. También me preguntaba sobre el uso de un ABI modificado (aunque no lo probé). Pero me preguntaba si desviarse del ABI "oficial" (a) funcionaría o (b) conduciría a problemas inesperados.