![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码阅读
文章平均质量分 92
主要阅读以太坊的源码,或者AMC的源码,二者差别不大
Camina hacia ti
这个作者很懒,什么都没留下…
展开
-
【源码阅读】EVMⅢ
参考[link](https://blog.csdn.net/weixin_43563956/article/details/127725385大致流程如下:编写合约 > 生成abi > 解析abi得出指令集 > 指令通过opcode来映射成操作码集 > 生成一个operation以太坊虚拟机的工作流程:由solidity语言编写的智能合约,通过编译器编译成bytecode,之后发到以太坊上,以太坊底层通过evm模块支持合约的执行和调用,调用时根据合约获取代码,即合约的字节码,生成环境后载入到 EVM原创 2024-03-19 18:26:46 · 1074 阅读 · 0 评论 -
【源码阅读】evmⅡ
参数介绍:input:caller是调用者地址addr是被调用的合约的地址input是数据gas是执行调用的初始gas费用value是转账金额output:ret是返回数据leftOverGas是执行结束之后剩余的gas值err是过程中出现的错误所以在调用合约的时候,一个文件里面可以有多个合约。做过一个部署智能合约的实验,在编写一个文件1.sol之后编译运行,会生成合约1的地址和字节。如果在此基础上对其修改,仍然保存为1.sol,再编译运行会生成合约2的地址和字节。原创 2024-03-19 16:40:40 · 1066 阅读 · 0 评论 -
【源码阅读】evmⅠ
代码位置如下:参考以太坊中有一个很重要的用途是智能合约,而其中evm模块是实现了执行智能合约的虚拟机。evm可以逐条解析执行智能合约的指令。evm中的核心对象是EVM,代表一个以太坊虚拟机。其内部主要依赖:解释器Interoreter(循环解释执行给定的合约指令,直接遇到退出指令)、配置和状态数据库StateDB(用来提供数据的永久存储和查询)原创 2024-03-18 22:12:04 · 1131 阅读 · 2 评论 -
【源码阅读】交易池txs_pool
重要接口:ITxsPool的实现:1、Has根据输入的hash值判断交易池中是否有该交易,返回bool值input:hashoutput:bool函数遍历所有当前可处理的交易,按原始帐户分组并按随机数排序。input:enforceTips 参数可用于对挂起的交易进行额外的过滤,只返回那些在下一个挂起的执行环境中有效提示足够大的交易。return pending;返回的交易集是一个副本,可以通过调用代码自由修改。input:enforceTipsoutput:pending(账户+交易原创 2024-01-10 11:26:33 · 977 阅读 · 0 评论 -
【源码阅读】交易池txs_list
accountSet 只是一组用于检查是否存在的地址,以及一个能够从交易中派生地址的签名者。原创 2024-01-10 17:41:05 · 1320 阅读 · 0 评论 -
【源码阅读】blockchainⅠ
这是一个名为BlockChain的结构体,它包含了区块链的各种属性和方法。原创 2024-01-16 21:13:20 · 566 阅读 · 0 评论 -
【源码阅读】blockchainⅡ
该函数是对新的区块的数据处理,payload是一个字节切片,表示新块的数据;peer是一个peer.ID类型的变量,表示发送新块数据的对等节点。原创 2024-01-18 14:27:46 · 1000 阅读 · 0 评论 -
【源码阅读】交易池txs_fetcher&txs_noncer
txs_noncer。原创 2024-01-10 18:24:08 · 881 阅读 · 0 评论 -
【源码阅读】blockchain Ⅲ
writeKnownBlock使用已知块更新头块标志并在必要时引入链式重组。原创 2024-01-18 16:06:38 · 977 阅读 · 0 评论 -
【源码阅读】事件订阅包v2
Feed 实现一对多订阅,其中事件的载体是通道。发送到 Feed 的值会同时传送到所有订阅的通道。与Typemux的对比链接:TypeMux是一个同步的事件框架,当有一个被订阅的事件发生的时候,会遍历该事件对应的订阅者通道,通知其中的订阅者,但是当订阅者1没有接受该消息的时候,发送进程会被阻塞,会影响对订阅者2的发送。所以Feed作为流式事件框架,是否是异步的取决于是否有缓存通道,当设计有缓存通道的时候是异步的,否则就是同步的。字段是用来确保init只会执行一次sendLock。原创 2024-01-12 17:00:13 · 868 阅读 · 0 评论