从geth的初始化过程可以看出,geth源代码层次结构比较清楚的。geth由两部分组成:node以及eth。node主要负责以太“节点”相关的服务,主要是账户管理(AccountManager)以及P2P协议(节点底层点对点协议)。eth是整个以太逻辑的后端,负责以太区块链逻辑的方方面面,由Ethereum数据结构表现。Ethereum数据结构中包括:BlockChain(区块链),TxPool(交易池),ProtocolManager(以太协议),以及Miner(挖矿相关)。
geth本身是以太坊自带的钱包,可以通过json-rpc,提交交易:
通过web3.js的sendRawTransaction接口提交一个交易。先通过rlp解码获得Transaction信息,再通过EthApiBackend的addLocal将Transaction加入TxPool(addRemote函数会处理从网络广播来的交易)。每个地址的交易会添加到地址对应的队列中。promoteExecuteables函数将每个地址queue中的交易prmote到pending队列中。在每个交易被加入TxPool后,TxPool会发出TxPreEvent事件通知Miner打包。
领取专属 10元无门槛券
私享最新 技术干货