Ethereum 来自eth.coinbase的eth.sendtransage进行多次交易并减少eth.coinbase余额

Ethereum 来自eth.coinbase的eth.sendtransage进行多次交易并减少eth.coinbase余额,ethereum,go-ethereum,Ethereum,Go Ethereum,我正在使用以太坊(go-Ethereum实现(Geth))开发分布式应用程序 在数字海洋水滴(Ubuntu 16.04)上,我安装了geth 我创建了这样一个结构: devnet$ tree -L 2 . ├── accounts.txt ├── boot.key ├── genesis.json ├── node1 │ ├── geth │ ├── keystore │ └── password.txt 我有: 一个引导节点/发现节点 一个密封/完整节点 密封节点的初始化方式

我正在使用以太坊(go-Ethereum实现(Geth))开发分布式应用程序

在数字海洋水滴(Ubuntu 16.04)上,我安装了geth

我创建了这样一个结构:

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

  • 一个引导节点/发现节点
  • 一个密封/完整节点
密封节点的初始化方式如下:

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
引导节点侦听之后,我在节点1上运行geth:

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控制台,并将一些ether从ETH.coinbase传输到该地址:

eth.sendTransaction({from:eth.coinbase, to:"0xf17f52151ebef6c7334fad080c5704d77216b732", value: web3.toWei(10, "ether")})
在那之后,我发现一些我无法识别的交易,我的意思是,它只是一个从一个帐户发送到另一个帐户的交易,为什么会导致提交多个交易

以下是情况的屏幕截图:

此外,这些交易中的每一笔都在减少eth.coinbase余额(eth.coinbase==部署合同的地址),因此我从该账户的大量以太开始,在一些“幽灵”交易之后,eth.coinbase的余额就像0.0026以太

所以,我有两个问题

  • 是否存在任何可能减少合同所有者地址/coinbase余额的情况
  • 你知道为什么会出现这些交易吗 编辑:


    这就是问题所在

    [为完整起见,请从Ethereum.SE此处交叉发布]

    据我所知,默认情况下,“数字海洋”不会封锁任何港口

    在所有情况下,节点的RPC都是可公开访问的,当您解锁帐户以发送事务时,bot会尝试将其余部分扫描到自己的地址(可能不止一个,因为似乎有多个收件人)

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


    事实上,如果你在mainnet上查看,你会发现它们已经扫描了近15个ETH,而挂起的事务反映了此类机器人的一种常见策略,即在rpc解锁时,用更高的nonce预先签署不同值的事务。

    这些事务哈希似乎都与提交的事务哈希不匹配。我猜你有一大堆待处理的交易,它们都是在你开始采矿时被发现的。停止挖掘并检查是否存在任何挂起的事务。再次运行您的
    eth.sendTransaction
    ,并检查您尚未提交的文件(无需启动miner)。如果你只看到一个待处理的事务,打开你的miner,看看你得到多少已处理的事务。好主意,我会试试。但这如何解释coinbase余额的突然下降呢?它从9.5E74开始,以少于1乙醚结束。我的意思是,在PoA网络上,如何可能减少所有者/coinbase帐户余额?我无法想象有一种情况(我对以太坊没有太多经验),我唯一能想到的就是你以某种方式提交了一个(可能无限)循环中的事务。未决交易将有助于发光。您还可以检查
    eth.getTransactionCount
    是的,这也是可能的,我只从metamask和geth控制台发送,所以要做到这一点非常困难。。但这可能是其中一个的一种缺陷。还有,看我的编辑,机器人也可能是一个原因。我喜欢他的回答。尝试阻塞端口。另外,检查未知事务,看看传输的方向。事实上,github上有一个关于此的问题。有什么办法可以让我的网络暴露在互联网上,解锁我的帐户而不让我的私钥受到攻击?