随着Web.0和区块链每天变得越来越主流,您知道什么是区块链吗?您知道它的技术优势和应用吗?
本教程的目的是通过构建区块链技术,从技术角度剖析区块链技术。
现在,您将从零开始构建一个区块链系统,以真正了解这种对等分布式技术的来龙去脉。
然后,自己决定其未来和优势。
本教程中构建,学习和做什么?您将在没有任何经验的情况下在本地计算机上设置Go项目
您将生成并分发您的第一个区块链令牌
您将从头开始在Go中开发一个CLI控制的数据库
您会发现在他们最喜欢的应用中,有多少位权限用户拥有
您会发现区块链的主要价值主张
您将使用安全的加密哈希函数使数据库不可变
因此,让我们开始吧,进入我们的故事。
认识主角安德烈(Andrej)。安德烈是一家酒吧的老板,白天是一家软件开发人员。
安德烈(Andrej)厌倦了:
编程可靠的老式PHP/Java/Javascript应用程序
忘记他的朋友和客户欠他星期五晚上所有未付的伏特加酒花多少钱
花费时间收集和计数硬币,退还找零钱并且通常接触COVID-19暴露的银行票据
维护用于桌上足球,飞镖,台球和扑克的不同塑料芯片
安德烈希望:
对酒吧的活动和销售有完善的可审计历史,以使其酒吧符合税收法规
将他的律师事务所转变为客户可以信任并从中获利的自治,付款高效,去中心化和安全的环境
他的目标是编写一个简单的程序,并以虚拟形式保留其客户的所有余额。
安德烈分享他的想法:
“每个新客户都会给我现金,我会把他们等值的数字代币(硬币/加密货币)记入贷方。代币将代表条形图内外的货币单位。
用户将把令牌用于所有酒吧功能,包括支付酒水,将其借贷给朋友,打乒乓球,玩扑克和踢球。
拥有由区块链令牌驱动的酒吧将为我的客户带来大量价值。与我在这条街上的竞争对手和其他酒吧相反,那里的顾客只花钱并得到宿醉作为交换,我持有酒吧代币的酒吧顾客将拥有股东权利。
与在Apple或Microsoft这样的公司中拥有大量股票类似,持有这些条形码令牌的客户将能够通过投票并决定以下内容来决定条形码的运作方式:
饮料价格
营业时间
新功能(电视,自动点唱机...)
室内和外部设计
利润分配
等等。
哦,这将是一个编程梦想!我将这些代币称为:区块链酒吧代币,“TBB!”
目录要求
设置项目
01
MVP数据库
0
突变全球数据库状态
0
整体事件与交易
04
不可改变的
要求让我们深入研究我们的教程。我推荐年以上Java/PHP/Javascript或其他类似Go语言的编程经验。
您也可以完成ATourOfGo的官方讲座,以熟悉语言语法和基本概念(约0分钟)。
像区块链一样,这对于您的整体编程职业来说是一种了不起的技术。Go是一种流行的语言,Go开发人员的薪水比平均Java/PHP/Javascript职位高。
Go针对多核CPU架构进行了优化。您可以毫无问题地生成数千个轻量级线程(Go例程)。对于高度并行和并发的软件(例如区块链网络),这是极其实用的。
通过用Go编写软件,您可以立即获得接近C++的性能,而不会因为忘记释放内存而丧生。
Go还可以编译为二进制文件,这使其非常易于移植。
设置项目本文有一个专用的开源Github存储库,其中包含完整的源代码,因此您可以编译代码并在自己的本地计算机上运行该程序。
01
MVP数据库
现在安德烈赶上创新并开始构建Web.0软件的时候了。
幸运的是,安德烈在上周阅读了《精益创业》(TheLeanStartup)一书后,觉得他现在还不应该过度设计解决方案。因此,他为酒吧的MVP数据库选择了一个简单但有效的JSON文件。
区块链是一个数据库。
安德烈生成1M实用程序令牌
gitcheckoutc1_genesis_json
在区块链世界中,令牌是区块链数据库内部的单位。他们的美元或欧元实际价值会根据其需求和知名度而波动。
每个区块链都有一个“Genesis”文件。Genesis文件用于将第一个令牌分发给早期的区块链参与者。
这一切都始于一个简单的虚拟的genesis.json。
Andrej创建了一个文件
./database/genesis.json
他在其中定义BlockchainBar的数据库将具有1M令牌,并且所有令牌都属于安德烈
{"genesis_time":"-0-18T00:00:00.Z","chain_id":"the-blockchain-bar-ledger","balances":{"andrej":}}令牌需要具有真正的“实用性”,即用例。从第一天起,用户就可以使用他们付款!
安德烈必须遵守法律法规(SEC)。发行未注册的安全性是非法的。另一方面,实用程序令牌很好,因此他立即在酒吧的门上打印并粘贴了新的定价白色海报。
安德烈为代币分配初始货币价值,以便他可以将其兑换为欧元,美元或其他法定货币。
1TBBtoken=1€Item
Price
-------------------------
-------
Vodkashot
1TBB
Orangejuice
5TBB
Burger
TBB
CrystalHeadVodkaBottle
TBB
Andrej还决定,他每天应该获得个令牌,以维护数据库并拥有如此出色的想法。
有趣的事实以太坊区块链上的第一个起源以太(ETH)是以与安德烈的效用代币相同的方式创建并分发给早期投资者和开发商的。年,在以太坊区块链网络上的ICO(初始代币发行)热潮期间,项目创始人撰写并向投资者介绍了白皮书。白皮书是一份技术文档,概述了一个复杂的问题和可能的解决方案,旨在教育和阐明特定问题。在区块链世界中,白皮书用于概述特定区块链一旦开发后将如何表现和行为的规范。区块链项目为每个白皮书构想筹集了0万至亿欧元。为了换钱(ICO“资金”),投资者名称将包括在初始的“创始余额”中,这与安德烈的做法类似。投资者通过ICO寄予的希望是,创始币的价值有所上升,并且团队可以提供概述的区块链。当然,并非所有白皮书的想法都能实现。由于不清楚或不完整的想法而失去的大量投资是为什么区块链在整个ICO中受到媒体的负面报道,以及为什么有些人仍然认为这是炒作。但是底层的区块链技术是神奇而有用的,因为您将在本书中进一步学习。您在Genesis文件中定义的令牌供应,初始用户余额和全局区块链设置。
突变全球数据库状态gitcheckoutc_db_changes_txt
经过一周的工作,酒吧设施已准备就绪,可以接受代币。不幸的是,没有人出现,所以安德烈为自己订购了三杯伏特加酒,并将数据库更改写在一张纸上:
andrej-;//shotsofvodkaandrej+;//technicallypurchasingfromhisownbarandrej+;//Rewardforaweekofwork(7xperday)为了避免重新计算每个客户余额的最新状态,安德烈创建了一个以汇总格式存储余额的文件。
./database/state.json
新的数据库状态:
{"balances":{"andrej":0}}为了将流量带入他的酒吧,安德烈宣布了在接下来的4小时内向购买TBB代币的每个人提供%的独家奖励。
他得到了第一个客户认购。汤姆预购了价值0欧元的代币,为了庆祝,他立即花了1个TBB买了酒水。andrej-;//transfertoBabaYaga
babayaga+;//pre-purchasewith%bonusbabayaga-1;andrej+1;andrej+;//1dayofsun