ABI
ABI=Application Binary Interface
包含了用于序列化和反序列化的函数
基本上用于在合约中调用函数和获取返回的数据。以太坊智能合约是以字节码形式部署在区块链上的,而一个合约中可包含数个函数,ABI就可以用来具体指定你想要调用合约中的哪一个函数,且ABI还能把返回的数据转化成所需要的格式
BasicAuthority
BasicAuthority继承SealEngineBase,SealEngineBase继承SealEngineFace
此为PoA所使用的封包引擎,重写了SealEngineBase中的一些函数
PoA=Proof of Authority,由预先设定好的Authority Nodes产生Block
BlockHeader
包含一个区块头的所有数据
可以生成、解析、用给出的区块序列化数据填充区块头。可以手动对填充数据进行验证。
也可以以父区块的区块头对象为模板生成。
可以在没有nonce的情况下确定头hash以进行封包
其中信息包含:
parentHash, sha3Uncles, author, stateRoot, transactionsRoot, receiptsRoot, logBloom, difficulity, number, gasLimit, gasUsed, timestamp, extraData, gen_idx, node_list
其中,gen_idx是“挖矿者索引”,node_list是参与共识的公钥列表。(EOA账户由地址作索引,地址为公钥的后20位)
此外,还有额外的RLP编码header域(private)
ChainOperationParams(区块链操作参数)
其中包含一个“预编译合约”类(PrecompiledContract);
在ChainOperationParams类中,存储了:封包器(sealEngine,也叫sealer)名称、通用的区块链参数(区块回报、最大额外数据尺寸、账户起始nonce等)、链参数中指定的预编译合约、额外参数(如Ethash的具体参数:min/maxGasLimit、gasLimitBounddDivisor、minimumDifficulty、difficultyBoundDivisor、durationLimit)以及各种其他(大概是)与合约本身相关的参数(日志要求、加密相关、端口配置、钱包、密钥/数据目录、logFileConf)还有网络id、区块间隔时间、对非记账者是否广播等
Common
定义了各种“普通而通用”的:变量、别名、结构、枚举类
变量包含诸如:协议版本、组件版本、一些区块的区块号
别名如nonce、区块号、logBloom等
枚举如检查场景、ImportResult
结构、类有:transaction、导入需求、交易的骨架、节点配置信息、挖矿工作进展、要是炸了咋办(IfDropped)
CommonJS
包含字符串到Public(h512)、Secret(h256)、Address(h160)的转换函数、u256到人类友好字符串的转换函数、js到区块号的转换函数
Exceptions
异常
ICAP(Inter exchange Client Address Protocol,交换客户端地址协议)
封装了一个ICAP地址。可以被编码、解码、查询和检查
ICAP是一个与IBAN(International Bank Account Number)兼容的系统,用于引用、进行以太坊客户端账户的交易,可以简化资金转移过程。另可有效方便KYC(Know Your Customer)和AML(Anti Money Laundering,反洗钱)
KeyManager
以太坊密码加密密钥高级管理器
如果已存在数据库,就直接接受用户输入的主密码。如果没有,就让用户设置一个
Precompiled
与预编译有关
SealEngine
封包引擎
包含了封包所需要的函数
初始化、验证、从父填充、验证交易、创建 SealEngineFace、创建evmSchedule
Transaction
TransactionBase:用于编码一个交易,准备好进行导出 或 是【刚刚从RLP导入的】
1.创建交易
可以基于“交易骨架(transaction skeleton)”和“optional secret”创建交易;
可创建信息调用交易、合约创建交易;
可根据给定RLP创建交易;
对交易进行签名;
2.检查两个交易是否相同
3.可通过签名+hash确定交易发送者(transaction sender)地址
4.强制指定sender
5.将自己序列化为RLP流
6.与转移eth、使用gas相关的值的获取