1. 区块链
概念:需要抽象的理解,本质是以区块形式的分布式数据库链条
区块中的信息(数据结构):本区块的hash值,前一区块的hash值,数据信息(交易记录),时间戳
特点:去中心化,半数原则(各区块终端认可),可以查询不可篡改,隐藏用户信息(用地址表示)
2. 区块链技术应用场景
1)区块链1.0 比特币(最著名、最成熟的应用场景)
2)区块链2.0 股票、期权等金融领域(广泛应用)
3)区块链3.0 教育、医疗、物流、公正、审计等 (未来应用)
3.区块链实现
1)语言选择:Go语言
2)重点技术:hash算法,经典算法sha256广泛应用于银行
sha256 用于数据的合法性校验,将一系列拼接原始数据经过hash算法得到256定长的字符串,该算法可保证不重复性(唯一性)、不可篡改性(微小改动hash值就会有不同)、可复现可校验性、不可逆性(不可还原到原始数据)
3)创世纪块(第一个区块)
4)工作量证明(比特币场景):挖矿 通过挖矿获得比特币奖励,比特币可以用于转账和交易
挖矿难度可以设置,需要耗费大量计算机资源去计算一个符合要求的数值,即可获得比特币,而这个数字越来越难以计算。
5)存储区块到文本文件(bolt key-value机制),key:当前区块hash值,value:整个区块信息的序列化字节数组
6)自定义区块链,client(cli 自定义命令机制)
7)交易和记账:输入和输出、hash交易序号、不可篡改、整体上奖励比特币(没有输入),整体上计算输入和输出之间联系才能计算余额、转载不允许超过余额等限制条件、找到没被花出去的输出,余额累加(属于自己区块的)
8)地址身份标识:一对公钥和私钥,比特币中称为钱包
存储钱包(存储地址)文件:内部是公钥私钥,表面只能看到地址
Bash58(增强地址字符串的可读性,去掉易混淆的0,O,l,+,/)
比特币开源项目:以太坊,以太币(经典)https://github.com/ethereum