Go-Ethereum

如何在錢包地址接收乙太幣並在成功存款後轉發到另一個地址?

  • February 21, 2021

我想實現一個功能,使用者將乙太幣發送到錢包地址(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

你不能。錢包不包含沒有智能合約的功能。我也看不出有什麼理由包括智能合約。

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