Go-Ethereum
如何在錢包地址接收乙太幣並在成功存款後轉發到另一個地址?
我想實現一個功能,使用者將乙太幣發送到錢包地址(0x123),成功存款後,它需要自動轉移到我的冷錢包(0x983)。
我可以在智能合約的幫助下實現此功能,但如何在不包含智能合約的情況下僅使用錢包地址實現此功能?
在評論中的討論之後,我碰巧編寫了一個幾乎完全相同的 bash 測試腳本。請注意,這是一個快速破解,它有以下問題
- 這是非常不安全的(例如,它使個人帳戶永遠處於解鎖狀態)。我只是為了測試而執行它,因此對我來說沒有問題。但請不要在未經修改的情況下用於生產。
- TO_ADDR不能由geth 管理(即不在“geth 帳戶列表”的結果中),否則將成為死循環。同樣,這是一個快速破解。
- 根本沒有考慮性能:每 60 秒檢查一次的愚蠢循環。
程式碼:
GETH=<your geth path> TO_ADDR=<destination addr> for ADDR in $(${GETH} account list | grep -o -e'\{[^}]\+\}' | tr -d '}' | tr -d '{');do echo "unlocking '$ADDR'" echo "web3.personal.unlockAccount('$ADDR', '<your password>', null);" | ${GETH} attach http://localhost:8545 done SRC=$(cat <<EOF addrs = web3.eth.accounts; to_addr = '$TO_ADDR'; gasPrc=web3.eth.gasPrice; cost = 21000 * gasPrc; for (i = 0; i < addrs.length; i++) { balance = web3.eth.getBalance(addrs[i]); send_val = balance - cost; if (send_val > 0) { val=web3.fromWei(send_val, "ether"); web3.eth.sendTransaction({from: addrs[i], to: to_addr, value: web3.toWei(val, "ether"), gasPrice: gasPrc, gas: 21000}); console.log("Transferring ", web3.toWei(val, "ether"), " wei from ", addrs[i], " to ", to_addr, " gas price ", gasPrc); } else { console.log("Cannot Transfer ", send_val, " wei from ", addrs[i], " to ", to_addr); } } EOF ) while true; do if echo "${SRC}" | ${GETH} attach http://localhost:8545 | tee monitor.log | grep -e'Transferring ';then date | mail -s 'ether automatically transferred' <your email> fi sleep 60 done
你不能。錢包不包含沒有智能合約的功能。我也看不出有什麼理由不包括智能合約。