没有合适的资源?快使用搜索试试~ 我知道了~
首页以太坊ETH代币开发教程源码学习笔记
从事区块链的开发,不了解其底层核心技术是不够的。许多人在看了以太坊代币开发白皮书之后仍然不清楚以太坊代币开发是怎样实现的,因为以太坊代币开发的源码设计精巧,有许多设计白皮书未曾提及,加上本身以太坊代币开发的文档稀少,加大了新手理解的困难程度 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jQQ53016353/article/details/78580207
资源详情
资源评论
资源推荐
前言
原文摘自
版权声明:本文为博主原创文章,未经博主允许不得转载。
区块链爱好者(QQ:53016353)
从事区块链的开发,不了解其底层核心技术是不够的。许多人在看了以太坊代
币开发白皮书之后仍然不清楚以太坊代币开发是怎样实现的,因为以太坊代币
开发的源码设计精巧,有许多设计白皮书未曾提及,加上本身以太坊代币开发
的文档稀少,加大了新手理解的困难程度。尽管现在已经有许多介绍区块链的
书和文章,却很少是从源码着手分析的。我通过半年时间对于区块链的学习,
开始撰写一份以太坊代币开发源码的教程。本教程深入浅出,通过分析最经典
的区块链——以太坊代币开发的 客户端源码,让开发者用最短的时间上手
区块链技术。了解以太坊代币开发源码可帮助开发者更好了解区块链的工作原
理并在应用当中根据实际情况做出修改和调整。
本文所引用的源码均来自原始版以太坊代币开发客户端,即由中本聪发布的第
一版源码。该客户端包括大约 行代码。尽管经过数年的发展,以太坊代
币开发客户端经过了几次较大更新,其数据结构和原理从诞生之日起一直延续
至今。本文会尽可能保证文字的严谨准确,表达当中难免会产生疏漏,欢迎指
正。
第一章
本章节讲述以太坊代币开发客户端是怎样生成以太坊代币开发地址,并创建新
的交易。
我们来看一下 !"#$%&'方法,该方法位于 (。
)*$%&)$%+),%'
-
) )./0/*12314$&2($%'
) )-
) ) ) )($%5,%!67$%&'8)9),%!6:$%&';
) ) ) )(67$%5<&,%!67$%&''8)9),%!67$%&';
) )=
) )7)>?3&'>$%&,%!67$%&'@),%!6:$%&'';
=
:A7)B)!"#$%&'
-
) )$%),%;
) ),%C,"#$%&';
) )D)&E*$%&,%''
) ) ) )#)7(2&F!"#$%&'))*$%)DGF';
) )7),%!67$%&';
=
该方法通过以下步骤生成一个新的公钥对:
首先建立一个新的 $% 类型对象(第 行)。
调用 $%&'方法将新建的 ,% 添加至 )全局映射 ($%)(第
行))全局 ()(67$%(第 行)和钱包数据库 #(第
行)。
($% 建立公钥与私钥的一一对应关系。
(67$% 建立公钥的 和公钥本身的对应关系。
返回公钥(第 行)。
该公钥为未压缩的格式,属于 4HH1 标准格式之一。在得到公钥之后,以
太坊代币开发客户端会将该公钥传递至 67$%0*&'并调用
<0*&'方法生成地址。最后返回的 3 编码字符串值便是
一个新生成的以太坊代币开发地址。3 由 I 和除 ,,, 之外的英
文字符组成。
0 类
0 的定义位于 (。在以太坊代币开发当中,所谓币的概念其
实是一系列交易 0J 的组合。这种方式虽然实现起来更为复杂,却提高了以太坊
代币开发的安全性。用户可以为每一笔交易创建一个新的地址,地址在使用一
次之后可以立即作废。因此,0 是以太坊代币开发客户端最重要
的类之一。
)0
-
7
) ))K;
) ):A0J/B):;
) ):A0J47B):7;
) ))1,0(;
) )
=
0 包含两个容器类型:输入交易 : 和输出交易 :7。每个 :
由若干 0J/ 对象组成,每个 :7 则由 0J47 组成。
每笔交易 0J 的输入交易(0J/ 类)包含一个 476 对象 :7,该
对象引用另外一笔交易 0J 的输出交易作为来源交易。来源交易使当前交易 0J
从另一笔交易当中得到可花费的以太坊代币开发。一笔交易 0J 可以拥有任意笔
输入交易。
任何交易均由一个 位 7 哈希作为其唯一识别。若要引用某一笔来源
交易 0JH7 当中某个特定的输出交易,我们需要两种信息:0JH7 的
哈希,和该输出交易在输出交易当中的位置 。这两种信息构成 476 类。
一个 476 对象指向来源交易的某一笔输出交易 0JH7:758。如
果该笔输出交易被另外一笔交易 0J 的位置 的输入交易所引用,例如
0J:58:7,我们将其称为 0J 的第 笔输入交易花费了 0JH7 中
的第 笔输出交易。
7 和 7 类
这两种类型的定义位于 7。一个 7 类包含有一个 位的哈希。
它由一个长度为 9 的 7) 数组构成。一个相似的数据结构
是 7,该结构的定义可在同一个文件当中找到。既然 H<* 的长度
为 ,读者不难推断出 7 的作用是存放 ./6LC? 哈希。
7 和 7 均由 27 类继承而来。
)27)-
) )7()-)>/?0<)9)3/0H)))=;
) )7))5>/?0<8;
7
) ))E&')
) )-
) ) ) )D)&))9);))A)>/?0<;)'
) ) ) ) ) )D)&58)E9)'
) ) ) ) ) ) ) )7)D;
) ) ) )7)7;
) )=
) )
) )7))!HMHM&)0%)9)@))K)9)
KL.H/4"')
) )-
) ) ) )7)MD&';
) )=
) )()A%()H(B
) ):)HM&H(+)@))0%)9)@))K)9)KL.H/4"')
) )-
) ) ) )#&&N'@)MD&'';
) )=
) )()A%()H(B
) ):)OM&H(+)@))0%)9)@))K)9)
KL.H/4"'
) )-
) ) ) )&&N'@)MD&'';
) )=
=
该类重载了若干运算符。此外该类拥有 个序列化成员函数,
!HMHM&'、HM&'和 OM&'。我们会在后面讲到这三种
方法是如何工作的。
HC%&'
该方法位于 (。以下是该方法的源码:
)HC%&H)67$%@)P)K7@)>0J+)
#J"#'
-
) )./0/*12314$&2('
) )-
) ) ) )P)Q.R7;
) ) ) )D)&E0&67$%@)K7@)#J"#@)
Q.R7''
) ) ) )-
) ) ) ) ) ))L;
) ) ) ) ) )D)&K7))Q.R7)B)!3&''
) ) ) ) ) ) ) )L)9)D&FL)0))):M))
)R7)))D)D)S)F@)
Q(C%&Q.R7'2&'';
) ) ) ) ) )
) ) ) ) ) ) ) )L)9)FL)0))D)F;
) ) ) ) ) )#JC3J&L@)FHF';
) ) ) ) ) )7)&FHC%&'))SGF@)L2&'';
) ) ) )=
) ) ) )D)&E((0H&#J"#''
) ) ) )-
) ) ) ) ) )#JC3J&FL)TM)F@)FHF';
) ) ) ) ) )7)&FHC%&'))L)TM)F';
) ) ) )=
) ) ) )D&FHC%)SGF@)
#J"#!<&'0H&'7&@'2&'';
剩余21页未读,继续阅读
azhujudah
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1