Go-Ethereum

如何從 The DAO 轉移到使用 Linux 和 geth 從終端的交易所?

  • June 17, 2016

我不想使用 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 日),所以如果您沒有立即看到轉移,請不要驚慌。

祝你好運!

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