¿Qué cuentas contribuyeron a la cuenta extraBalance de la DAO?

Cualquiera que haya comprado DAO en las últimas dos semanas de la fase de financiación colectiva de The DAO pagó más de 1 ether (ETH) por cada 100 tokens de The DAO (DAO). La cantidad de ETH superior a 1 ETH por cada 100 DAO se almacenó en la cuenta extraBalance de la DAO. El saldo de la cuenta extraBalance ahora se ha transferido a la billetera multisig del curador.

Las cuentas que contribuyeron a la cuenta extraBalance pueden ser elegibles para un reembolso por la parte que exceda los 1 ETH = 100 DAO pagados para comprar tokens The DAO.

¿Cómo averiguo qué cuentas contribuyeron a la cuenta extraBalance de la DAO?


Ver también:

Respuestas (2)

Resumen

Puede encontrar la lista de cuentas que contribuyeron a la cuenta Saldo adicional en github.com/bokkypoobah/TheDAOData :

Esto se concilió con el extrabalance.json de Arachnid ( @NickJohnson) que se usará en el proceso de reembolso .

Los resultados de Arachnid tienen algunas pequeñas diferencias con los resultados de Etherscan (verificación manual):

#          Arachnid     Etherscan   Difference
------ ------------  ------------ ------------
 1       0.52441835    0.49946081  -0.02495753
 2       0.72448254    0.49946081  -0.22502173
 3       0.56221045    0.23076923  -0.33144122
 4       0.74601404    0.13333333  -0.61268071
 5       0.00944670    0.00944670   0.00000000
 6       0.20000000    0.20000000   0.00000000
 7     124.16187229  124.49331351   0.33144122
 8       2.94313417    3.55581488   0.61268071
 9      11.85088003   11.88919432   0.03831430
10       0.43567698    0.25000000  -0.18567698
11      99.85263732  100.00000000   0.14736268
12       5.74702074    5.99700000   0.24997926
------ ------------  ------------ ------------
Total  247.75779361  247.75779361   0.00000000
------ ------------  ------------ ------------    

Para obtener más información, consulte el informe github.com/bokkypoobah/TheDAOData/ExtraBalanceReconciliation.md .

Consulte ¿Cómo obtengo un reembolso por el monto que pagué en exceso de 1 éter a 100 tokens DAO si desea obtener más información sobre el proceso de reembolso?



Detalles

Haga clic en la transacción interna distinta de cero de extraBalance para ver la lista de transacciones de compra de DAO que contribuyeron a la cuenta de extraBalance .

  • Excluya la transacción interna en el bloque #1848080 ya que esta fue la transferencia del saldo de la cuenta extraBalance a la cuenta principal de The DAO.
  • La primera compra de tokens de The DAO que contribuyó a la cuenta extraBalance fue en el bloque n.º 1 520 861 el 15 de mayo de 2016 a las 09:00:16 a. m. UTC.
  • La última compra del token DAO que contribuyó a la cuenta extraBalance fue en el bloque n.º 1 599 205 el 28 de mayo de 2016 a las 08:59:47 a. m. UTC.
  • Cualquier compra de tokens The DAO entre los bloques #1,520,861 y #1,599,205 tendría alguna contribución a la cuenta extraBalance y, por lo tanto, sería elegible para un reembolso del exceso de 1 ETH = 100 DAO.
  • Puede buscar su cuenta en los archivos de datos a continuación. Solo los eventos creados entre los bloques #1,520,861 y #1,599,205 aportaron montos distintos de cero a la cuenta extraBalance. También tenga en cuenta que hay 25 transacciones que debían contribuir a la cuenta extraBalance, pero fue un error debido a una condición de falta de gas.



gethScript para recuperar eventos de token creados con contribución de saldo adicional distinta de cero

ACTUALIZACIÓN 25 de julio de 2016: la secuencia de comandos v2 a continuación ahora tiene en cuenta las createTokenProxy()llamadas en las que la cuenta que envía la transacción puede ser diferente al propietario beneficiario de los tokens DAO. Gracias @Nick Johnsonpor señalar la diferencia entre las createTokenProxy()llamadas y las normales.

ACTUALIZACIÓN 5 de agosto de 2016: la secuencia de comandos v3 a continuación ahora tiene en cuenta los contratos de billetera y los errores de falta de combustible.

Desde github.com/bokkypoobah/TheDAOData/getTheDAOCreatedTokenEventsWithNonZeroExtraBalance_v3 :

#!/bin/sh

# ------------------------------------------------------------------------------
# Retrieve The DAO CreatedToken events with non-zero extraBalance amounts. 
# These events are from block 1520861 to 1599205 when the creation phase ended.
#
# Usage:
#   1. Download this script to getTheDAOCreatedTokenEventsWithNonZeroExtraBalance .
#   2. `chmod 700 getTheDAOCreatedTokenEventsWithNonZeroExtraBalance`
#   3. Run `geth console` in a window.
#   4. Then run this script `./getTheDAOCreatedTokenEventsWithNonZeroExtraBalance`
#      in a separate window.
#
# Enjoy. (c) BokkyPooBah 2016. The MIT licence.
# ------------------------------------------------------------------------------

geth attach << EOF | egrep "Header|Data"
var theDAOABIFragment = [{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"CreatedToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Transfer","type":"event"}];
var theDAOAddress = "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413";

// Full non-zero extraBalance contributions
var theDAOStartingBlock = 1520861;
var theDAOEndingBlock = 1599205;

// Test
// var theDAOStartingBlock = 1520861;
// var theDAOEndingBlock = 1520861;

// Test - by proxy
// var theDAOStartingBlock = 1599204;
// var theDAOEndingBlock = 1599204;

// Test - directly
// var theDAOStartingBlock = 1521563;
// var theDAOEndingBlock = 1521563;

// Test - wallet contract
// var theDAOStartingBlock = 1547894;
// var theDAOEndingBlock = 1547895;

// Test - Out of gas
// var theDAOStartingBlock = 1594238;
// var theDAOEndingBlock = 1594240;


var theDAO = web3.eth.contract(theDAOABIFragment).at(theDAOAddress);
var theDAOCreatedTokenEvent = theDAO.CreatedToken({}, {fromBlock: theDAOStartingBlock, toBlock: theDAOEndingBlock});
console.log("Header\tFrom\tTokenOwner\tCreatedBy\tBlockNumber\tTxHash\tTimestamp\tGMTDateTime\tAmount\tTheDAOAmount\textraBalanceAmount\tTheDAOTokens\tGasUsed\tGasPrice\tCost\tNonce\tError");
theDAOCreatedTokenEvent.watch(function(error, result){
  var tx = eth.getTransaction(result.transactionHash);
  var txReceipt = eth.getTransactionReceipt(result.transactionHash);
  var gasUsed = txReceipt.gasUsed;
  var gasPrice = tx.gasPrice;
  var cost = gasUsed * gasPrice;
  var amount = tx.value;
  // console.log("Data amount: " + amount);
  var block = eth.getBlock(tx.blockNumber);
  var d = new Date(block.timestamp * 1000);

  var status = debug.traceTransaction(result.transactionHash);
  var extraBalanceAmount = 0;
  var tokenOwner = tx.from;
  var createdBy = "Owner";
  var error = "";
  status.structLogs.forEach(function(e) {
    if (e.op == "CALL") {
      var stack = e.stack;
      extraBalanceAmount = web3.toBigNumber("0x" + stack[stack.length-3]);
      // baac5300 = createTokenProxy(address) - https://www.4byte.directory/signatures/?bytes4_signature=0xbaac5300
      if (stack[0].substring(56) == "baac5300") {
        tokenOwner = "0x" + stack[2].substring(24);
        createdBy = "Proxy";
      } else if (stack[0].substring(56) == "b61d27f6") {
        amount = web3.toBigNumber("0x" + stack[stack.length-3]);
      } else if (stack[0].substring(56) == "00000966") {
        if (("0x" + stack[3].substring(24)) != tokenOwner) {
          tokenOwner = "0x" + stack[3].substring(24);
          createdBy = "Wallet Contract";
        }
      }
    }
    if (e.error.length > 0) {
      error = e.error;
    }
  });
  var theDAOAmount = amount - extraBalanceAmount;
  var theDAOTokens = theDAOAmount * 100;

  console.log("Data\t" + tx.from + "\t" + tokenOwner + "\t" + createdBy + "\t" + tx.blockNumber + "\t" + tx.hash + "\t" +
    block.timestamp + "\t" + d.toGMTString() + "\t" + web3.fromWei(amount, "ether") + "\t" + 
    web3.fromWei(theDAOAmount, "ether") + "\t" + web3.fromWei(extraBalanceAmount, "ether") + "\t" + 
    web3.fromWei(theDAOTokens, "ether") + "\t" + gasUsed + "\t" + gasPrice + "\t" +
    web3.fromWei(cost, "ether") + "\t" + tx.nonce + "\t" + error);
});

EOF    



Datos recuperados por geth: eventos de token creados con una contribución de saldo adicional distinta de cero

La suma del monto que ingresa a la cuenta extraBalance es 344,917.579923467 ETH. Hay una pequeña discrepancia de ~ 10 ETH en este monto en comparación con el monto retirado en The DAO de 344,907.73799008 ETH en esta transacción interna el 8 de julio de 2016 03:41:06 p. m. GMT.

Aquí están los datos de github.com/bokkypoobah/TheDAOData en:



Data de muestra

Header  From    TokenOwner  CreatedBy   BlockNumber TxHash  Timestamp   GMTDateTime Amount  TheDAOAmount    extraBalanceAmount  TheDAOTokens    GasUsed GasPrice    Cost    Nonce   Error
Data    0x32be343b94f860124dc4fee278fdcbd38c102d88  0xbad9ab5fd55aff4a8aec47166e1a2894d68cc473  Proxy   1520861 0xb989cba5fad84d78e305909bf97605dc35b3cb6caf0e32a2009c3a2dda876003  1463302816  Sun, 15 May 2016 09:00:16 GMT   134 127.61904761904762  6.380952380952380953    12761.904761904761  83139   30000000000 0.00249417  64340   
Data    0x44d7bd707d831f1cb9ae9fd6d129d56d3040564b  0x44d7bd707d831f1cb9ae9fd6d129d56d3040564b  Owner   1520866 0xf34ead2d5b1886e1b428082ff621aa2145e0f77b001011d1db99b15d356a26bf  1463302856  Sun, 15 May 2016 09:00:56 GMT   40  38.095238095238095  1.904761904761904762    3809.5238095238096  80960   21000000000 0.00170016  0   
Data    0x7727b2afc5a6816452a455e65a6a7dd01d03af4b  0x7727b2afc5a6816452a455e65a6a7dd01d03af4b  Owner   1520866 0xafee9c83d41dd151b970f8241e27796db2aceaaace73bf1ecdc2dcc0f53a288f  1463302856  Sun, 15 May 2016 09:00:56 GMT   1   0.9523809523809523  0.04761904761904762 95.23809523809522   50960   20000000000 0.0010192   5   
Data    0x3c7b53f4fa75cd9499bd593c37d5b9872151058a  0x3c7b53f4fa75cd9499bd593c37d5b9872151058a  Owner   1520870 0xaeca3a70346d726ac77ad598cc5e819acb644317a0bf33c81d2b6c3c8acdcc1a  1463302917  Sun, 15 May 2016 09:01:57 GMT   110 104.76190476190476  5.238095238095238096    10476.190476190475  80960   21000000000 0.00170016  5   
Data    0xa8c8b89fd99a25b4a085dff3d967b47b10b37034  0xa8c8b89fd99a25b4a085dff3d967b47b10b37034  Owner   1520870 0xcc146aeea6d229dce6edd463c6d80fdd4e88af0a407ca6e9d72da31775eeb043  1463302917  Sun, 15 May 2016 09:01:57 GMT   0.01    0.009523809523809524    0.000476190476190477    0.9523809523809524  50960   20000000000 0.0010192   29  
¡Bien hecho! Un problema que veo con este código: no tiene en cuenta correctamente los tokens que fueron creados por proxy, lo que hicieron algunos intercambios, incluido Poloniex, durante la fase de creación. Véase, por ejemplo, esta transacción .
Gracias @NickJohnson. Buscaré cambiar el script para obtener el beneficiario del token.
@NickJohnson, el nuevo script en la parte inferior debe tener en cuenta los casos de createTokenProxy. Ejecutaré esto más tarde esta noche AEST. Gracias de nuevo por la sugerencia.
@NickJohnson, nueva secuencia de comandos v2 y datos ahora disponibles desde arriba.
@NickJohnson, reconcilié sus resultados, algunas diferencias muy pequeñas. Resumen arriba. Detalles en github.com/bokkypoobah/TheDAOData/blob/master/… .
¡Fantástico trabajo!

Compré con tokens DAO en las últimas dos semanas de la fase de creación, y después de verificar mi dirección con las que están dentro de extrabalance.json, aparece cuando lo busco. Sin embargo, cuando configuro el contrato inteligente en mi billetera ethereum para retirar el saldo extra, hay 0ETH para retirar. Por favor, ¿podría arrojar algo de luz sobre esto?

Saludos RuthlessAmmo

La intención de los curadores es que la parte del Saldo adicional de su compra inicial se transfiera directamente a la cuenta que utilizó inicialmente para su compra. No tiene que hacer nada para que este reembolso de la porción extraBalance se vuelva a transferir a su cuenta.
@ruthless ammo ¡Bienvenido al sitio! En el futuro, si tiene otra pregunta, hágala haciendo clic en el botón Preguntar .