我正在使用以太坊实施(Geth)的以太坊开发分布式应用程序 .
在数字海洋液滴(Ubuntu 16.04)上,我安装了geth .
我创建了一个这样的结构:
devnet$ tree -L 2
.
├── accounts.txt
├── boot.key
├── genesis.json
├── node1
│ ├── geth
│ ├── keystore
│ └── password.txt
我有:
-
一个bootnode / discovery节点
-
一个密封/完整节点
密封节点以这种方式初始化:
geth --datadir node1/ init genesis.json
然后是bootnode:
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:
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 Contract ,因此,我想使用一些随机地址从Metamask调用该功能 .
为此,我需要在我的帐户中获得一些ETH,因此我已连接到geth控制台并将一些以太网从eth.coinbase转移到该地址:
eth.sendTransaction({from:eth.coinbase, to:"0xf17f52151ebef6c7334fad080c5704d77216b732", value: web3.toWei(10, "ether")})
在那之后,我发现一些我无法识别的交易,我的意思是,这只是一个将以太网从一个帐户发送到另一个帐户的交易,为什么会导致多个交易提交?
以下是该情况的屏幕截图:
此外,这些交易中的每一个都在减少eth.coinbase余额(eth.coinbase = =部署 Contract 的地址),所以我开始使用该帐户上的大量以太币并且在一些“鬼”交易之后eth.coinbase的 balancer 就像0.0026以太..
所以,我有2个问题
-
是否存在可能降低 Contract 所有者地址/ coinbase余额的情况?
-
为什么会出现这些交易的任何想法?
EDIT:
这是问题...... https://github.com/ethereum/go-ethereum/issues/16691
1 回答
[此处来自Ethereum.SE的完整性交叉发布]
据我所知,Digital Ocean默认不会阻止任何端口 .
很可能,您的节点的RPC是可公开访问的,当您解锁帐户以发送您的事务时,机器人会尝试将其余的扫描到其自己的地址(可能不止一个,因为似乎有多个收件人) .
尝试使用ufw阻止从机器外部访问RPC端口,或者只是关闭RPC,因为控制台在IPC上工作 .
实际上,如果你看看主网上的0x6e4cc3e76765bdc711cc7b5cbfc5bbfe473b192e和0x7097f41f1c1847d52407c629d0e0ae0fdd24fd58,你可以看到它们已经接近15 ETH,并且待处理的交易反映了这种机器人的一种常见策略,即用较高的随机数进行不同 Value 的交易 . rpc已解锁 .