eth.coinbase 的 eth.sendTransaction 进行了多次交易并减少了 eth.coinbase 余额

eth.sendTransaction from eth.coinbase makes multiple transactions and decrease the eth.coinbase balance

我正在使用 Ethereum 开发分布式应用程序,go-ethereum 实现 (Geth)。

我在 Digital Ocean droplet (Ubuntu 16.04) 上安装了 geth。

我创建了这样的结构:

devnet$ tree -L 2
.
├── accounts.txt
├── boot.key
├── genesis.json
├── node1
│   ├── geth
│   ├── keystore
│   └── password.txt

我有:

seal节点是这样初始化的:

geth --datadir node1/ init genesis.json

然后是引导节点:

devnet$ bootnode -nodekey boot.key -verbosity 9 -addr :30310
INFO [02-07|22:44:09] UDP listener up                          self=enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9c0be52c6664e80cc5b08162ede53279bd70ee10d024fe86613b0b09e1106c40@[::]:30310

在 bootnode 监听后,我 运行 在 node1 上获取:

geth --datadir node1/ --syncmode 'full' --port 30311 --rpc --rpcaddr 'localhost' --rpcport 8501 --rpcapi 'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9c0be52c6664e80cc5b08162ede53279bd70ee10d024fe86613b0b09e1106c40@127.0.0.1:30310' --networkid 1515 --gasprice '1' -unlock '0x87366ef81db496edd0ea2055ca605e8686eec1e6' --password node1/password.txt --mine

注意:这是例子,真实的ip,bootnode "enode"值和账户不是那些。

在这个私有以太坊网络上,我部署了一个 ERC20 合约,具有基本的传输功能,因此,我想使用一些随机地址从 Metamask 调用该功能。

为此,我需要在我的帐户中获取一些 ETH,因此我已连接到 geth 控制台并将一些以太币从 eth.coinbase 转移到该地址:

eth.sendTransaction({from:eth.coinbase, to:"0xf17f52151ebef6c7334fad080c5704d77216b732", value: web3.toWei(10, "ether")})

后来我发现有些交易我没法辨认,我的意思是,只是一笔交易将以太币从一个账户发送到另一个账户,为什么会导致提交多个交易?

下面是情况截图:

此外,这些交易中的每一项都在减少 eth.coinbase 余额(eth.coinbase == 部署合约的地址),所以我开始在那个账户上存入大量以太币,然后在其中一些 "ghost" 交易之后 eth.coinbase 的余额就像 0.0026 Ether..

所以,我有 2 个问题

  1. 是否存在任何可能减少合约所有者 address/coinbase 余额的情况?
  2. 知道为什么会出现这些交易吗?

编辑:

就是这个问题... https://github.com/ethereum/go-ethereum/issues/16691

[为了完整性从 Ethereum.SE 交叉发布]

据我所知,默认情况下 Digital Ocean 不会阻止任何端口。

很可能,您的节点的 RPC 是可公开访问的,并且当您解锁帐户以发送交易时,机器人会尝试将其余部分扫到它自己的地址(可能不止一个,因为似乎有多个收件人)。

尝试使用 ufw 阻止从计算机外部访问 RPC 端口,或者干脆关闭 RPC,因为控制台通过 IPC 工作。

确实,如果你看一下主网上的0x6e4cc3e76765bdc711cc7b5cbfc5bbfe473b192e and 0x7097f41f1c1847d52407c629d0e0ae0fdd24fd58,你可以看到他们已经横扫了将近 15 个 ETH,待处理的交易反映了此类机器人的一种常见策略,即预先签署交易在 rpc 解锁时用更高的随机数改变值。