区块链底层与产品的制作工艺

本文我们将开始制作一个本地的区块链。

为什么要从本地开始?

很多人,受现在比特币以太坊等明星产品的影响,可能会说“区块链在本地有什么用啊要联网才有用啊”。

其实并不然,区块链不是必须要连上网,并不是经过共识了才叫区块链。根据分类,区块链可分成公共链,私有链 和联盟链,其中只有公共链是在公网上且分布式的,而私有和联盟根据其服务性质而定,其中大部分都是一个本地链即可完成功能。好比银行中需要数字账簿,只需在本地用于该链的计算机上操作各类交易即可实现账目审计。

简而言之,本地区块链就是一个可追溯、可信、方便审计的数据库。

我们这里选用Golang作为开发语言,因为它严谨而又现代,适合搭建这样可靠的服务,而且未来在分布式的应用方面Golang也有傲人之处。同样你也可以把代码根据思路翻译成其他语言,JS、Typescript、Python等现代语言对于初学者来说会议更好的体验。

当然本地区块链也有利于新手先熟悉区块链本身的样子。由于不涉及网络和其他附加元素,本地区块链最为纯净。同样也有利于将来将其他附加元素与区块链分离,实现接口衔接。

开始,类型

Golang是一个静态编译的语言,是需要对其中变量常量对象进行严格定义的。首先我们需要对区块(Block)进行定义:

type Block struct {
    Index     int64  `json:"index,string"`
    PrevHash  []byte `json:"prevhash,string"`
    Timestamp int64  `json:"timestamp,string"`
    Data      []byte `json:"data,string"`
    Hash      []byte `json:"hash,string"`
}

这是最基本的区块的定义。

首先说明下“`”和“`”之间的是tag内容,方便json序列化,各位可以当注释看待。

Index是为了区块排序用的索引,从0(即创世区块)开始。Timestamp为创建本区块时的时间。PrevHash表示上一个区块的hash值,而Hash值即表示将本区块所有信息(索引、前一区块Hash、时间戳Timestamp、数据Data)经过hash函数处理后独一无二的内容。

写到这里插个题外话,要做数字资产而且想被市场接受就要有噱头,或者说大卖点(至少现在是这样的)。但是作为个人开发者没核心技术突破的能力,不像有些币有财团背书有实验室背书,做不出什么抗量子算法,发明个抗ASIC挖矿算法都难。那就推荐这个bitcoin团队的repo:https://github.com/bitcoin/bips。这里面包含了所有Bitcoin升级的建议(BIP),而其中很多是因为BTC的势力对抗或者是重构与分叉的难度而未能完成的,并不是代码难度。因此作为一种新币,只要解决这些问题中的一两个就足够作为噱头。当然我们也能从中看到什么样的虚拟货币是人们真正想要的。其他部分就只要借鉴借鉴即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文将从本人从0开始开发区块链底层开始,分析区块链技术与初学者入门。区块链是现在非常热门的一种底层架构,利用了时间...
    CommandM阅读 2,383评论 0 0
  • 1 伟大的开拓者-比特币 1) 比特币产生 2008年,中本聪(Satoshi Nakamoto)发表了一...
    金子_c38e阅读 12,118评论 0 18
  • 区块链技术的典型应用 1 伟大的开拓者-比特币 1) 比特币产生 2008年,中本聪(Satoshi Na...
    yrm23阅读 11,560评论 0 23
  • 礼拜二,今天又降温了,各位小仙女们注意保暖哦。 今天还是像往常一样给大家做科普吧,(唉,现在每天写知乎,都成习惯了...
    Doris2426阅读 2,713评论 0 0
  • 脚踩西瓜皮,溜哪算哪。 星空5终于要涉及主题拉,主题就是,我还是不想写,哈哈哈,耐我何。 本想任性的写四百多个哈,...
    linsa碎碎念阅读 1,418评论 0 0

友情链接更多精彩内容