【发布时间】:2019-01-08 11:53:19
【问题描述】:
我正在使用以太坊开发分布式应用程序,即 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:
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 Ether..
所以,我有两个问题
- 是否存在任何可能减少合约所有者地址/coinbase 余额的情况?
- 关于为什么会出现这些交易的任何想法?
编辑:
这就是问题所在...https://github.com/ethereum/go-ethereum/issues/16691
【问题讨论】:
-
这些交易哈希似乎都与提交的哈希不匹配。我的猜测是你有一堆待处理的交易,当你开始挖矿时它们都被捡起。停止挖矿并检查是否有任何待处理的交易。再次运行您的
eth.sendTransaction并检查您的未决提交(无需启动您的矿工)。如果您只看到 1 笔待处理交易,请打开您的矿机并查看您获得了多少已处理的交易。 -
好主意,我会试试的。但这如何解释 coinbase 余额的突然减少呢?它从 9.5 e74 开始,并以不到 1 个以太币结束。我的意思是,在 PoA 网络上,如何减少所有者/coinbase 账户余额?我无法想象一种情况(我对以太坊没有很多经验)
-
我唯一能想到的就是您以某种方式在(可能是无限的)循环中提交了事务。待处理的交易将有助于发光。您也可以查看
eth.getTransactionCount -
是的,这也是可能的,我只从 metamask 和 geth 控制台发送,所以真的很难做到这一点.. 但这可能是其中一个错误。另外,请参阅我的编辑,机器人也可能是一个原因。
-
我喜欢他的回答。尝试阻塞端口。此外,检查未知交易以了解转移的去向。
标签: ethereum go-ethereum