La cuenta del propietario del contrato está totalmente financiada con > 5 ETH (lo suficientemente bien como para cubrir las tarifas de tx/gas) * el contrato de billetera contiene > 1 ETH fwiw.
Nunca antes había tenido este problema, pero después de cambiar a la paridad (debido a los ataques de DOS), decidí realizar algunas transacciones para probar que todo funcionaba correctamente.
Primero envié una pequeña cantidad de ETH de account1
a account2
, funciona bien.
Luego envié una pequeña cantidad account1
a mi wallet contract
, funciona bien.
Finalmente, intenté (varias veces) enviar desde wallet contract
atrás account1
y también intenté enviar a account2
. Ethereum Wallet muestra la transacción como confirmada y muestra "-1.18 ETHER" en el historial de transacciones por un corto tiempo, pero luego desaparece del historial (en la niebla, la transacción aún es visible) Pero la cuenta receptora y los saldos del contrato de la billetera no muestran cambios.
Las capturas de pantalla a continuación muestran el gas consumido pero muestran el valor transferido como "0". Lo he intentado varias veces desde 2 PC diferentes y he quemado gas tras gas, pero no puedo sacar el éter del contrato.
Ver la dirección del contrato en etherscan muestra las múltiples transacciones que he intentado, pero el valor de cada transacción es "0 Ether". El saldo de ETH es >1.
Solo para probar la función, también escribí para contratar add owner
y pude agregar un segundo propietario al contrato. El contrato se creó utilizando la opción billetera ethererum Add wallet contract
(cuenta de propietario único).
Cualquier ayuda sería muy apreciada.
EDITAR: Usé la Kill
función para eliminar el éter del contrato. Desafortunadamente, el contrato ahora es inútil (ya que no tiene propietarios). Traté de hacer un nuevo contrato, pero obtuve un error que excedía el límite de gas del bloque (estimado en 2 millones de gas, 3 millones como máximo).
Por lo general, la cantidad de éter almacenada en el contrato se puede recibir después de ejecutar la opción de suicidio (que vacía el saldo del contrato y envía todo a la dirección del propietario del contrato). Después de esa etapa, el contrato se vuelve inactivo (y cualquier ether enviado a su dirección se pierde, se quema), por lo que el contrato deja de ejecutar las funciones codificadas en su interior.
Por supuesto, esta opción podría codificarse dentro del contrato desde su creación porque el contrato, una vez creado, no se puede modificar en la cadena de bloques. Una vez que elimine un contrato, no se usará gas si envía un pago a su dirección (ya que las funciones dentro de él no se ejecutan), sin embargo, si aún ve transacciones pendientes anteriores (lo cual es muy poco probable), significa que las transacciones aún no se extrajeron debido a que se proporciona demasiado poco gas.
Esto me recuerda cierta situación explicada por alguien antes. Es cuando uno intenta enviar una transacción (con tarifa de gas demasiado baja) pero debido a que la red no lo confirma en poco tiempo (se pone en cola) el usuario intenta una y otra vez (pruebas con varias tarifas de gas incluidas). En un momento determinado, se acepta una transacción, el saldo disminuye con la cantidad correspondiente, por lo que todo parece perfecto y el usuario está contento y deja de intentar enviar de nuevo. Sin embargo, si en algún momento vuelve a financiar su dirección, es posible que una transacción pendiente finalmente sea aceptada (minada) y el usuario vea desaparecer nuevamente la misma cantidad de su dirección (como un gasto doble inesperado). Lo digo de nuevo, es poco probable que suceda tal cosa (no lo experimenté ni me gustaría que me sucediera a mí), así que solo lo describo en teoría.
jeff
mike shurtz
Kishore