如何從 The DAO 轉移到使用 Linux 和 geth 從終端的交易所?
我不想使用 Mist 與 DAO 互動。我該如何從 geth 做呢?
假設:您在 Linux 上擁有(完全同步的)geth、一些 DAO 代幣,並且可以訪問您購買 DAO 代幣的帳戶。
首先,你需要 The DAO 的合約 ABI。這是允許您與區塊鏈中的 DAO 合約互動的介面定義。這是一個要點。它的長。
https://gist.github.com/fivedogit/4f3e9a035262b99b2e7356a4fdf6dd34
或者從這裡(slockit github):
https://github.com/slockit/DAO/wiki/The-DAO-v1.0-Code
剪切並粘貼所有這些,然後在 geth 中鍵入它以將其設置為變數:
> var abi = <paste it here, no outer quotes necessary>;
ABI 告訴 geth 如何理解區塊鏈中某個地址的字節碼。有了它,你可以使用 web3 的“eth.contract”方法在其地址與 DAO 合約進行互動:
> var contract = web3.eth.contract(abi).at(“0xbb9bc244d798123fde783fcc1c72d3bb8c189413″);
現在您可以執行 DAO 合約支持的所有方法。看看你的餘額怎麼樣?
> contract.balanceOf(eth.coinbase);
或者
> contract.balanceOf(“0xabc123…”);
將這個數字除以 10^16,得到以“自然”面額表示的 DAO 代幣總數。為了我:
> contract.balanceOf(eth.accounts[1]); 80000000000000000000 > contract.balanceOf(eth.accounts[1])/10000000000000000; 8000
在撰寫本文時,我有 8000 個 DAO 代幣。
檢查您的餘額是一種“恆定”的方法,(正如您從 ABI 中看到的那樣),這意味著它從區塊鏈中讀取並且執行不花費任何氣體。
然而,轉移餘額會改變區塊鏈的狀態,並且需要支付少量的 gas。在下一個命令中,“{from:YOURADDR}”參數提供該付款。您可以像這樣明確指定氣體:“{from:YOURADDR,gas:2500000}”但是 geth 有一個預設值,如果您不這樣做,它將提供,這就是為什麼我不在下面顯示它的原因。(未使用的氣體總是會退還。)
**但首先!**我們需要交換地址才能將其發送到。在 Poloniex,它位於“餘額”和“存款和取款”下。在列表中找到DAO,點擊連結獲取充值地址。
現在這裡是轉賬執行命令(這會將 2000 個 DAO 代幣從我的第二個 ETH 賬戶轉移到一個 polo 地址):
contract.transfer(“0xaaaaPoloDAODepositAddressaaaaa”, 20000000000000000000, {from:eth.accounts[1]});
等待 tx 傳播,然後再次檢查您的餘額:
> contract.balanceOf(eth.accounts[1])/10000000000000000; 6000
我的代幣花了大約一個小時到達 Poloniex(2016 年 5 月 28 日),所以如果您沒有立即看到轉移,請不要驚慌。
祝你好運!