区块链数字货币开发技术讲解

 搭建数字货币交易所需要什么步骤

  搭建数字货币交易所不光需要牌照开发技术,主链技术和侧链技术也不一样 还要会弄钱包.区块链浏览器.交易平台系统.场内场外.上币落地app.项目白皮书.对接主流交易所.跨境支付.货币发行系统.主链开发.基金会发起.海内外货币牌照等一系列技术,会一个技术和会全套技术是有区别的,国内能够做主链开发的也很少。

  第一步:准备编译环境。代码都是需要编译的,因此需要准备编译环境和工具,您需要下载mingw(仿linux环境编译工具)、qtcreator和对应的sdk,下载boost1.5.0(需要依赖库)、openssl、伯克利db、miniupnp;配置好系统环境变量,qt环境,使用mingw编译boost库(这个需要编译大概2个小时),openssl、伯克利db、miniupnp等文件,编译命令在ltc源代码里的mingw-unix文件里有详细说明。 整个过程,如果是熟练的程序员大概3天能够准备好,不懂的人恐怕要折腾很久,所以技术这一块基本上是由技术人员去编写。

  第二步:编译widows钱包。从github下ltc源代码。此处以0.8.5的版本为内核。在qtcreator内打开该项目工程,配置好pro文件,配置好编译器,开始编译,此时您并没有修改过任何代码,甚至连参数都没有调整,编译出来的就是莱特币的客户端,甚至可以直接使用。整个过程,熟悉的预计也是3天能成功编译出。不懂的同样要折腾很久,各种编译不过。

  第三步:调整参数,生成属于你的山寨币。还是在qtcreator打开各个源文件,找到对应的地方调整参数即可,如在main.cpp调整每块出币数,总产量,调整难度,修改创世hash,减产时间,增加检查点等等,看到这里大家可以发现,最后编译,通过,产生个新币,剩下的就是发布新币

区块链数字货币开发技术讲解

  以太坊的客户端程序,原本应该是刚接触以太坊的初学者最早遇到的部分之一。因为下载完整个源代码包之后,按照相应语言的提示进行编译,就会得到一个客户端的可执行程序。我最初首先看的客户端的代码,当追溯到eth.Ethereum{}结构体,看到那么多模块的成员变量时,就一下子明白了,整个以太坊系统运行起来的基础模块是哪些部分。

  1. 以太坊中代码中,accounts.Manager是管理账户信息的模块。Manager可以管理多个的实现,每个实现拥有多个Account账户,每个Account对应一个Address地址,而以太币Ether存放于每个Address上。以太坊同时提供软件版和硬件版的实现。

  2. 以太坊中,每个Address类型变量均来自于椭圆曲线数字签名算法(ECDSA)所用的公钥,因此钱包程序还必须提供管理数字签名公钥密钥的功能。软件版accounts.实现叫keystore,通过在本地文件系统中分别显式存储账户信息和加密存储公钥密钥的方式,提供以上功能。

  3. 以太坊客户端程序之间,会通过accounts.Manager模块相互订阅Wallet更新事件,以保证每个客户端个体(peer),都能及时更新全网络中的完整Wallet列表。

  4. 客户端程序的核心是eth.Ethereum,它以RPC service的形式,向外提供内部各模块的功能,诸如挖掘区块, 数据库读写,p2p下载等。

  基本环节-交易,区块、区块链的存储方式等,这篇打算介绍一下“挖矿“得到新区块的整个过程,以及不同共识算法的实现细节。

  1.待挖掘区块需要组装

  在Ethereum 代码中,名为miner的包(package)负责向外提供一个“挖矿”得到的新区块,其主要结构体的UML关系图如下图所示:

  处于入口的类是Miner,它作为公共类型,向外暴露mine功能;它有一个worker类型的成员变量,负责管理mine过程;worker内部有一组Agent接口类型对象,每个Agent都可以完成单个区块的mine,目测这些Agent之间应该是竞争关系;Work结构体主要用以携带数据,被视为挖掘一个区块时所需的数据环境。

  主要的数据传输发生在worker和它的Agent(们)之间:在合适的时候,worker把一个Work对象发送给每个Agent,然后任何一个Agent完成mine时,将一个经过授权确认的Block加上那个更新过的Work,组成一个Result对象发送回worker。

  有意思的是<>接口,尽管调用方worker内部声明了一个Agent数组,但目前只有一个实现类CpuAgent的对象会被加到该数组,可能这个Agent数组是为将来的扩展作的预留吧。CpuAgent通过全局的<>对象,借助共识算法完成最终的区块授权。

  另外,unconfirmedBlocks 也挺特别,它会以unconfirmedBlock的形式存储最近一些本地挖掘出的区块。在一段时间之后,根据区块的Number和Hash,再确定这些区块是否已经被收纳进主干链(canonical chain)里,以输出Log的方式来告知用户。

  对于一个新区块被挖掘出的过程,代码实现上基本分为两个环节:一是组装出一个新区块,这个区块的数据基本完整,包括成员Header的部分属性,以及交易列表txs,和叔区块组uncles[],并且所有交易已经执行完毕,所有收据(Receipt)也已收集完毕,这部分主要由worker完成;二是填补该区块剩余的成员属性,比如Header.Difficulty等,并完成授权,这些工作是由Agent调用接口实现体,利用共识算法来完成的。


玖壹区块链声明

加微信:469649885区块链培训教程
还可免费获取区块链培训班试学名额

分享:

扫一扫在手机阅读、分享本文

区块链评论

玖壹区块链培训

玖壹区块链培训学院简称(玖壹学院http://www.91xiubbs.com/)提供区块链技术培训资料、区块链开发培训视频教程等下载,不过网上自学区块链技术课程必然存在一些缺陷:遇到问题易卡壳、学习周期漫长、无针对性等。区块链培训机构现场面对面的讲授区块链培训课程可以让您和团队在最短时间内掌握正确、系统、高效的区块链实战技术。