Wie übertrage ich ERC20-Token (GNT, OMG usw.) von einer Cold Wallet auf ein anderes Konto (oder eine andere Börse) mit Geth

Ich möchte ERC20 (Standard)-Token von einem Ethereum-Basiskonto auf eine Börse oder auf ein anderes Konto übertragen. Wie mache ich das, ohne eine GUI wie Mist zu verwenden?

Antworten (2)

Schritt 0: Geth installieren, Geth starten (mit „--unlock 0xYOURACCOUNT“), Blockchain synchronisieren, Geth-Terminal in einem anderen Fenster mit „Geth Attach“ öffnen.

Schritt 1: Speichern Sie die ERC20-ABI in einer Variablen. Dies ist die Schnittstelle für die Interaktion mit dem Token-Vertrag.

var omisegoAbi = [{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"mintTimelocked","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}];

Schritt 2: Erstellen Sie die Vertragsvariable mit der web3-Vertragsmethode:

var omisegoContract = web3.eth.contract(omisegoAbi).at('0xd26114cd6EE289AccF82350c8d8487fedB8A0C07'); // 0xd26114cd6EE289AccF82350c8d8487fedB8A0C07 is the omisego contract addr. Other tokens will have different addresses

Optionaler Schritt , überprüfen Sie einen Kontostand (Anzahl der OMG-Token für dieses Konto):

web3.fromWei(omisegoContract.balanceOf("0xYOURACCOUNT"),"ether");

oder überprüfen Sie alle Ihre Konten im Verzeichnis .ethereum/keystore

eth.accounts.forEach(function(e,i){console.log("eth.accounts["+i+"]: " + "\tbalance:" + web3.fromWei(omisegoContract.balanceOf(eth.accounts[i]),"ether") + " OMG")})

Schritt 3: Senden Sie eine kleine Menge des Tokens (hier 1) an die Zieladresse.

omisegoContract.transfer("0xDESTINATIONADDRESS",web3.toWei(1,"ether"),{from:"0xGASPAYINGADDRESS"});// here, 0xGASPAYINGADDRESS is the account from which to pay gas to make this tx. Probably the same as the source address.

Schritt 4: Übertragen Sie den Rest. Gleicher Befehl wie oben mit einem größeren Wert

Ich habe im ganzen Netz danach gesucht. Ich danke dir sehr.
Du bist mein Held und ich liebe dich

Das ist großartig, aber aus irgendeinem Grund versucht es, alle Token zu senden. Wo kontrollieren Sie die Menge? ,web3.toWei(1,"ether")Ist dieser Teil nicht für die Ether-Zahlung?

Das einzige was web3.toWei(1,"ether")geht, ist 1 mit 10^18 zu multiplizieren. Dies liegt daran, dass der Betrag in der transferFunktion in Basiseinheiten angegeben werden muss (z. B. Anzahl von Wei, wenn es sich um Ether handelt). Wenn also der ERC-20, den Sie senden, keine 18 Dezimalstellen hat, müssen Sie diesen Code ändern oder Sie werden Größenordnungen mehr oder weniger Token senden, als Sie denken.