Ether

哪些賬戶為 The DAO 的 extraBalance 賬戶做出了貢獻?

  • July 1, 2017

在 The DAO 眾籌階段的最後兩週購買 DAO 的任何人每 100 個 The DAO 代幣(DAO)支付超過 1 個乙太幣(ETH)。每 100 個 DAO 超過 1 ETH 的 ETH 數量儲存在 The DAO 的extraBalance賬戶中。extraBalance 賬戶的餘額現已轉入管理員的多重簽名錢包。

為 extraBalance 賬戶做出貢獻的賬戶可能有資格獲得超過為購買 The DAO 代幣支付的 1 ETH = 100 DAO 的部分的退款。

我如何找出哪些賬戶為 The DAO 的 extraBalance 賬戶做出了貢獻?

也可以看看:

概括

您可以在github.com/bokkypoobah/TheDAOData中找到為 Extra Balance 帳戶做​​出貢獻的帳戶列表:

這已與將在退款過程中使用的Arachnid ( @NickJohnson) extrabalance.json進行了核對。

Arachnid 的結果與 Etherscan 中的結果有一些小的差異(手動檢查):

#          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
------ ------------  ------------ ------------    

有關詳細資訊,請參閱github.com/bokkypoobah/TheDAOData/ExtraBalanceReconciliation.md報告。

如果您想了解有關退款流程的更多資訊,請參閱如何為我支付的超過 1 乙太幣到 100 The DAO 代幣的金額獲得退款。


細節

點擊extraBalance 非零內部交易,查看貢獻給extraBalance 賬戶的 DAO 購買交易列表。

  • 排除塊#1848080的內部交易,因為這是將 extraBalance 賬戶餘額轉移到 DAO 主賬戶。
  • 首次向 extraBalance 帳戶購買的 DAO 代幣是在 UTC 時間 2016 年 5 月 15 日上午 09:00:16 區塊#1,520,861
  • 最後一次向 extraBalance 帳戶購買的 DAO 代幣是在 UTC 時間 2016 年 5 月 28 日上午 8:59:47 區塊#1,599,205
  • 在 #1,520,861 和 #1,599,205 區塊之間購買的任何 DAO 代幣都會對 extraBalance 賬戶產生一些貢獻,因此有資格獲得超過 1 ETH = 100 DAO 的超額退款。
  • 您可以在下面的數據文件中搜尋您的帳戶。只有在 #1,520,861 和 #1,599,205 塊之間創建的事件向 extraBalance 帳戶貢獻了非零金額。另請注意,有25 筆交易本應為 extraBalance 賬戶提供資金,但由於氣體不足而導致錯誤。

geth檢索具有非零額外餘額貢獻的已創建令牌事件的腳本

2016 年 7 月 25 日更新 - 下面的 v2 腳本現在考慮了createTokenProxy()發送交易的帳戶可能與 DAO 代幣的受益所有人不同的呼叫。感謝@Nick Johnson您指出createTokenProxy()通話和普通通話之間的區別。

2016 年 8 月 5 日更新 - 下面的 v3 腳本現在考慮了電子錢包契約和用氣錯誤。

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    

數據檢索geth者 - 創建具有非零額外餘額貢獻的代幣事件

流入 extraBalance 賬戶的總金額為 344,917.579923467 ETH。與格林威治標準時間 2016 年 7 月 8 日下午 03:41:06在此內部交易中提取到 DAO 的 344,907.73799008 ETH 的金額相比,該金額存在約 10 ETH 的微小差異。

以下是來自github.com/bokkypoobah/TheDAOData的數據:


樣本數據

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  

引用自:https://ethereum.stackexchange.com/questions/7390