链原——Fabric
超级账本Fabric系统架构 引入了部分中心化服务节点。 为了满足联盟链跨组织多业务协同的需求,超级账本Fabric区块链系统提供了多通道机制,可以同时建立多个逻辑上独立、相互隔离的区块链,每个通道对应唯一的区块链与账本 提供了链码(Chaincode)机制,实现比以太坊智能合约更灵活、强大的智能合约功能,每个节点都可以部署运行链码,链码将存储于区块链中,加载到每个Peer节点上的轻量化Docker容器中执行。 【1】 系统逻辑架构【2】 超级账本Fabric系统不提供加密数字货币功能,因此没有激励层 系统系统的存储层主要采用文件系统、LevelDB或可选的CouchDB Key-Value数据库,为超级账本Fabric系统相关的区块链、分布式账本、智能合约、X.509数字证书、日志、配置文件等数据提供高效、可靠持久化存储服务。 系统的数据层是系统核心功能层级之一,对超级账本Fabric系统核心的区块、区块链、交易、账本、地址、世界状态等关键数据结构进行定义和处理,负责将交易打包进区块,由区块组成区块链,并构建了世界状态、区块索引、键历史索引等数据结构,并基于底层的存...
链原——共识机制
区块链共识机制由于各个节点的自身状态和所处网络环境不尽相同,而交易信息的传递又需要时间,并且消息传递本身不可靠,每个节点接收到的需要记录的交易内容和顺序也难以保持一致。因此,区块链系统的共识问题,或者说账本数据一致性问题,是关系着整个区块链系统的正确性和安全性的关键问题。 共识基本原理与问题数据一致性问题区块链系统的分布式账本中,如何确保分散存储于多个不同网络节点的账本数据在任意时刻都是一致与可信的,不会发生数据冲突与错误,这就涉及分布式系统的一致性问题。 在分布式系统中,各个节点数据的一致性与节点数据的可信性并不是一个问题,解决系统一致性问题并不一定能保证系统数据的正确可信,区块链共识机制的关键是需要同时解决好一致性与可信性两个问题 FLP定理FLP定理1:在异步通信的分布式系统中,即使只有一个进程失败,也没有任何算法能保证非故障进程达到一致性。 FLP定理假设的分布式系统模型如下: (1) 异步通信:异步通信与同步通信的最大区别是没有时钟、不能时间同步、不能使用超时、不能探测失败、消息可任意延迟、消息可乱序; (2) 通信健壮:只要进程非失败,消息虽会被无限延迟,但最...
PBFT共识算法
PBFT共识算法PBFT算法概述定义与介绍定义Practical Byzantine Fault Tolerance(PBFT)是一种用于分布式计算和分布式系统中的共识算法,旨在解决拜占庭容错问题。(拜占庭容错问题涉及到在分布式系统中存在故障或恶意节点的情况下,如何确保系统能够维持一致性)。 介绍PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,假设|R|=3f+1,这里f是有可能失效的副本的最大个数。尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。 PBFT算法中节点只有两种角色,主节点(primary)和副本(replica),两种角色之间可以相互转换。两者之间的转换又引入了视图(view)的概念,视图在PBFT算法中起到逻辑时钟的作用。 特点与工作原理特点 拜占庭容错: PBFT旨在解决拜占庭容错问题,这意味着系统可以继续正...
链原——以太坊系统
以太坊系统以太坊区块链系统架构以太坊区块链系统依然是P2P体系结构,即对等网络结构 以太坊系统每个节点都可以存储完整的区块链与账本数据,每个节点都可以发起和监听以太坊网络上的交易信息,验证每个交易和区块的合法性; 每个节点都可以交易的形式发布智能合约,智能合约将存储于区块链中,加载到每个节点上的以太坊虚拟机EVM中执行 虽然每个以太坊系统节点上都安装了对等的以太坊系统软件,但是每个节点可以自由选择启动以太坊系统的不同功能,从而属于不同的节点类型,在区块链网络中扮演不同的角色。目前,以太坊系统的节点总体上可以分为“全节点”、“轻节点”、“存档节点”等类型,其中发挥核心作用的是全节点。 【1】 系统逻辑架构【2】 以太坊系统的存储层主要采用文件系统和LevelDB Key-Value数据库,为以太坊系统相关的区块链、分布式账本、智能合约、X.509数字证书、日志、配置文件等数据提供高效、可靠持久化存储服务。 以太坊系统的数据层是系统核心功能层级之一,对以太坊系统核心的区块、区块链、交易、账本、账户、地址、状态树、交易树、收据树等关键数据结构进行定义和处理,负责将交易打包进区块,由区块...
链原——比特币系统
比特币区块链系统架构背景:比特币系统作为世界上第一个大规模成功运营的区块链系统,也建立了区块链系统体系结构的标准——P2P体系结构,即对等网络结构。 每个节点都通过底层的P2P网络协议发现、连接其它区块链网络节点,并提供P2P网络的路由功能; 个节点可以通过PoW共识机制竞争计算新区块的出块权(俗称“挖矿”); 每个节点都可以存储完整的区块链与账本数据,每个节点都可以发起和监听比特币网络上的交易信息,验证每个交易和区块的合法性 关于节点节点总体上可以分为“全节点”、“轻节点”等两大类,其中发挥核心作用的是全节点。 全节点 全节点是比特币系统中功能最完整的节点,全节点一般要求保持一直在线,主要负责执行以下功能: 参与区块记账权的竞争,通过PoW共识机制竞争下一个新区块的出块权,获得出块权的节点将获得系统激励,激励的方式就是奖励一定数量的比特币,也是比特币这种加密货币的唯一产生来源。 存储完整的区块链与账本数据,每个全节点都保存了一个相同区块链与账本数据副本,自2009年比特币系统上线运行至今,每个全节点的区块链与账本数据存储容量已超过500GB。 提供P2P网络路由...
WEB安全
如何实施安全评估:资产等级划分—威胁建模—风险分析—设计安全方案 资产等级划分 划分信任域 根据网络逻辑划分(信任程度:数据库>web应用>Internet) 互联网安全核心——数据安全 威胁建模 找出威胁 方法:STRIDE模型 威胁 定义 对应安全属性 Spoofing(伪装) 冒充他人身份 认证 Tampering(篡改) 修改数据或代码 完整性 Repudiation(抵赖) 否认做过的事情 不可抵赖性 Information Disclosure(信息泄露) 机密信息泄露 机密性 Denial of service(拒绝服务) 拒绝服务 可用性 Elevation of Privilege(提升权限) 未经授权获得许可 授权 风险分析 判断风险高低(风险=可能性*潜在危害) 方法:DREAD模型 设计安全方案 安全是产品的属性 优秀安全方案所具备特点: 能够解决问题 用户体验好 高性能 低耦合 易于扩展与升级 安全方案设计原则: 1.“默认安全原则” a. 专家系统:黑名单&...
区块链安全基础四
八.区块链攻击与防御安全威胁分析 自身结构的复杂性和应用场景的多样性 恶意攻击者可能针对区块链应用的底层技术缺陷、低耦合性等安全漏洞展开攻击,从而非法攫取利益。 分类: 分类数据层威胁数据层、网络层和共识层是区块链技术体系中最基础、最必要的3个层级,而数据层是其中最重要的一层,主要涉及区块链的数据结构、数字签名、哈希函数等密码学工具。这些密码学工具在保护区块链数据隐私的同时,其固有的碰撞攻击、后门攻击等安全问题也给区块链数据隐私带来了一定威胁。此外,攻击者也可能通过交易延展性攻击和恶意信息攻击破坏交易秩序和区块链网络环境。因此,区块链数据层面临的安全威胁主要包含数据隐私窃取和恶意数据攻击。 原因:区块链的数据层主要负责底层数据的存储,包括交易信息、区块头等关键数据。由于区块链的不可篡改性,一旦数据被写入,修改这些数据是极其困难的。然而,如果攻击者在数据层植入恶意信息或成功篡改已有数据,可能会对整个链的安全性造成威胁。 类型:常见的数据层攻击包括51%攻击,通过控制大多数计算力来重写区块链历史;以及时间戳攻击,即通过操纵时间戳来影响区块的产生。 密码算法的安全风险:如果使用的...
区块链安全基础三
七.恶意代码及防范技术与漏洞挖掘技术7.1 恶意代码的概念7.1.1常见名词举例计算机病毒: 是一种计算机程序代码,它递归地复制自己或其演化体。病毒感染宿主文件或者某个系统区域,或者仅仅是修改这些对象的引用,来获得控制权并不断地繁殖来产生新的病毒体 蠕虫病毒: 主要在网络上进行复制 逻辑炸弹: 通常是合法的应用程序,在编程时写入一些“恶意功能” 特洛伊木马: 隐藏在一个合法的躯壳下的恶意代码 漏洞利用: 漏洞利用代码(exploit code)针对某一特定 漏洞或一组漏洞 下载器: 通过破坏杀毒软件,然后再从指定的地址下载大量其他病毒、木马进入用户电脑 玩笑程序 7.1.2恶意代码的危害 破坏数据 占用磁盘存储空间 抢占系统资源 影响计算机运行速度 7.1.3恶意代码的命名规则1<病毒前缀>.<病毒名>.<病毒后缀> 病毒前缀是指一个病毒的种类 病毒名是指一个病毒的家族特征,是用来区别和标识病毒家族的 病毒后缀是指一个病毒的变种特征,是用来区别具体某个家族病毒的某个变种的 7.2 恶意代码的生存原理7.2.1恶意代...
如何提pr&vscode如何连上wsl
参与开源项目流程(Fork & PR) Fork 仓库 在目标开源项目页面点击 Fork,将项目复制到自己的 GitHub 账户。 克隆到本地 在自己 Fork 的仓库点击 Code 按钮,复制 HTTP/SSH 链接。 在 Git Bash 执行: 12345bash复制编辑git clone 链接地址 修改代码 创建分支 → 修改代码 → 提交到自己的远程仓库。 发起 Pull Request (PR) GitHub 会在原仓库页面提醒你当前有新提交可 PR。 点击绿色按钮(建议使用提醒中的按钮),填写必要信息提交,等待仓库维护者审核合并。 更新 Fork 仓库(与原项目同步) 关联原仓库 12345bash复制编辑git remote add upstream 原仓库链接 获取原仓库最新代码 12345bash复制编辑git fetch upstream 合并到本地主分支 12345bash复制编辑git merge upstream/master 推送到远程 Fork 仓库(可选) 12345bash复制编辑git p...
如何提pr&vscode如何连上wsl
参与开源项目流程(Fork & PR) Fork 仓库 在目标开源项目页面点击 Fork,将项目复制到自己的 GitHub 账户。 克隆到本地 在自己 Fork 的仓库点击 Code 按钮,复制 HTTP/SSH 链接。 在 Git Bash 执行: 12345bash复制编辑git clone 链接地址 修改代码 创建分支 → 修改代码 → 提交到自己的远程仓库。 发起 Pull Request (PR) GitHub 会在原仓库页面提醒你当前有新提交可 PR。 点击绿色按钮(建议使用提醒中的按钮),填写必要信息提交,等待仓库维护者审核合并。 更新 Fork 仓库(与原项目同步) 关联原仓库 12345bash复制编辑git remote add upstream 原仓库链接 获取原仓库最新代码 12345bash复制编辑git fetch upstream 合并到本地主分支 12345bash复制编辑git merge upstream/master 推送到远程 Fork 仓库(可选) 12345bash复制编辑git p...