区块链简介
Posted 萌新学习区块链
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链简介相关的知识,希望对你有一定的参考价值。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,本质上是一个分布式的去中心化的数据库,同时是一种新型的信任模式,即去中介陌生信任。区块链的分层架构为数据层、网络层、共识层、激励层、合约层和应用层。具有可溯源、信息不可篡改、匿名性、自治性、去中心化、开放性等特点。
分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展
区块链采用“块-链”存储结构,区块包括区块头和区块体,区块头包含有上个区块的哈希值、时间戳、Merkle根、随机数、版本号等,区块体中有详细的数据。第一个区块称为创世区块,各个区块连接起来就形成了区块链。
哈希值是通过哈希算法得到的,哈希算法是一种将任意长度的二进制值映射为较短的固定长度的二进制值的算法,这个较短的二进制值就是哈希值,输入值改变一点点,哈希值就会大不相同,同时根据哈希值难以推断出原文,通过哈希值进行区块的连接确保了安全性;时间戳是一个字符序列,唯一的标识某一个时间;Merkle根是Merkle树的根节点,Merkle树的构建过程是对输入的数据进行hash(哈希运算)作为树的叶子节点,然后相邻的两个节点值配对作为输入再进行hash得到上层节点,当节点个数为奇数时,最后一个节点与自己配对,最终得到一个根节点,就是Merkle根,当叶节点发生改变时,根节点也会发生变化,通过Merkle根就可以确保数据未被修改。
非对称加密算法有公钥和私钥两个密钥,用公钥加密得到的密文只能由私钥解密,用私钥加密得到的密文只能由公钥解密,公钥公之于众,私钥由用户自己掌握且严格保密,这确保了信息在通信传输中的安全,是区块链点对点可靠通信的基础性技术,用户只需要将自己的公钥公布出去,就能得到仅用私钥能解密的密文,也能用私钥进行电子签名。
分布式账本是区块链工作的基石,存储于区块链中的诸多节点上,并具有完全相同一致的结构与内容;分布式账本包括有存储交易序列集的区块链账本与表达区块链当前所有账户状态的状态库两部分,当前状态库等于以前一状态库与当前区块作为输入数据,执行节点软件的状态转移函数所生成的状态转移结果。
P2P通讯协议是区块链的基础通信协议,确保了区块链中的每个节点既是客户端节点又是服务器节点,确保了点对点的通信,达到了去中心化的目的。
每个节点都要存储有相同的数据,那么由谁来生成新的区块呢?若由单一节点控制区块封装,实际上它就有了主宰区块中的交易序列的可能,该如何公平的选择节点来封装区块呢?这个时候就需要共识机制,常见的共识机制有工作量证明(POW)、权益证明机制(POS)、股份授权证明机制(DPOS)、实用拜占庭(PBFT机制)等。
POW:所有区块封装者投入算力(CPU、GPU或专用算力芯片)展开随机数计算竞赛找到满足条件的随机数,即随机数与待封装区块组成的数据体的哈希值满足某个条件,节点可以凭借找到的这个随机数进行区块封装,并将封装的区块向网络中的其它节点进行广播,其它节点对区块进行验证后将其放入本地区块链中,区块链由此得到延长。
POS:交易会按照预先设定的比例把一些币发送给矿工本身,每个节点根据拥有代币的比例和时间依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度,缩短了达成共识的时间。
DPOS:全体节点通过投票选举出一定数量的节点,由选出的节点确认区块、维持系统运行,全体节点具有随时罢免和任命代表的权力。
PBFT:所有交易执行完后,每个节点基于交易结果计算新区块的哈希摘要并向全网广播,当一个节点收到的2f个其它节点发来的摘要和自己相同时,就向全网广播一条执行消息(f为可容忍的拜占庭节点数),如果一个节点收到2f+1条commit消息,就可提交新区块到本地区块链。
那么该如何确保网络有稳定且不断扩大的算力呢(即激励更多的节点参与进来)?这个时候就需要激励机制了,激励机制会对完成区块封装的矿工进行区块链原生代币增发奖励以及封装区块中用户所支付的交易费。
智能合约使得区块链真正成为了一个底层技术,其是一段写在区块链上的代码,当事件满足合约中的条款时,代码会自动执行,基于智能合约的应用叫去中心化应用(DAPP)。
区块链的应用有:比特币、以太坊、超级账本等。按开放程度,区块链分为公有链、联盟链和私有链。
公有链:所有节点均可参与,完全开放。
联盟链:系统半开放,仅限联盟成员参与。
私有链:系统封闭,仅限个人或公司参与。
区块链分层架构详情如下:
数据层:封装了底层数据区块、时间戳、非对称数据加密等技术。
网络层:包括了分布式组网机制、数据传播机制、数据验证机制等。
共识层:封装了各类共识机制,如POW、POS、DPOS等,确保数据一致性。
激励层:包括了经济激励的发行机制和分配机制。
合约层:封装了各类脚本、算法和智能条约。
应用层:封装了各种应用场景和案例。
区块链钱包之加密算法简介
(一)区块链钱包之生成助记词
(二)区块链钱包之创建钱包地址
(三)区块链钱包之加密算法简介
(四)区块链钱包之创建比特离线交易(BTC交易)
(五)区块链钱包之创建以太坊交易(ETH交易)
钱包作为用户隐私数据不可以对其进行直接保存,更不可以上传服务器,所以如何处理来管理钱包需要慎重。
当用户创建完钱包之后,钱包相当于用户的手机,如果不想别人看你手机内容需要密码;其实用户对钱包的操作都基于助记词,助记词就是密码,当你拥有助记词就相当于你拥有了操作钱包的权限,但是助记词不容易记,而且每次输入太繁琐,我们可以设置钱包密码来代替助记词的功能,支付密码为更简便的6位数字来代替钱包密码。
1、钱包密码进行hash256,结果作为Aes的key来对助记词进行AES加密,结果保存手机中;
2、支付密码进行BCrypt保存;
3、支付密码进行hash256,结果作为Aes的key来对钱包密码加密,结果保存;
在进行交易的时候根据用户输入的支付密码进行反解来得到助记词,用助记词来获取ECKey对交易进行签名。
AES
对称加密方式,通过key对明文加密,通过key可以对密文解密成明文。
BCrypt
单项hash加密算法,每次hash出来的结果不同,但是可以判断密文是否来自明文。
/*
* 加密方法
* 此方法可能导致程序挂起,可以放在子线程执行。
*/
Bcrypt.hashpw(password, BCrypt.gensalt());
/*
* 验证密码正确性
* 此方法内部也调用了hashpw()方法。
*/
Bcrypt.checkpw(password, hashed);
希望我的分享能帮助到大家
以上是关于区块链简介的主要内容,如果未能解决你的问题,请参考以下文章