区块链相关总结

基础定义

区块链

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。

去中心化

去中心化(英语:decentralization)是互联网发展过程中形成的社会关系形态和内容产生形态,是相对于“中心化”而言的新型网络内容生产过程。

共识机制

所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。

  1. POW:Proof of Work,工作证明。 比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。

  2. POS:Proof of Stake,股权证明。 POS:也称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。 简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。

  3. DPOS:Delegated Proof of Stake,委任权益证明。 https://www.geeksforgeeks.org/delegated-proof-of-stake/ 比特股的DPoS机制,中文名叫做股份授权证明机制(又称受托人机制),它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

  4. PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法。 PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,假设|R|=3f+1,这里f是有可能失效的副本的最大个数。尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。

  5. Proof of space and time. chia-blockchain 提出的Chia consensus,即所谓的硬盘挖矿。

智能合约

智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。
智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。

DAPPS

分散式应用程序(英语:Decentralized Application),又名为去中心化应用程序, 依靠区块链技术核心所开发出来的应用程序。

区块链分类

  1. 公有链
    公有链是指全世界谁都能够读取的、任何人都可以发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链——共识过程决定哪个区块可被添加到区块链中和明确当前状态。公有链通常被认为是“完全去中心化”的。它的特点是不可篡改,匿名公开,技术门槛低,是真正的去中心化。每个参与者可以看到全部的账户余额和其全部的交易活劢。公有链的主要应用有比特币,以太坊等。
  2. 联盟联
    联盟链通俗来讲就是“被阉割的公有链”,是指其共识过程受到预选节点控制的区块链。它主要的应用在机构间的交易、结算或清算等B2B场景 。举个例子,像银行间进行支付、结算、清算的系统就能够采用联盟链的形式,将各家银行的网关节点作为记账节点。
  3. 私有链
    私有链按照字面意思就是完全私有的区块链,即是写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被一定程度地进行了限制。区块链上的读写权限、参与记账权限按联盟规则来制定。整个网络由成员机构共同维护,网络接入一般通过成员机构的网关节点接入,共识过程由预先选好的节点控制。私有链的特点是交易速度快,保护隐私,而且交易成本极低;但是它也有一些缺点,私有链可以被操作价格,也能够修改代码的,风险较大。

网络相关

P2P

对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。“Peer”在英语里有“对等者、伙伴、对端”的意义。因此,从字面上,P2P可以理解为对等计算或对等网络。国内一些媒体将P2P翻译成“点对点”或者“端对端”,学术界则统一称为对等网络(Peer-to-peer networking)或对等计算(Peer-to-peer computing),其可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client)。

GHOST

以太坊使用的GHOST协议(Greedy Heaviest Observed Subtree) How does Ethereum work, anyway? How does Ethereum work, anyway?(译)

区块链开发

为什么要用golang语言进行区块链编程开发?

Go-ethereum

以太坊(英文Ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。 Docs

Remix IDE

Remix IDE 是一个开源 Web 和桌面应用程序。它促进了快速的开发周期,并拥有一组带有直观 GUI 的丰富插件。 Remix 用于合约开发的整个过程,也是学习和教授以太坊的游乐场。 Docs

Solidity

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。 Docs

Truffle

Truffle 是一个在以太坊进行 DApp 开发的世界级开发环境、测试框架。它在使开发人员更轻松。 Docs

Ganache

Ganache 是您用于以太坊开发的个人区块链。是Truffle Suite包含的工具之一。 [Docs](https://www.trufflesuite.com/docs/ganache/overview)

区块链安全

OWASP 区块链安全TOP10 2019

一、高级可持续威胁
二、失控的币值通胀
三、失效的权限控制
四、不安全的共识协议
五、考虑不充分的程序逻辑
六、不严谨的业务策略
七、校验不严格的交易逻辑
八、脆弱的随机数机制
九、存在缺陷的激励机制
十、日志记录和监控不足

区块链安全技术总结

数据层(区块数据,链式结构,数字签名,哈希函数,Merkle树,非对称加密)
网络层(P2P网络,传播机制,验证机制)
共识层(POW,POS,POF)
激励层(发行机制,分配机制)
应用层(实现转账和记账功能)


© 2021. All rights reserved.

本站总访问量 Web Analytics

Powered by Hydejack v9.1.2 & Moded by ZYA