区块链
区块链方面
thefist11
难以忘记编程路上领导和好友的细致指导,所以必须努力!(真诚希望大家多多指导!)
展开
-
EOS 源代码解读 (2)插件-set_program_options
class application_impl { public: application_impl():_app_options("Application Options"){ } options_description _app_options;//存储命令行和config.ini文件的参数 options_description _cfg_options;//存储config.ini文件的参数}void application:原创 2022-02-14 07:46:05 · 227 阅读 · 0 评论 -
VRF可验证随机函数(2)4个函数
1.1 生成密钥函数VRFgen:生成一个公钥私钥对(VRFSK、VRFPK)VRFSK: secret keyVRFPK: public key1.2. 生成随机数输出VRFval伪随机值val = VRFval (VRFSK, x)input :x1.3. 计算零知识证明VRFprovevarProof, proof = VRFprove(VRFSK, x)验证 val和varProof相等1.4. 验证随机数输出 VRFverVRFver(VRFPK, x, val,proo...原创 2022-02-01 23:17:20 · 906 阅读 · 0 评论 -
VRF可验证随机函数(1)概念
1. 问题result = SHA256(secret, data),要验证result,光有data是不够的,必须要有secret才能计算出result。有没有可能在不出示密钥secret的情况下,验证result和data是对应匹配的?2. 3个特性可验证性提供一个非交互的零知识证明,用来验证该随机数输出的确是某个人生成的。eg. 强盗站在很远的地 方,能看见阿里巴巴把山门打开了,但是不知道阿里巴巴念的是什么咒语唯一性对于相同的 Input,它得到的 Output 一定是相同的。原创 2022-02-01 23:15:13 · 640 阅读 · 0 评论 -
共识协议(9)NPOS波卡
1. NP问题:m 个选民对 n 个候选者的情况下,选出最终的 t 为验证者(注:提名人可以有任意个,验证者是有限个)1.1 三大原则Balance: 验证者在出块时候的比重相同,该策略在 Stake 分配需要尽量平均,保证网络的安全;Support: 尽可能让多的 Stake 资金参与进来。算法通过计算来决定的Stake 具体分配给多少到哪个验证者Fair representation: Stake 多的提名者选投的验证人更可能出现在验证者集合中。1.2 步骤step1.提名者给出自己的投票之原创 2022-01-31 12:28:14 · 551 阅读 · 0 评论 -
共识协议(8)NPOS提名权益证明
1. NPOS提名权益证明( Nominated Proof of Stake)1.1 验证者中继链的全节点,中继链会在验证人池中通过随机分组把验证人指定给不同的平行链。验证人会接受来自收集人打包的区块并进行有效性验证,然后结合共识算法对收集人提交的区块进行确认。1.2 提名者Polkadot 中数字货币 DOT 的持有人,它会选择自己所信任的验证人进行 DOT 质押,然后分享验证人的收益最多可以提名 16 个validators2. NPOS vs DPOS...原创 2022-01-31 12:25:44 · 4890 阅读 · 0 评论 -
共识协议(7)aura
固定的验证者集合(Validator Set)验证者轮流生成区块(区块生成的顺序是已知的,会产生一些安全性问题)选择最长的链原创 2022-01-31 12:22:00 · 4581 阅读 · 0 评论 -
共识协议(6)PBFT详细步骤
step1. request阶段client发送消息给主导者:sign(REQUEST, o, t, c)REQUEST= 消息内容m+ 消息摘要d(m)o: 请求的具体操作t: 请求时客户端追加的时间戳c:客户端标识。step2. pre-prepare阶段主导者发送消息给其他副本节点: sign(<PRE-PREPARE, v, n, d>, m)v:视图编号n:预准备消息序号(要在某一个范围区间内的[h, H])step3.其他节点收到消息后,若同意,则发送prep原创 2022-01-31 12:13:27 · 975 阅读 · 0 评论 -
共识协议(6)PBFT实用拜占庭容错
1. PBFT实用拜占庭容错(Practical Byzantine Fault Tolerance)1.1 BFT算法(Byzantine Fault Tolerance)3f 个节点中最多f 个代表不诚实1.2 3种身份Client:客户端节点,负责发送交易请求。Primary: 主节点,负责将交易打包成区块和区块共识,每轮共识过程中有且仅有一个Primary节点。Replica: 副本节点1.3 3个阶段:pre-prepare,prepare, commitstep1. client原创 2022-01-31 12:08:22 · 647 阅读 · 0 评论 -
共识协议(5)DPOS委托权益证明
1. DPOS委托权益证明(Delegated Proof of Stake)由被社区选举的可信账户(超级节点,比如得票数前101位可以成为)来创建区块可以随时通过投票更换超级节点(矿池)2.step1. 节点自我推荐,希望成为验证人step2. 普通的持币者对候选人投票(持币者币越多,投票权重越大voting weight)step3. 当前轮结束,选出前N名...原创 2022-01-31 11:54:45 · 5971 阅读 · 0 评论 -
共识协议(2)共识算法分类
1. 分类1.1 概率性共识(弱一致性)区块数据以一定概率达成一致, 随着时间推移概率逐渐提高, 不能保证区块数据将来不可更改, eg, 比特币持久性(persistence)衡量区块链数据的一致性. 如果某区块在节点的本地区块链中拥有k个区块的深度, 该区块在其他节点的本地区块链中(极大概率)也拥有k个区块的深度.由于网络传播等限制, 各个节点的本地区块链可能暂时不一致, 但k个区块之前的数据(极大概率)是一致的.活性(liveness)衡量系统可用性.活性指诚实节点发起的交易最原创 2022-01-31 11:38:00 · 6781 阅读 · 0 评论 -
共识协议(1)CAP理论
1. 定义分布式系统中,只能有两个,不能同时满足如下3个特性Consistency(一致性)对于客户端的每次读操作,返回数据一致Availability(可用性)只要收到用户的请求,服务器就必须给出回应Partition tolerance(分区容忍性)节点失败1.1 Consistency一致性...原创 2022-01-31 11:34:34 · 1325 阅读 · 0 评论 -
波卡链Substrate (7)Grandpa + Babe
1.BABE 必须建立在 GRANDPA 最终确定的链上。BABE 中最好的链就是由主节点创建的区块最多的链eg. 标有“1”的块是主要块;标有“2”的那些是次要块。Grandpa 多个块一次性进行确认1.1 时间复杂度BABE: O(n)节点之间只要发送一次块信息Grandpa : O(n²)二次确认...原创 2022-01-31 11:26:53 · 490 阅读 · 0 评论 -
波卡链Substrate (7)Grandpa协议四“责任安全机制”
1. Account Safety当网络出现分叉的 commit 信息时,Polkadot节点马上采取 Account Safety 的机制。是一种“弱主观性”安全模式:通过惩罚参与者保障安全针对验证者的行为,事故后调查:如果恶意节点行为不端,将被追责。参与者必须经历相当长的撤回期(可能是几个月)才能解锁他们的股权和获得回报步骤step1. 让所有节点交出对分叉链的 pre-votes or pre-commits 投票step2. 让节点交出它收到的第r轮的 pre-votesste原创 2022-01-30 22:51:01 · 270 阅读 · 0 评论 -
波卡链Substrate (7)Grandpa协议三“2阶段同步”
预投票pre-vote+预执行pre-commitstep0. 假设当前是第r轮,一个voter 在(r-1)轮完成后,并且收集完之前所有轮投票的情况下可以进行第r轮投票step1. 如果v是primary,广播上一轮r-1轮的Estamete(pre-vote_V(r-1,v), pre-commit_C(r-1,v))(Estimate包含了所有本可以在r轮最终确定却实际上没有被最终确定的区块的信息)step2. 等待网络延迟2T后,每个验证器为它理想的最高区块广播“预投票”pre-vote.原创 2022-01-30 22:43:31 · 606 阅读 · 0 评论 -
波卡链Substrate (7)Grandpa协议二“投票”
1. 投票1.1 复杂度O(n²)如果节点数增加一倍,则必须发送四倍数量的消息。绝对(非概率)安全性的共识协议需要为达成一致的所有内容传递大量消息,需要在参与者之间发送的消息数量与共识协议中的参与者数量成正比(在平行链之间传递任意消息,如智能合约或完成任何其他类型的通信 )找到具有足够投票数量的最高区块编号,以被视为最终区块(对当前最高块进行投票,即使没有确定最后的区块,也可以确定前面的区块)step1. 初始投票step2. 投票统计1.2 weighted voting 加权投票e原创 2022-01-30 22:38:04 · 1172 阅读 · 0 评论 -
波卡链Substrate (7)Grandpa协议一“概念说明”
1. Grandpa协议祖先递归继承共同前缀协议(GHOST-based Recursive Ancestor Deriving Prefix Agreement)区块选择协议:配合出块协议对链进行投票,一次确认若干个块确定性:保证跨链交易100%不可逆eg. 出块日子出块日志:从664253一下到664256Idle(24peers),best:#664257(0x706c…76b7),finalized#664253(0xe4ab…4d2a)Imported#664258(0x原创 2022-01-22 23:32:08 · 912 阅读 · 0 评论 -
波卡链Substrate (7)Babe协议六“Secondary slot leader”
1. 问题由于槽是随机分配,一个插槽可能是空的,有的却有多个。或者说刚才的n个Validators的output都小于阈值。谁来出块?2. 解决方法每个插槽可以有一个主要Primary leadership和第二作者Secondary Slot Leaders每个人都有机会使用轮询算法,每个validator有一个序号blake256 哈希算法epch_randomness:纪元随机值slot_number: slot号authorities_len:作者数量...原创 2022-01-18 08:37:02 · 156 阅读 · 0 评论 -
波卡链Substrate (7)Babe协议五“Epoch纪元更新”
1. 新的纪元更新时,validors需要更新新的纪元随机值,新纪元的当前有效validators一个新的validator加入链后,至少要过2个纪元才能参与出块。eg. 第i个纪元的时候就确定了第i+1,i+2个纪元的validators1.1 纪元随机值生成算法创世块手动生成一个随机数r用于前两个纪元的插槽分配。其他区块Em是其前2纪元所有输出块的算法:m:纪元序号p:纪元内所有块的输出混合运算,假设每个块的vrf输出为v1,v2,…vn,那么p=Hash(v1||v2||…||v原创 2022-01-18 08:34:38 · 274 阅读 · 0 评论 -
波卡链Substrate (7)Babe协议四“出块签名和验证”
1. 步骤step1. slot leader更新本地链C使用新块,并发送新块B发送给其他节点step2. 签名slk:当前槽H(l-1):sLk前一个区块的哈希d:VRF输出pi:validator Pi的私钥C: 当前出块tx:交易sKjs:节点私钥step3. 其他节点验证块的签名:使用节点公钥验证签名如果验证器是slot leader.借助节点的vrf函数公钥、证明算法验证最新链C’是否包含块B的上一个区块H块B里面的交易验证2. Party原创 2022-01-16 23:45:40 · 1635 阅读 · 0 评论 -
波卡链Substrate (6)Babe协议三“slot leader”
1. 问题:一个槽有多个Validators,谁来出块?2. 解决:每个Validator使用VRF(Verifiable Random Function)函数生成一个伪随机值,如果低于阈值,它就成为slot leader2.1 阈值lvrf是伪随机值的长度eg.2.2 VRF函数Verifiable Random Function输入:过去2个纪元Epoch的随机种子、当前槽数(Slot number)、sk(Secret key)输出:伪随机值、正确的生成证明。...原创 2022-01-07 08:22:04 · 386 阅读 · 0 评论 -
波卡链Substrate (6)Babe协议二“分配slot机制”
1. 问题:哪个槽分配给哪些Validators?2. 解答:分配插槽机制主要插槽领导者是随机分配的。由于有多个validators,需要轮流分配插槽。(循环模式下,攻击者预先知道下一个人是谁,最好是没有人知道,直到他自己证明了这一点)由于该函数是随机的,因此有时会出现没有领导者的插槽。2.1 一个验证者被选中的概率n:验证器的数量0 <= c <= 1,一个常数参数...原创 2021-12-29 07:26:44 · 200 阅读 · 0 评论 -
波卡链Substrate (6)Babe协议一“基本概念”
1. 盲分配Babe协议(Blind Assignment for Blockchain Extension protocol )一种基于槽的算法。将时间分解为多个纪元,每个纪元都被划分为多个槽。每个槽会出一个块在一个纪元开始时,所有验证者都参与抽签以确定他们将为哪个slot生产区块。BABE 将选择一个(或多个)验证者在每个插槽中创建一个块eg. Polkadot 中,每个槽的长度为 6 秒(目标区块时间)...原创 2021-12-24 08:13:28 · 494 阅读 · 0 评论 -
波卡链Substrate (5)托盘Pallets进阶
1. 7 个部分组成:导入和依赖托盘类型的声明运行时配置特性运行时存储运行时事件挂钩外在的Extrinsics2.// 1. Imports and Dependenciespub use pallet::*;#[frame_support::pallet]pub mod pallet { use frame_support::pallet_prelude::*; use frame_system::pallet_prelude::*; // 2. De原创 2021-12-24 08:09:13 · 579 阅读 · 0 评论 -
波卡链Substrate (4)托盘Pallets
1. 定义. 一组模块和支持库. 支持自定义托盘功能 1.1Aura 通过管理线下报告做到共识Babe 手机线上随机性 vrf输出,管理epoch transitionsGRANDPA为本机代码准备的GRANDPA权限集、扩展GRANDPA共识Elections 集体的股权加权成员资格选择Utility 管理助手Atomic Swap 转账Sudo 单个账号的sudo功能Multisig 多签Identity 身份注册Assets资产Collective 身份注册Treas原创 2021-12-22 09:17:41 · 331 阅读 · 0 评论 -
波卡链Substrate (3)SRML框架
1.System Module系统模块提供底层基本的API和工具集,定义了Runtime的核心类型、外部事件等等Runtime Module运行时模块多个托盘小模块Executive Module执行模块充当运行时的业务流程层。将传入的外部调用分派给运行时中的各个模块负责运行时执行。Runtime运行时管理托盘,接受api调用Support Macros支持宏. 帮助开发自定义模块。. 允许开发人员声明自定义存储、具有公共 API 的模块和事件。1.1 Runtime Modu原创 2021-12-17 06:53:34 · 293 阅读 · 0 评论 -
波卡链Substrate (2)系统框架
P2P: libp2p网络协议。NativeRuntime本地节点:节点发现、交易池、区块和交易gossip,共识,返回RPC callStorage存储:RocksDB。RPC(远程过程调用). HTTP 服务器. WebSocket RPC 服务器原创 2021-12-17 06:50:24 · 277 阅读 · 0 评论 -
波卡链Substrate (1)生态介绍
1. 创始人GavinWood(编写以太坊黄皮书,创建以太坊开发语言Solidity)Cosmos项目Jae Kwon2. 经济规模2017年,Polkadot获得价值1.44亿美元的融资2021 年 5 月 12 日. 市场总市值已达 758.1 亿美元. 日小时交易量达 95.7 亿美元左右. 活跃生态项目个数达 84 个. 基于 Substrate 开发项目有 146 个...原创 2021-12-17 06:48:06 · 3114 阅读 · 0 评论 -
波卡链Substrate (6)SubstrateUI界面
波卡支持基于 React 的 Web 界面,带来了预定义的钱包操作、链更新、账户管理和其他操作。完全可定制,可以通过几个步骤添加任何新 UIeg.class BonusSegment extends React.Component { constructor() { super() this.tokenOwner = new Bond } render() { return <Segment style={{ margi.原创 2021-12-14 08:00:54 · 723 阅读 · 0 评论 -
MAP Protocol 协议(2)介绍二
1. 定义针对Dpayment、DEX、DeFi三个应用场景,构建一个具有可互操作性的波卡互链网,通过桥接不同的区块链接入波卡生态,将各链资源及能力整合互链一种多链架构,原生支持多种资产。由一个标准链、一组协同链和一组交互链组成。标准链负责实现跨链共识和交易分配到协同链。a peer-to-peer electronic cash system infrastructure. It aims to achieve blockchain world public chain TPS sharin原创 2021-08-13 23:57:01 · 702 阅读 · 0 评论 -
跨链技术总结
1. 双向挂钩侧链侧链可以转移一些数字资产从父链到侧链。用户可以先使用父链中的锁定交易。来自侧链的任何节点检查是否来自父链的锁定交易通过 SPV 确认。侧链的锁定的交易一旦通过验证,就可以重新出块 。被动写例子,触发条件确认锁定交易已通过锁定周期。2. 闪电网络闪电网络可以将一些 BTC 锁定到由两个所有者创建的链下支付渠道,对于这笔BTC他们可以协商新的分配计划并随时更新。闪电网络可以归类为主动写入。闪电网络将构建两个满足比特币规则的索赔交易。一旦这些两个索赔交易被提交到一个已确认的区原创 2021-08-12 21:42:16 · 530 阅读 · 0 评论 -
MAP Protocol 协议(1)初步介绍
1. 定义一个波卡系的无中继的跨链桥接协议,基于密码学的可信验证,实现对数级空间复杂度的即时链间互操作。基于MAPProtocol设计的波卡跨链桥MAP bridge已经获得了波卡Web3基金会的grant资助1.1 核心模块跨链读取Ultra-Light Verification Protocol (ULVP)跨链写入 MAP FeederP2P节点发现和数据传输的MAP Standardized P2P Stack 2. 技术架构 3. 路线图...原创 2021-08-11 15:01:59 · 979 阅读 · 0 评论 -
Hyperledger Besu(4)身份许可
1. 许可是任何企业区块链框架的关键部分。在对等网络的情况下,需要在节点上强制执行规则,以便可以进行许可。eg,单个不良行为者不会影响网络的决策。正确的规章制度还可以帮助识别不良行为者,并在发现他们进行恶意行为时将其删除.除了节点权限外,还有一个帐户权限选项可以强制执行更多规则和规定。帐户许可可用于强制执行身份要求和入职。它还有助于在执行操作时暂停帐户,将违约合同列入黑名单并限制帐户.1.1 身份许可作用Enforce onboarding or identity requirements原创 2021-08-02 23:47:08 · 232 阅读 · 0 评论 -
Hyperledger Besu(2)隐私
1. 私人交易经理Besu 使用私有事务管理器Tessera来实现隐私。每个 Besu 节点发送或接收私人交易都需要一个关联的 Tessera 节点。私人交易从 Besu 节点传递到关联的 Tessera 节点。Tessera 节点加密并直接分发(即点对点)私人交易给参与交易的 Tessera 节点。默认情况下,隐私网络中的每个参与者都使用自己的 Besu 和 Tessera 节点。多租户允许多个参与者使用同一个 Besu 和 Tessera 节点。1.1 Besu 和 Tesse原创 2021-08-01 16:05:33 · 407 阅读 · 0 评论 -
Hyperledger Besu(3)“多用户架构”和“插件”
1. Multi-tenancy 多用户架构用户有权使用指定的 HTTP 或 Websocket JSON-RPC 请求,并且租户有权访问请求的隐私数据。私有数据是隔离的,每个租户使用 JSON Web 令牌 (JWT) 进行身份验证。2. 插件插件 API 提供对接口的访问,允许您构建插件可以通过构建 Java 插件或使用现有的开源 Besu 插件(例如Quorum 插件)来扩展 Hyperledger Besu 功能。使用插件 API 从任何 Besu 网络(公共或许可)获取数据,并将其提供原创 2021-08-01 15:59:09 · 263 阅读 · 0 评论 -
Hyperledger Besu(1)“系统框架”
1. 定义是一个运行在以太坊公网上的java语言的以太坊客户端,旨在对公共和私有许可网络用例进行企业友好。它也可以在 Rinkeby、Ropsten 和 Görli 等测试网络上运行。1.1 功能在以太坊区块链中处理交易的执行环境用于持久化与事务执行相关的数据的存储点对点 (P2P) 网络,用于与网络上的其他以太坊节点通信以同步状态应用程序开发人员与区块链交互的 API1.2 实现了规范 企业以太坊联盟 EEA(Enterprise Ethereum Alliance) 规范1.3.原创 2021-08-01 15:49:01 · 788 阅读 · 1 评论 -
区块链与边缘计算(3)系统介绍
多种部署模式1. 多边缘服务器+单一工业云平台方案内容:在每个边缘服务器和工业云平台部署区块链共识节点和计算节点,通过分布式计算节点实现多方安全计算,采用共识节点保障实现跨厂区或企业的数据一致性同步。方案重点:实现边缘层数据和工业互联网平台的共享和一致性。2. 多边缘云+多云平台方案内容:在每个工业云平台的边缘云层部署区块链共识节点和计算节点,通过分布式计算节点实现多方安全计算,采用共识节点保障实现跨工业云平台的数据一致性同步。方案目标:实现了不同的工业互联网平台之间的数据共享和一致性。原创 2021-07-31 12:38:13 · 478 阅读 · 0 评论 -
区块链与边缘计算(2)功能介绍
1. 区块链+工业边缘计算场景设备接入、协议解析、边缘数据处理标准化需求;边缘层依托区块链分布式计算协调,多方安全计算和联邦学习能力能提供给机理模型联合训练机制,并通过贡献度量提供模型激励体系;利用区块链分布式数字身份颁发和校验体系可以为边缘层设备和计算提供点对点数据加解密功能;通过区块链节点协同和状态一致性同步能力可以低成本实现边缘计算的高可用和生产调度协同功能。2. 建立个人、设备、边缘计算中心分布式数字身份认证和自助加密认证机制将边缘计算中心作为工业企业人和设备接入的认证和安全校验节原创 2021-07-31 12:22:39 · 1044 阅读 · 0 评论 -
区块链与边缘计算(1)基本概念
1. 边缘计算将云端计算转移到 靠近端这头(边)2. 目前问题数据孤岛:工业企业出于自身数据、生产线安全和商业机密考虑,还是将很多核心数据保留在本地服务器或者边缘层,并未上传到工业互联网平台层和IaaS层大量企业分散的边缘计算设备如:DCS/PLC、网关、I/O模块、边缘服务器、微数据中心中能力并没有得到有效的治理和优化,没有实时应用。3. 区块链解决方案利用区块链分布式数字身份认证和开放的数据安全管理技术,实现工业互联网在边缘计算下的数据共享和数据安全保护问题;利用分布式安全原创 2021-07-31 10:20:18 · 1211 阅读 · 0 评论 -
Developing a blockchain framework for the automotive supply chain: A systematic review 汽车供应链区块链
1. 研究探索了如何将供应链可见性、信息透明度与 BCT 联系起来1.1 典型的 ASC2. 业务流程基于Hyperledger Fabric针对关键挑战创建智能合约,构建数据驱动的决策生态系统2.1 区块链预言机3. 框架参考https://www.sciencedirect.com/science/article/pii/S0360835221002382...原创 2021-07-28 09:42:42 · 228 阅读 · 0 评论 -
Blockchain-Based Flexible Double-Chain Architecture and Performance Optimization for Better Sustaina
Blockchain-Based Flexible Double-Chain Architecture and Performance Optimization for Better Sustaina 基于区块链的灵活双链架构和性能优化,以实现更好的农业可持续性系统框架区块链和物联网技术的区块链框架。考虑到交易数据和物联网数据的异构性、可持续性信息的公开性和参与者数据的敏感性,提出了包括共识方法、交易机制、可持续性评估方法和性能优化策略的双链结构. 将所有参与者的可持续管理实践引入区块链网原创 2021-07-26 10:30:02 · 560 阅读 · 1 评论
分享