区块链知识系列
文章平均质量分 83
区块链相关的各类知识
搬砖魁首
区块链从入门到宁静
展开
-
BTC系列-系统学习铭文(二)-序数理论
序数是一种比特币的编号方案,允许跟踪和转移单个聪。这些数字被称作序号。比特币是按照它们被挖掘的顺序编号的,并从交易输入转移到交易输出(遵循先进先出原则)。编号方案和传输方案都依赖于_顺序_,编号方案依赖于比特币被挖掘的_顺序_,而传输方案依赖于交易输入和输出的_顺序_。因此得名,序数(Ordinals)。原创 2024-05-25 12:29:40 · 725 阅读 · 1 评论 -
BTC系列-系统学习铭文(一)-比特币上的NFT
它支持任意数据传输,并具有折扣的“块权重”,巧妙地将大量数据保留在比特币的块大小限制内,以避免硬分叉的需要。在此过程中,Taproot 创建了一个更简单的系统来存储任意见证数据,并放宽了对比特币交易中可以放置多少任意数据的限制。Ordinals NFTs 是基于以下两项比特币上的技术得以实现的: 2017年的隔离见证 (SegWit) 和 2021年的Taproot。由于数据要求放宽,假设单笔交易可以用其交易和见证数据填充整个区块,最高可达 4MB 的区块大小限制,从而极大地扩展了可以放在链上的媒体类型。原创 2024-02-22 00:17:59 · 1524 阅读 · 9 评论 -
区块链知识系列 - 系统学习EVM(四)-zkEVM
rollup顾名思义,就是把一堆交易卷(rollup)起来变成一个rollup交易,所有节点接收到这个rollup交易之后,不去执行被卷起来的逻辑,而只去接受这些逻辑的执行结果。因此这个rollup交易所需要的gas会远小于执行这些交易的gas。StarkNet这是 StarkWare 对 StarkNet 采用的方法,这是目前最先进的通用 Rollup。zkSync。原创 2023-02-16 00:02:51 · 1606 阅读 · 1 评论 -
区块链知识系列 - 系统学习EVM(三)-预编译合约
预编译合约是 EVM 中用于提供更复杂库函数(通常用于加密、散列等复杂操作)的一种折衷方法,这些函数不适合编写操作码。它们适用于简单但经常调用的合约,或逻辑上固定但计算量很大的合约。预编译合约是在使用节点客户端代码实现的,因为它们不需要 EVM,所以运行速度很快。由于 EVM 是一个基于堆栈的虚拟机,它根据交易所要执行的操作指令内容来计算 gas 消耗,如果计算非常复杂,在 EVM 中执行相关操作指令就会非常低效,而且会消耗大量的 gas。在 EVM 中执行这些操作是非常复杂和不现实的。原创 2023-02-10 00:05:07 · 746 阅读 · 1 评论 -
区块链知识系列 - 系统学习EVM(二)-存储与安全
特点EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数。不支持浮点数缺乏标准库支持,例如字符串拼接、切割、查找等等都需要开发者自己实现给合约打补丁或是部分升级合约代码在EVM中是完全不可能的存储Codecode 部署合约时储存 data 字段也就是合约内容的空间,即专门存储智能合约的二进制源码的空间StorageStorage 是一个可以读写修改的持久存储的空间,也是每个合约持久化存储数据的地方。Storage 是一个巨大的 map,一共 22562^{256}22原创 2023-01-30 19:18:03 · 3614 阅读 · 5 评论 -
区块链知识系列 - 系统学习EVM(一)-架构与执行流程
EVM有一个基于栈的架构,在一个栈中保存了所有内存数值。EVM的数据处理单位被定义为256位的“字”(这里所说的内存数值是指那些EVM字节码运行所需要的输入、输出参数数据和智能合约程序运行中所需要的局部变量等数据,而不是指下文中所提到的“内存”数据;下文中的“内存”是一个与栈共同存在的、独立的临时存储空间。以太坊虚拟机(EVM)的架构和执行上下文。原创 2023-01-17 13:51:21 · 3793 阅读 · 1 评论 -
区块链知识系列 - Oracle预言机
Oracle 预言机区块链外信息写入区块链内的机制,一般被称为预言机(oracle mechanism)。借助预言机外界的数据得以灌入链内, 使得DApp的玩法更多样. 比如DApp倚重的随机数, 可以考虑让一个硬件产生真随机数, 通过Oracle,定时灌入, 这将更公正和安全1 为什么需要预言机所有节点同一个事务中智能合约运行的结果必须一致智能合约不应该发起网络调用由于区块链的共识模式,智能合约只可以从内部调取数据,而不能直接从区块链外部(链下)获取信息。2 应用场景游戏/预测:获取原创 2023-01-02 01:12:26 · 1849 阅读 · 1 评论 -
以太坊系列 - Web3.js
Web3.jsweb3.js是一组用来和本地或远程以太坊节点进行交互的js库,它可以使用HTTP或IPC建立与以太坊节点旳连接。底层实现上,它通过RPC 调用与本地或远程节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。Installationnpm install web3Usage// In Node.jsconst Web3 = require('web3');let web3 = new Web3('ws://localhost:8546');console.原创 2021-08-30 15:32:02 · 2151 阅读 · 2 评论 -
IPFS系列 - 介绍
IPFS - 可快速索引的版本化点对点文件系统IPFS星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备。在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集, 用git 仓库分布式存储。换句话说, IPFS 提供了高吞吐量的内容寻址块存储模型, 具有内容寻址的超链接。这形成了一个广义的Merkle DAG 数据结构,可以用这个数据结构构建版本文件系统,区块链,甚至是永久性网站。IPFS 结合了分布式哈希表, 带有激原创 2021-08-02 12:04:45 · 645 阅读 · 2 评论 -
区块链知识系列 - 布隆过滤器
布隆过滤器(Bloom)是一种可以判断某个数据是否存在的数据结构,或者也可以说是判断集合中是否包含某个成员的数据结构。布隆过滤器的特点如下:判断时间与数据个数无关(O(1))空间效率非常好无法删除元素偶尔会出错(! )“偶尔会出错”这一条貌似违背了我们关于数据结构的常识,不过面对大量数据时,我们的目的是缩小查找的范围,因此大多数情况下,少量的误判并不会产生什么问题。此外,布隆过滤器的误判都是假阳性(false positive),也就是说只会将不属于该集合的元素判断为属于该集合,而不会产生假原创 2021-05-14 10:51:50 · 2221 阅读 · 7 评论 -
IPFS系列 - IPFS与区块链结合
IPFS 是一种去中心化的文件存储协议,基于该协议可以通过去中心化的方式实现一个文件存储网络。与EOS结合根据EOS白皮书的介绍,EOS将来会内置一个IPFS标准的文件系统。IPFS与EOS的结合可以实现很多有用的应用场景,下面分别进行介绍。1.区块数据存储EOS的交易量非常大,而且0.5s会产生一个区块的数据。如果所有数据全部记录在主链上,那么将会产生非常巨大的数据量。通过IPFS可以极大地降低主链本身的数据存储成本。2.前端页面存储DApp在用户访问前端时需要静态的页面分发服务,比如在以太坊原创 2021-04-07 13:09:54 · 3012 阅读 · 5 评论 -
区块链知识系列 - Algorand的BA*共识
BA* 算法BA*,是 PBFT 算法的改进。BA* 算法分为三阶段:区块生成、GC 和 BBA*。算法的停止时间是不确定的,但大概率保证在有限步内结束。BA*由三个部分组成生成区块(s=1,即第一步):所有节点检查自己是不是potential leader,如果是,则生成区块并广播GC协议(2≤s≤3):有点像PBFT的后两个阶段,verifier 会生成1个二进制值BBA(s≥4):BBA共识的修改版。每次 BBA都由3步组成,会不断地循环。什么时候结束是不确定的,依概率结束。BA*将原创 2021-03-04 10:28:22 · 975 阅读 · 1 评论 -
EOS系列 - 内存映射文件数据库 - chainbase
ChainBase-快速版本控制的事务性数据库特征支持具有多个索引的多个对象(表) (基于boost :: multi_index_container)状态在多个过程之间是持久且可共享的具有撤销更改功能的嵌套事务写入并发访问默认情况下,ChainBase不提供任何同步,并具有与任何boost :: multi_index_container相同的并发限制。这意味着两个或多个线程可以同时读取数据库,但是所有写操作必须由互斥锁保护。如果注意在数据库上使用进程间锁定,则多个进程可能会打开同一数据原创 2021-01-27 11:12:35 · 954 阅读 · 1 评论 -
BTC系列 - UTXO事务模型
Bitcoin 采用了 UTXO 模型作为其底层存储的数据结构,其全称为 Unspent Transaction output,也就是未被使用的事务输出。原创 2021-01-13 10:45:24 · 2641 阅读 · 9 评论 -
公链分析报告 - Fabric
Fabric v0.6版本与v1.x版本 架构差异很大,故分两个版本讲Fabric v0.6版本在Fabric v0.6中采用的共识算法是PBFT算法(Practical Byzantine Fault Tolerance),可以在信任程度较低的场景下避免拜占庭问题。但是由于算法本身特性限制,n>=3f+1,才能容忍一个拜占庭节点,因此在v0.6版本下,vp节点数量至少是4个。在v0.6版本中,节点角色分为VP(Validating Peer)、NVP(None validating Peer.原创 2020-12-23 11:11:56 · 749 阅读 · 3 评论 -
区块链知识系列 - PBFT 共识
了解 BFT拜占庭容错(Byzantine Fault Tolerance), 是算法的属性共识协议要解决的核心问题是在网络中有节点作恶时如何能够达成共识。要解决这个困难,首先需要了解“拜占庭将军问题”。 1982 年, Leslie Lamport、Robert Shostak 和 Marshall Pease 发表论文《拜占庭将军问题》 [23] ,提出一项思维实验:假设一组将军分别统领拜占庭军队的一部分,共同围困一座城市。这些将军只能通过信使将自己的策略相互传递。但是,这组将军中有一人或多人可原创 2020-12-17 17:44:00 · 3140 阅读 · 1 评论 -
IPFS系列 - 默克有向无环图(Merkle DAG)
Merkle DAG的全称是Merkle Directed Acyclic Graph(默克有向无环图)。它是在Merkle Tree的基础上构建的,Merkle Tree由美国计算机学家Merkle于1979年申请了专利。Merkle DAG跟 Merkle TreeMerkle DAG跟Merkle Tree很相似,但不完全一样,Merkle DAG不需要进行树的平衡操作,非叶子节点允许包含数据等。ipfs add命令将从指定的文件中的数据中创建Merkle DAG。遵循unixfs数据格式(pro原创 2020-12-10 15:14:48 · 1921 阅读 · 1 评论 -
区块链知识系列 - DAG的应用场景
IOTA有什么好处?IOTA是一种开源技术,可以简化,保护和自动化在不同设备之间发送数据或传输价值的任何流程。是什么让IOTA令牌变得有价值?它是有限的:所有节点都同意网络中存在最多2,779,530,283 277,761个令牌。此最大数量内置于网络中,无法更改。它很有用:要在IOTA网络中传输值,您必须使用IOTA令牌。安全IOTA使用量子抗性密码术来保护网络并防止攻击者窃取IOTA令牌。IOTA网络是点对点网络。没有中央权限控制事务的分类帐,而是所有节点都持有副本并通过IOTA协议原创 2020-11-26 01:59:27 · 1105 阅读 · 1 评论 -
区块链知识系列 - 区块链大事记
区块链大事记2008年11月1日,中本聪发布了比特币白皮书《比特币:一种点对点的电子支付系统》,比特币就此问世。2009 年1 月3 日, 比特币诞生, 中本聪本人挖出第一个块,首批50 个比特币。2010 年5 月21 日, 一名佛罗里达程序员用1 万比特币购买了价值25 美元的披萨优惠券。2010年7月, BM就在Bitcointalk上对中本聪大神指出,比特币10分钟一次的交易确认时间显得太长了,需要做到像刷信用卡那么快。而中本聪则霸气十足的说了那句名言:看不懂就算了,我没时间搭理你,不好.原创 2020-11-19 00:45:20 · 1146 阅读 · 4 评论 -
区块链知识系列 - DAG
什么是DAG,及它的起源DAG(Directed Acyclic Map),即有向无环图.有向:所有数据顺着同一方向存储无环:数据结构间不构成循环enter image description hereDAG的出现是为解决区块链的效率 确定性 中心化 能耗等问题.区块链是链式存储结构,无法并发出块.类似于单核单线程CPU.区块DAG中没有区块,交易发起后直接跳过打包区块阶段,异步并发融入全网.类似于多核多线程CPU.行业介绍 - 各DAG链的特点行业背景IOTAIOTA上的交易是原创 2020-11-05 12:02:41 · 2112 阅读 · 1 评论 -
联盟链系列 - Https双向验证
boost 实现双向认证解决办法boost::asio::ssl::context要与OpenSSL进行相互认证,必须在客户端使用SSL_VERIFY_PEER在服务器端使用SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT。如果仅在服务器端使用SSL_VERIFY_PEER,则它将仅将证书请求发送给客户端,但是如果客户端未发回证书,则将静默接受。ctx.set_verify_mode(ssl::verify_peer); // client sid原创 2020-10-24 23:15:18 · 1781 阅读 · 1 评论 -
EOS系列 - 源码分析 - P2P网络模块
EOS P2P 网络模块P2P - GossipGossip算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致,这充分说明了Gossip的特点:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节点可以通过网络连...原创 2020-01-31 12:10:58 · 1611 阅读 · 1 评论 -
区块链知识系列 - DPoS+Pipelined BFT共识机制
EOS 目前采用DPoS+Pipelined BFT 共识机制。DPoS共识 - 如何成为出块节点DPoS(Delegated Proof of Stake)是权益委托证明机制。相比于比特币的PoW机制,DPoS不用浪费算力资源争夺记账权,而是通过赋予通证持有人投票权,EOS 将投票选出21个“超级节点”来担任记账人(Block Producer:区块生产者简称BP)的角色,保证整个网络的正常运行。出块机制每0.5秒生产一个区块。超级节点轮流出块,每轮每个超级节点连续出12个块。以 21*12 .原创 2020-09-22 13:58:04 · 1470 阅读 · 1 评论 -
区块链知识系列 - Raft 共识
Raft算法由斯坦福大学的Diego Ongaro和John Ousterhout于2014年在论文《In Search of anUnderstandable Consensus Algorithm》中提出。Raft算法面向对多个决策达成一致的问题,分解了Leader选举、日志复制和安全方面的考虑,并通过约束减少了不确定性的状态空间。典型的过程包括以下两个主要阶段:Leader选举:开始所有节点都是Follower,在随机超时发生后未收到来自Leader或Candidate消息,则转变角色为Cand原创 2020-09-15 11:20:07 · 3255 阅读 · 1 评论 -
Filecoin系列 - Filecoin与云存储
Filecoin结合了其他文件存储和分发系统的许多元素。原创 2020-08-18 09:35:12 · 1338 阅读 · 2 评论 -
联盟链系列 - 证书 - 公钥基础结构(PKI)
PKI公钥基础结构(PKI)是用于创建,存储和分发数字证书的系统,这些证书用于验证特定公钥是否属于某个实体。PKI创建将公共密钥映射到实体的数字证书,将这些证书安全地存储在中央存储库中,并在需要时将其吊销。一个 public key infrastructure(PKI)是一组角色,策略,硬件,软件和创建,管理,分发所需的程序,使用,储存和吊销数字证书和管理公共密钥加密。PKI至少包括如下核心组件:CA(Certification Authority):负责证书的颁发和作废,接收来自RA的请求,是原创 2020-08-10 11:30:17 · 1840 阅读 · 1 评论 -
联盟链系列 - 联盟许可链开发框架
对于许可链,三种区块链协议已成为首选:Hyperledger Fabric,Enterprise Ethereum和R3 Corda。Fabric和企业以太坊都是任何行业的通用工具,而Corda是为金融行业定制设计的。每个协议选项都有非常不同的沿袭和设计重点,并且这三个协议都已被当今运行于生产质量系统上的严肃的企业和政府广泛采用。Enterprise EthereumFabricCorda节点许可基于智能合约的规则,将基于文件的每个节点的规则作为本地替代。可在节点,通道和联盟级别上配置原创 2020-06-24 12:54:34 · 2061 阅读 · 1 评论 -
联盟链系列 - 公链与联盟链的区别
联盟链联盟链底层平台的核心是: 性能,可用性和安全隐私(可监管)联盟自治成员管理系统升级合约升级知名项目eosfabricFISCO BCOSfabricfabric是注册的组织节点可以写, 是否任何人都可以读数据?公链 VS 联盟链公链联盟链网络准入门槛所有人可加入网络预先设定或满足条件后加入网络注重激励,包括出块奖励一般不会...原创 2019-11-21 01:35:23 · 3152 阅读 · 1 评论 -
密码学系列 - 椭圆曲线 ECDSA - 签名与验签
数字签名的生成数字签名的验证公钥恢复原创 2020-01-06 15:14:51 · 4828 阅读 · 5 评论 -
公链分析报告 - 区块链生态系统内的开发工具
Ethereum, EOS和蚂蚁金服区块链就开发者工具方面的对比Ethereum(公链)EOS(公链)蚂蚁金服(联盟链)Smart Contract开发语言SolidityC++Solidity and C++Compiler (编译器)SolcEosio-cppSolc or Eosio-cpp网页版IDERemixEOS Stu...原创 2020-06-08 12:12:10 · 985 阅读 · 1 评论 -
IPFS系列 - 分布式哈希表(DHT)
分布式账本技术(DLT)的分支有向无环图(DAG)哈希图(Hashgraph)分布式散列表(DHT)区块链(Blockchain)DHTDHT的全称是Distributed Hash Table,即分布式哈希表技术,是一种分布式的存储方法。这种分布式网络不需要中心节点服务器,而是每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。DHT网络还在于关键字最接近的节点上复制备份冗余信息,避免了单一节点失效问题。简单地说,DHT就是一种分布式的存储和寻址技原创 2020-05-18 10:36:09 · 5162 阅读 · 1 评论 -
区块链知识系列 - HotStuff 共识
共识协议 HotStuff 由 VMware Research 等团队于2018年3月提出,其预印版经过五轮迭代修改,并将于并行与分布计算领域著名的国际会议 PODC 2019上正式发表。HotStuff 是一个基于主节点(Leader)的拜占庭容错共识协议共识协议的目标是在去中心化的网络中就系统的状态达成统一的认识,以便所有的(诚实)节点统一从一个状态迁移到另一个状态。PBFT 采用...原创 2020-05-04 00:21:17 · 5455 阅读 · 1 评论 -
BTC系列 - Fork BTC
Fork BTC原创 2019-06-21 10:20:22 · 3073 阅读 · 2 评论 -
BTC系列 - 闪电网络(Lighting Network)
在之前硅谷密探介绍公链的文章中,已经提到了闪电网络这个侧链项目原创 2020-04-28 00:42:31 · 1638 阅读 · 2 评论 -
区块链知识系列 - BTC侧链 - Liquid
BTC侧链原创 2019-06-13 14:13:25 · 1006 阅读 · 1 评论 -
区块链知识系列 - HD Wallet 分层确定性wallet
HD Wallet原创 2019-12-04 11:07:20 · 1171 阅读 · 0 评论 -
区块链知识系列 - 比较PoW, PoS和DPoS共识
共识 - PoW PoS DPoS分布式系统与共识高可用方案 (主备切换)唯一订单号|id方案 (redis原子递增与guid)Memcached集群与一致性哈希 (根据key的哈希值确定数据在环上的位置)可信的,可以借助观察者和组件解决容错与一致性区块链网络不可信需要用去中心化的链内治理方法激励与惩罚机制从矿工|节点角度看共识的作用域组装新区块(区块头与交易列表)...原创 2019-05-31 14:57:28 · 1680 阅读 · 0 评论 -
区块链知识系列 - App 与 DApp 的区别
APP 与 DAPP 的差异原创 2019-11-16 17:01:06 · 1645 阅读 · 3 评论 -
区块链知识系列 - BTC和ETH的区别
区块信息原创 2020-02-18 23:11:49 · 2422 阅读 · 1 评论 -
密码学系列 - 椭圆曲线 ECC - ED25519
密码学 - 椭圆曲线椭圆曲线是一系列满足如下方程的点:y^2 = x^3 + ax + b并且4a^3 + 27b^2 != 0特性封闭性:因为椭圆曲线上的点相加,还是椭圆曲线上的点。结合律:P+(Q+R) = (P+Q)+R = 0单位元: 单位元是0, 即 P+0 = P逆元: 一个椭圆曲线上的点P的逆元,是相对x坐标的对称点交换律:P+Q = Q+P标量乘法n...原创 2020-03-02 22:24:21 · 10125 阅读 · 4 评论