一、什么是utxo区块链
区块链的核心技术是什么?
简单来说,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。
或许以上概念过于抽象,我来举个例子,你就好理解了。
你可以想象有100台计算机分布在世界各地,这100台机器之间的网络是广域网,并且,这100台机器的拥有者互相不信任。
那么,我们采用什么样的算法(共识机制)才能够为它提供一个可信任的环境,并且使得:
节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;
每个节点的数据会同步到最新数据,并且会验证最新数据的有效性;
基于少数服从多数的原则,整体节点维护的数据可以客观反映交换历史。
区块链就是为了解决上述问题而产生的技术方案。
二、区块链的核心技术组成
无论是公链还是联盟链,至少需要四个模块组成:P2P网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。
1、P2P网络协议
P2P网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播、节点发现和维护。
通常我们所用的都是比特币P2P网络协议模块,它遵循一定的交互原则。比如:初次连接到其他节点会被要求按照握手协议来确认状态,在握手之后开始请求Peer节点的地址数据以及区块数据。
这套P2P交互协议也具有自己的指令集合,指令体现在在消息头(MessageHeader)的命令(command)域中,这些命令为上层提供了节点发现、节点获取、区块头获取、区块获取等功能,这些功能都是非常底层、非常基础的功能。如果你想要深入了解,可以参考比特币开发者指南中的PeerDiscovery的章节。
2、分布式一致性算法
在经典分布式计算领域,我们有Raft和Paxos算法家族代表的非拜占庭容错算法,以及具有拜占庭容错特性的PBFT共识算法。
如果从技术演化的角度来看,我们可以得出一个图,其中,区块链技术把原来的分布式算法进行了经济学上的拓展。
在图中我们可以看到,计算机应用在最开始多为单点应用,高可用方便采用的是冷灾备,后来发展到异地多活,这些异地多活可能采用的是负载均衡和路由技术,随着分布式系统技术的发展,我们过渡到了Paxos和Raft为主的分布式系统。
而在区块链领域,多采用PoW工作量证明算法、PoS权益证明算法,以及DPoS代理权益证明算法,以上三种是业界主流的共识算法,这些算法与经典分布式一致性算法不同的是,它们融入了经济学博弈的概念,下面我分别简单介绍这三种共识算法。
PoW:通常是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能获得记账权(出块)权利。这个求解过程往往会转换成计算问题,所以在比拼速度的情况下,也就变成了谁的计算方法更优,以及谁的设备性能更好。
PoS:这是一种股权证明机制,它的基本概念是你产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例,它实现的核心思路是:使用你所锁定代币的币龄(CoinAge)以及一个小的工作量证明,去计算一个目标值,当满足目标值时,你将可能获取记账权。
DPoS:简单来理解就是将PoS共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账。这个圈子可能是21个节点,也有可能是101个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将会极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。
3、加密签名算法
在区块链领域,应用得最多的是哈希算法。哈希算法具有抗碰撞性、原像不可逆、难题友好性等特征。
其中,难题友好性正是众多PoW币种赖以存在的基础,在比特币中,SHA256算法被用作工作量证明的计算方法,也就是我们所说的挖矿算法。
而在莱特币身上,我们也会看到Scrypt算法,该算法与SHA256不同的是,需要大内存支持。而在其他一些币种身上,我们也能看到基于SHA3算法的挖矿算法。以太坊使用了Dagger-Hashimoto算法的改良版本,并命名为Ethash,这是一个IO难解性的算法。
当然,除了挖矿算法,我们还会使用到RIPEMD160算法,主要用于生成地址,众多的比特币衍生代码中,绝大部分都采用了比特币的地址设计。
除了地址,我们还会使用到最核心的,也是区块链Token系统的基石:公私钥密码算法。
在比特币大类的代码中,基本上使用的都是ECDSA。ECDSA是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC(椭圆曲线函数)。
从技术上看,我们先从生成私钥开始,其次从私钥生成公钥,最后从公钥生成地址,以上每一步都是不可逆过程,也就是说无法从地址推导出公钥,从公钥推导到私钥。
4、账户与交易模型
从一开始的定义我们知道,仅从技术角度可以认为区块链是一种分布式数据库,那么,多数区块链到底使用了什么类型的数据库呢?
我在设计元界区块链时,参考了多种数据库,有NoSQL的BerkelyDB、LevelDB,也有一些币种采用基于SQL的SQLite。这些作为底层的存储设施,多以轻量级嵌入式数据库为主,由于并不涉及区块链的账本特性,这些存储技术与其他场合下的使用并没有什么不同。
区块链的账本特性,通常分为UTXO结构以及基于Accout-Balance结构的账本结构,我们也称为账本模型。UTXO是“unspenttransactioninput/output”的缩写,翻译过来就是指“未花费的交易输入输出”。
这个区块链中Token转移的一种记账模式,每次转移均以输入输出的形式出现;而在Balance结构中,是没有这个模式的。
数字货币里的UTXO什么意思?
UTXO的中文意思叫作:未花费的交易输出。
UTXO是数字货币中的账户模型,这个模型和我们现在银行的账户模型是不一样的。
拿转账来说,现在的情况是:
我要给依依转2000块钱,我要从我的招商银行卡里面给她转账,我的卡里面有5000块钱,转给她2000块钱以后,我的招商银行账户就被扣除了2000块钱,还剩下3000块钱。
那么如果是基于比特币的UTXO,情况是这样的:
我有5000比特币,我给依依转2000比特币,2000比特币消耗掉了对不对?注意!这2000不是从我这5000总数里面扣除的,而是:我的比特币总额会分成两份(一份
2000,一份3000),这就是所谓“生成两个新的UTXO”:依依收下2000比特币,我自己收下3000比特币,3000算是给我的找零。
转账成功以后,我给依依的2000比特币目前已经使用过了,被消耗掉了,就不能再叫UTXO了,而找零给我的3000比特币目前我还没有使用,所以它还能称作UTXO,也就是未花费的交易输出。那么,如果我总共有5000比特币,我全部转给依依,那么就只需要生成一个新的
UTXO给依依就可以了,不需要找零了。
基于UTXO,每笔交易出现,都要确认比特币之前的情况,检验比特币是不是存在于我的UTXO中,如果不存在,那么系统就会拒绝你的交易行为。
这样一来,每笔交易的输入和输出都是有关系的,可以通过UTXO不断向前追溯,一直追溯到比特币诞生的时候,也就是挖矿的源头。
如果我想用同一笔UTXO发送给两个人,那么系统只确认先接受到的那一笔,一旦确认UTXO已经被消耗了,那么你就不可以再把它转给下一个人,这样就避免了双重支付的问题。
既然系统只确认先接受到的那一笔,那么问题来了,系统怎么知道谁先谁后呢?系统当然知道,因为系统有一个叫“时间戳”的东西。
什么是区块链?不是比特币进化慢,而是我们进化慢
自从区块链(blockchain)这个词被从比特币中抽象出来之后,整个业内就弥漫着一种奇特的意识形态叙事(ideologicalnarrative)。这个叙事是这样的:比特币是一架又慢又旧的破马车,十几年了没有什么改进,什么炫酷的功能都没有。当然,从人类“无利不起早”的天然本性而言,给你讲这么一通破烂话的人,绝对不是吃饱了撑的无事生非,而通常都会在看到你对手里的大饼(BTC)起了半信半疑之心之后,趁机向你推销他正在兜售的拉风跑车项目。
北京时间11月14号下午13点15分27秒,随着区块高度709632的区块被挖出,比特币自2017年隔离见证升级之后最重要的升级之一,Taproot升级,宣告成功激活(今年6月份就已经获得超90%矿工投票lock-in了,本次激活属于明牌)。
该区块中包含了chainside联合创始人FedericoTenga的一笔V1_P2TR交易。在该笔交易中,Federico在OP_RETURNDATA中附加了一句话:gmtaproot。据信,这是历史上第一笔Taproot交易。为了抢到这个名次,Federico支付了2510sat/vB的矿工费(手续费),这大概是正常矿工费(不到10sat/vB)的5百多倍。[1]
Taproot升级为我们带来了区块扩容、更好的隐私性以及增强的扩展性等诸多好处。这些好处主要是由于两项技术的引入而带来的。其一就是Schnorr签名,而另一个就是MAST(默克尔化的抽象语法树)。
Schnorr签名能够压缩数字签名的尺寸。单签名比ECDSA节省约12%的尺寸,也就可以节省转账手续费。以及,它能够把多签名压缩成一个签名,这可以极大压缩多签地址的尺寸,并保护多签参与者的隐私。据说早在2012年MikeHearn就在bitcointalk论坛提出过类似想法。通过压缩签名尺寸,相当于扩大了区块容量,容纳更多交易量。
MAST则可以大大改善P2SH交易的交易尺寸、隐私性和灵活性。最早的BIP-114提案是由JohnsonLau于2016年提出的。早前的P2SH交易可以允许支付时不揭示script(比特币脚本代码)。但是,当花费UTXO(未花费的交易输出)时,便需要提供script且记录到链上,从而占据区块链的容量。如果script比较复杂,则会占据较多的空间。MAST的引入使得我们可以把包含很多条件的复杂脚本组织成默克尔树。在花费UTXO时,也只需要揭示默克尔证明和涉及的script,而不需要揭示整颗树。这就节省了区块容量,改善了脚本的隐私性。同时,由于打开了script尺寸的限制,这就为比特币的可编程性引入了更大的扩展性和灵活性。
应该说,上面几段话对一些只在中心化交易所炒炒币,甚至连私钥都不懂的朋友来说无异于天书。别说Taproot了,便是4年前的segwit(隔离见证),对很多所谓圈内的人来说都不知何物。这没有什么可耻的。我头一次看这些新技术、新名词也是脑袋爆炸。多学习,多研究,多琢磨琢磨,也就搞明白了。
相比于科技的进步,我们掌握知识的能力进化的实在是太慢了。时至今日,很多人还搞不清楚比特币究竟是存储在自己手机上的钱包里,还是在比特币网络上。自己手机或者电脑上的钱包软件又是起什么作用的。私钥是什么,助记词是什么,所谓的HD钱包又是什么。1开头的地址,3开头的地址,5开头的地址,bc1开头的地址都有啥分别。怎么把大饼从交易所提出来,放到所谓链上。怎么自己掌控自己的比特币。怎么签名转账比特币。怎么使用隔离见证地址。以及现在,如何构建Taproot交易呢?
有人于是说,那就不要让用户自己掌握私钥,远离这些技术细节好了。回到托管式的环境,回到互联网中心化的用户体验。这样一种用户体验的改善,就像中心化交易所一样,是以牺牲用户自主掌握资产为代价的。这直接抛弃了去中心化以来全部的价值观。这又是一种进化,还是一种退化呢?
如果只是为了发明一个噱头,让投机者去炒、去赌,那就尽可以不考虑这些。那就不仅不应该限制OP_RETURN的尺寸,甚至应该扩充script使之支持图灵完备的编程。这样就可以在比特币上发行各种空气币、土狗币,再搞出来各种为炒而生的应用出来,所谓繁荣的生态。但是比特币一路走来,似乎是走了相反的道路。不仅从一开始就极大限制了script的功能,而且主动缩短了OP_RETURN的数据尺寸,限制了在比特币链上玩各种花活儿的可能性。
比特币是审慎的。它清楚自己有更大的使命。Taproot的激活,可能会有利于二层的发展。但是,并不会给一层带来自限性的问题。相反的,它会因为压缩了数据尺寸,而扩大了一层的容量。
比特币是富有耐心的。它肩负着普及去中心化数字货币(而不是在中心化平台上进行投机)的历史任务。所以它必须耐心地等待,等待每一个人跟上技术发展的脚步。
UXTO与余额
区块链入门从使用钱包开始,我们最关注的是钱包的账户余额。可看过很多区块链资料以后,一直存在一个疑问,钱包的余额信息存在区块链的什么位置?一直没有找到,只有一个相近的概念叫UTXO(UnspentTransactionOutput),但看完以后还是对应不上。直到翻遍网上所有关于UXTO的资料,才知道在中本聪设计的比特币系统中,并没有余额这个概念,“比特币余额”是由比特币等钱包应用派生出来的产物。钱包的余额是通过与账户相关的多个UXTO算出来的。下面且听我详细道来。
了解过一点点会计学,我们现在的会计系统绝大部分采用的是一种叫做“借贷记账法”的方法,账目分成借方和贷方,每发生一笔业务都要登记两个以上的科目。
简单来说,Alice转账给Bob1美元,使用借贷记账法至少要产生两条账目,Alice账户减少1美元,Bob账户增加1美元。这种记账法在企业经营、企业审计中有无数的好处。但是这种记账法也有一个最大的缺点,就是容易产生记账错误和记账误差。一笔交易需要登记两条以上的账目,本质上记录的是“交易的结果”,而不是“交易本身”。
中本聪发明了UTXO(UnspentTransactionOutput)交易模型,并将其应用到比特币当中。UTXO是“未花费的交易输出”,简单来说就是,每一笔比特币交易实际上都是由若干个交易输入和输出组成的。交易输入是资金来源,交易输出是资金去向,每一笔交易都要从交易输入中花费出去一部分,这一部分就是未花费的交易输出(UTXO)。每一次的交易输入都可以追溯到之前的UTXO,直至最初的挖矿所得。
由挖矿所得创建的比特币交易,是每个区块中的首个交易,又称之为coinbase交易,它由矿工创建,没有上一笔交易输出。
在比特币交易中UTXO就是基本单位,一个UTXO一旦被创建就不可被继续分割,它只能当作是下一笔交易的输入被花费掉,花费后产生新的UTXO,这样周而复始地实现货币的价值转移。所以我们在比特币钱包中所看到的账户余额,实际上是钱包通过扫描区块链并聚合所有属于该用户的UTXO计算得来的。
因此,当我们在说某人拥有1枚比特币的时候,我们实际上说的是,在当前的区块链记录中,有若干笔交易的UTXO收款地址写的是这个人的钱包地址,这些UTXO的总和是1个比特币。
比特币的UXTO系统遵守两个规则:
我们以以太账户为例,打开etherscan.io,选择BLOCKCHAIN-AllAccounts,这样可以看到所有地址与余额,可以选择其中一个查看详细信息。如果看不懂,没关系,把自己的以太地址输入到右上角的搜索框回车后,会显示地址的余额和详细交易记录,如下图。
至此,我能理解李笑来老师说为什么他的账户没有余额,只有UXTO了,O(∩_∩)O哈哈~,内行人不要说外行话嘛。
二、区块链怎么变硬核(区块链怎么才能赚到钱)
什么是区块链最核心的内容
区块链最核心的内容是合约层
1、去中心化
这是区块链颠覆性特点,不存在任何中心机构和中心服务器,所有交易都发生在每个人电脑或手机上安装的客户端应用程序中。
实现点对点直接交互,既节约资源,使交易自主化、简易化,又排除被中心化代理控制的风险。
2、开放性
区块链可以理解为一种公共记账的技术方案,系统是完全开放透明的,
账簿对所有人公开,实现数据共享,任何人都可以查账。
区块链是透明共享的总帐本,这帐本在全网公开,你拿到它的公钥,你就知道它帐里面到底是有多少钱,所以任何一次的价值转换,全世界有兴趣的人都能在旁边看着你,转换是由矿工来帮你确认的,所以它是一个互联网共识机制。
3、不可撤销、不可篡改和加密安全性
区块链采取单向哈希算法,每个新产生的区块严格按照时间线形顺序推进,时间的不可逆性、不可撤销导致任何试图入侵篡改区块链内数据信息的行为易被追溯,导致被其他节点的排斥,造假成本极高,从而可以限制相关不法行为。
扩展资料:
一,概念定义
什么是区块链?从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,为区块链创造信任奠定基础。而区块链丰富的应用场景,基本上都基于区块链能够解决信息不对称问题,实现多个主体之间的协作信任与一致行动[7]。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库。
二,特征
去中心化。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。去中心化是区块链最突出最本质的特征。
开放性。区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。
独立性。基于协商一致的规范和协议(类似比特币采用的哈希算法等各种数学算法),整个区块链系统不依赖其他第三方,所有节点能够在系统内自动安全地验证、交换数据,不需要任何人为的干预。
安全性。只要不能掌控全部数据节点的51%,就无法肆意操控修改网络数据,这使区块链本身变得相对安全,避免了主观人为的数据变更。
匿名性。除非有法律规范要求,单从技术上来讲,各区块节点的身份信息不需要公开或验证,信息传递可以匿名进行
区块链领域的创新最重要的是什么?
区块链创新最重要的是底层技术开发:
1、分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其证实。
2、非对称加密和授权技术,即在区块链中储存的交易资讯可以被公开,但是账户身份信息是高度加密的,必须经过数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。
3、共识机制,就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链技术为解决各种应用场合提供了四种不同的共识机制,以求达到高效与安全的均衡。
4、智能合约,是建立在这种可靠、不可更改的基础上,能够自动地实现某些预先设定的规则和条款。以保险为例,如果说每个人的信息包括医疗信息和风险发生的信息、都是真实可信的,那就很容易在一些标准化的保险产品中,去进行自动化的理赔。
区块链技术的概念如何变现
有很多运用区块链概念的变现方法,举一个例子,区块链能创建更好的用户控制机制。现在的用户信息很容易被操纵,分发给第三方,甚至可以出售,从而为社交媒体平台所有者创造收入流,而这些收益流绝对不会与信息的用户分享。区块链可以破坏所有这些活动。它可以让用户控制他们自己的信息,以及它确切的位置。未经许可,任何平台都不得访问。用户可以决定谁可以访问他们的信息。他们可以按照他们的选择直接与广告商和第三方打交道,而不是像其他人那样。而且,用户可以选择与任何平台的广告商分享他们的信息,并收取费用。在现实生活中,已经有歌手开始使用区块链技术收取歌曲和专辑的费用了,而不是通过任何其他中介。
我举一个我使用过的区块链媒体为例子,大多数区块链媒体都为这样类似的模式。我喜欢炒币,然后知道了芥末圈这个App。他的运营模式就是,任何一个人都可以自己创建一个圈子,也可以通过一些方式加入别人的圈子。圈主可以在圈内发布一些消息,转载一些跟这个圈子有关的内容,比如电影的,比特币的,炒股的。然后里面的成员就可以去接受这些信息。如果那些用户觉得有价值,他们就会一直留在圈子里。然后有了用户群,那圈主就可以设置付费的内容,比如5块钱才能阅读这个信息,或者受到打赏。这就是最简单的区块链媒体的盈利方法。当然区块链是一个很重要的技术基础,而这些媒体只是建立在区块链技术基础上而形成的。他们的盈利方法当然比我说的更加复杂,不同的区块链媒体的盈利方法也不一样。
现在区块链在实际生活中的应用开始越来越多,体现的方法也会越来越多的,留意新闻和实事就好了,希望能帮到你。
区块链的核心技术是什么?
简单来说,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。
或许以上概念过于抽象,我来举个例子,你就好理解了。
你可以想象有100台计算机分布在世界各地,这100台机器之间的网络是广域网,并且,这100台机器的拥有者互相不信任。
那么,我们采用什么样的算法(共识机制)才能够为它提供一个可信任的环境,并且使得:
节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;
每个节点的数据会同步到最新数据,并且会验证最新数据的有效性;
基于少数服从多数的原则,整体节点维护的数据可以客观反映交换历史。
区块链就是为了解决上述问题而产生的技术方案。
二、区块链的核心技术组成
无论是公链还是联盟链,至少需要四个模块组成:P2P网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。
1、P2P网络协议
P2P网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播、节点发现和维护。
通常我们所用的都是比特币P2P网络协议模块,它遵循一定的交互原则。比如:初次连接到其他节点会被要求按照握手协议来确认状态,在握手之后开始请求Peer节点的地址数据以及区块数据。
这套P2P交互协议也具有自己的指令集合,指令体现在在消息头(MessageHeader)的命令(command)域中,这些命令为上层提供了节点发现、节点获取、区块头获取、区块获取等功能,这些功能都是非常底层、非常基础的功能。如果你想要深入了解,可以参考比特币开发者指南中的PeerDiscovery的章节。
2、分布式一致性算法
在经典分布式计算领域,我们有Raft和Paxos算法家族代表的非拜占庭容错算法,以及具有拜占庭容错特性的PBFT共识算法。
如果从技术演化的角度来看,我们可以得出一个图,其中,区块链技术把原来的分布式算法进行了经济学上的拓展。
在图中我们可以看到,计算机应用在最开始多为单点应用,高可用方便采用的是冷灾备,后来发展到异地多活,这些异地多活可能采用的是负载均衡和路由技术,随着分布式系统技术的发展,我们过渡到了Paxos和Raft为主的分布式系统。
而在区块链领域,多采用PoW工作量证明算法、PoS权益证明算法,以及DPoS代理权益证明算法,以上三种是业界主流的共识算法,这些算法与经典分布式一致性算法不同的是,它们融入了经济学博弈的概念,下面我分别简单介绍这三种共识算法。
PoW:通常是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能获得记账权(出块)权利。这个求解过程往往会转换成计算问题,所以在比拼速度的情况下,也就变成了谁的计算方法更优,以及谁的设备性能更好。
PoS:这是一种股权证明机制,它的基本概念是你产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例,它实现的核心思路是:使用你所锁定代币的币龄(CoinAge)以及一个小的工作量证明,去计算一个目标值,当满足目标值时,你将可能获取记账权。
DPoS:简单来理解就是将PoS共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账。这个圈子可能是21个节点,也有可能是101个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将会极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。
3、加密签名算法
在区块链领域,应用得最多的是哈希算法。哈希算法具有抗碰撞性、原像不可逆、难题友好性等特征。
其中,难题友好性正是众多PoW币种赖以存在的基础,在比特币中,SHA256算法被用作工作量证明的计算方法,也就是我们所说的挖矿算法。
而在莱特币身上,我们也会看到Scrypt算法,该算法与SHA256不同的是,需要大内存支持。而在其他一些币种身上,我们也能看到基于SHA3算法的挖矿算法。以太坊使用了Dagger-Hashimoto算法的改良版本,并命名为Ethash,这是一个IO难解性的算法。
当然,除了挖矿算法,我们还会使用到RIPEMD160算法,主要用于生成地址,众多的比特币衍生代码中,绝大部分都采用了比特币的地址设计。
除了地址,我们还会使用到最核心的,也是区块链Token系统的基石:公私钥密码算法。
在比特币大类的代码中,基本上使用的都是ECDSA。ECDSA是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC(椭圆曲线函数)。
从技术上看,我们先从生成私钥开始,其次从私钥生成公钥,最后从公钥生成地址,以上每一步都是不可逆过程,也就是说无法从地址推导出公钥,从公钥推导到私钥。
4、账户与交易模型
从一开始的定义我们知道,仅从技术角度可以认为区块链是一种分布式数据库,那么,多数区块链到底使用了什么类型的数据库呢?
我在设计元界区块链时,参考了多种数据库,有NoSQL的BerkelyDB、LevelDB,也有一些币种采用基于SQL的SQLite。这些作为底层的存储设施,多以轻量级嵌入式数据库为主,由于并不涉及区块链的账本特性,这些存储技术与其他场合下的使用并没有什么不同。
区块链的账本特性,通常分为UTXO结构以及基于Accout-Balance结构的账本结构,我们也称为账本模型。UTXO是“unspenttransactioninput/output”的缩写,翻译过来就是指“未花费的交易输入输出”。
这个区块链中Token转移的一种记账模式,每次转移均以输入输出的形式出现;而在Balance结构中,是没有这个模式的。
区块链的核心技术:共识机制&智能合约
不论你是否接受,未来终将改变。
区块链技术给数字经济时代带来了巨变的曙光。
这种巨变在互联网近50年的历史上曾发生过两次。第一次巨变是全球性的联
网……第二次巨变是全球性的应用……第三次巨变正在蕴酿。
————摘自《腾讯区块链方案白皮书》?
当第一次读到这段时,完全不敢想象这是一家世界级企业对一项新技术的评价,
瞬间引起了我的兴趣。“巨变”是什么含义?就是说完全有可能颠覆我们现有的
经济结构和认知,彻底改变我们的生活方式。
一种从2009年才诞生的比特币技术中抽象而来的blockchain(区块链)技术,
居然获得了这么高的评价,这难道不是很神奇的一件事么?不管这件事会不会发
生,已经令人非常激动了,我们正在迎接一项变革并且可能参与其中,不是任何
时代的人都有这种机会,何其幸运!
不论你是否接受,未来终将改变。全球众多经济学家、企业家、国家政要都在推
崇区块链,声称区块链技术将重塑商业、货币和世界,将颠覆互联网、银行、证
券、保险、物流、电力、制造、会计税收、法律服务、文化创业、医药卫生等众
多行业。
虽然说到“区块链”,大家都会提到“去中心化”,也举了很多形象的例子。但
是我是一个较真的人,希望能够找到大家做出这种判断,背后的逻辑到底是什
么?就需要搞懂一切推断背后的本质,就需要了解区块链的核心技术逻辑。
阅读了一些书籍和资料之后,抛开“比特币”不说,要了解区块链,有两个核心
名词:共识机制、智能合约。
共识机制是区块链技术的核心,要搞清楚”共识机制“,就不得不提著名的“拜
占庭将军问题”,拜占庭将军问题由莱斯利·兰伯特提出的点对点通信中的基本
问题,主要是用于分析在分布式节点传输信息时如何保持数据的一致,即共识这
个问题。
拜占庭将军问题
一组拜占庭将军分别各率领一支军队共同围困一座城市。为了简化问题,将各支
军队的行动策略限定为进攻或撤离两种。
因为部分军队进攻部分军队撤离可能会造成灾难性后果,因此各位将军必须通过
投票来达成一致策略,即所有军队一起进攻或所有军队一起撤离。因为各位将军
分处城市不同方向,他们只能通过信使互相联系。
在投票过程中每位将军都将自己投票给进攻还是撤退的信息通过信使分别通知其
他所有将军,这样一来每位将军根据自己的投票和其他所有将军送来的信息就可
以知道共同的投票结果而决定行动策略。
系统的问题在于,将军中可能出现叛徒,他们不仅可能向较为糟糕的策略投票,
还可能选择性地发送投票信息。这样各支军队的一致协同就遭到了破坏。由于将
军之间需要通过信使通讯,叛变将军可能通过伪造信件来以其他将军的身份发送
假投票。而即使在保证所有将军忠诚的情况下,也不能排除信使被敌人截杀,甚
至被敌人间谍替换等情况。因此很难通过保证人员可靠性及通讯可靠性来解决问
题。
假始那些忠诚的将军仍然能通过多数决来决定他们的战略,便称达到了拜占庭容
错。
拜占庭将军问题被认为是容错性问题中最难的问题类型之一。在一个有n个节点的
系统中,每一个节点都有一个输入的值,其中一些节点具有故障,甚至是恶意
的。
在分布式计算中,不同的计算机通过通讯交换信息达成共识而按照同一套协作策
略行动。但有时候,系统中的成员计算机可能出错而发送错误的信息,用于传递
信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策
略得出不同结论,从而破坏系统一致性。
但是中本聪在设计比特币系统时应用的“工作量证明链”(PoW)模型很好的解决
了共识问题,至于什么是“PoW”,感兴趣的可以研究下。
智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在
上面执行这些承诺的协议。一个合约就是存在区块链里的程序。合约的参与双方
将达成的协议提前安装到区块链系统中。在双方的约定完成后,开始执行合约,
不能修改。至于合约执行所需要的“燃料”,也就是手续费,也需要提前支付。
智能合约可以解决日常生活中常见的违约问题,如果应用到各行业中,可以避免
违约的信用问题。
在区块链出现之前,商业领域的信任关系通常要依赖于正直、诚信的个人、中介
机构或其他组织才能建立起来。在区块链这个新兴的领域中,信任关系的建立是
基于网络,甚至是网络上的某个对象。由区块链驱动的智能合约将会要求双方遵
守他们的承诺。
在区块链体系中,共识机制和智能合约,保证了数据的真实性和合约执行力,实
现“去中心化”。当然还有很多技术层面的东西没有说到,感兴趣的可以深入了
解下。
虽然大部分人对于区块链的认知还停留在比特币、各种代币上,也就是对金融行
业的变革。但是了解区块链核心逻辑后,结合自己所在的行业“区块链+”,区
块链的各行业的应用刚进前半场,相信都会想到很多好的创新方向。
三、区块链货币核心是什么,区块链的核心技术是什么
区块链的核心技术是什么?
简单来说,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。
或许以上概念过于抽象,我来举个例子,你就好理解了。
你可以想象有100台计算机分布在世界各地,这100台机器之间的网络是广域网,并且,这100台机器的拥有者互相不信任。
那么,我们采用什么样的算法(共识机制)才能够为它提供一个可信任的环境,并且使得:
节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;
每个节点的数据会同步到最新数据,并且会验证最新数据的有效性;
基于少数服从多数的原则,整体节点维护的数据可以客观反映交换历史。
区块链就是为了解决上述问题而产生的技术方案。
二、区块链的核心技术组成
无论是公链还是联盟链,至少需要四个模块组成:P2P网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。
1、P2P网络协议
P2P网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播、节点发现和维护。
通常我们所用的都是比特币P2P网络协议模块,它遵循一定的交互原则。比如:初次连接到其他节点会被要求按照握手协议来确认状态,在握手之后开始请求Peer节点的地址数据以及区块数据。
这套P2P交互协议也具有自己的指令集合,指令体现在在消息头(MessageHeader)的命令(command)域中,这些命令为上层提供了节点发现、节点获取、区块头获取、区块获取等功能,这些功能都是非常底层、非常基础的功能。如果你想要深入了解,可以参考比特币开发者指南中的PeerDiscovery的章节。
2、分布式一致性算法
在经典分布式计算领域,我们有Raft和Paxos算法家族代表的非拜占庭容错算法,以及具有拜占庭容错特性的PBFT共识算法。
如果从技术演化的角度来看,我们可以得出一个图,其中,区块链技术把原来的分布式算法进行了经济学上的拓展。
在图中我们可以看到,计算机应用在最开始多为单点应用,高可用方便采用的是冷灾备,后来发展到异地多活,这些异地多活可能采用的是负载均衡和路由技术,随着分布式系统技术的发展,我们过渡到了Paxos和Raft为主的分布式系统。
而在区块链领域,多采用PoW工作量证明算法、PoS权益证明算法,以及DPoS代理权益证明算法,以上三种是业界主流的共识算法,这些算法与经典分布式一致性算法不同的是,它们融入了经济学博弈的概念,下面我分别简单介绍这三种共识算法。
PoW:通常是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能获得记账权(出块)权利。这个求解过程往往会转换成计算问题,所以在比拼速度的情况下,也就变成了谁的计算方法更优,以及谁的设备性能更好。
PoS:这是一种股权证明机制,它的基本概念是你产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例,它实现的核心思路是:使用你所锁定代币的币龄(CoinAge)以及一个小的工作量证明,去计算一个目标值,当满足目标值时,你将可能获取记账权。
DPoS:简单来理解就是将PoS共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账。这个圈子可能是21个节点,也有可能是101个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将会极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。
3、加密签名算法
在区块链领域,应用得最多的是哈希算法。哈希算法具有抗碰撞性、原像不可逆、难题友好性等特征。
其中,难题友好性正是众多PoW币种赖以存在的基础,在比特币中,SHA256算法被用作工作量证明的计算方法,也就是我们所说的挖矿算法。
而在莱特币身上,我们也会看到Scrypt算法,该算法与SHA256不同的是,需要大内存支持。而在其他一些币种身上,我们也能看到基于SHA3算法的挖矿算法。以太坊使用了Dagger-Hashimoto算法的改良版本,并命名为Ethash,这是一个IO难解性的算法。
当然,除了挖矿算法,我们还会使用到RIPEMD160算法,主要用于生成地址,众多的比特币衍生代码中,绝大部分都采用了比特币的地址设计。
除了地址,我们还会使用到最核心的,也是区块链Token系统的基石:公私钥密码算法。
在比特币大类的代码中,基本上使用的都是ECDSA。ECDSA是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC(椭圆曲线函数)。
从技术上看,我们先从生成私钥开始,其次从私钥生成公钥,最后从公钥生成地址,以上每一步都是不可逆过程,也就是说无法从地址推导出公钥,从公钥推导到私钥。
4、账户与交易模型
从一开始的定义我们知道,仅从技术角度可以认为区块链是一种分布式数据库,那么,多数区块链到底使用了什么类型的数据库呢?
我在设计元界区块链时,参考了多种数据库,有NoSQL的BerkelyDB、LevelDB,也有一些币种采用基于SQL的SQLite。这些作为底层的存储设施,多以轻量级嵌入式数据库为主,由于并不涉及区块链的账本特性,这些存储技术与其他场合下的使用并没有什么不同。
区块链的账本特性,通常分为UTXO结构以及基于Accout-Balance结构的账本结构,我们也称为账本模型。UTXO是“unspenttransactioninput/output”的缩写,翻译过来就是指“未花费的交易输入输出”。
这个区块链中Token转移的一种记账模式,每次转移均以输入输出的形式出现;而在Balance结构中,是没有这个模式的。
时过境迁,区块链经济的核心究竟是什么呢?
自比特币诞生以来,目前全球已陆续出现了1600多种虚拟货币,围绕着虚拟货币的生成、存储、交易等形成了庞大的产业链生态。但整体而言,行业尚处于初创期,离真正的价值应用区域还有很大距离。
区块链经济的核心在于商业逻辑和组织形态的重构,因此需要在多个行业获得应用落地的实例来表明其价值。本文将从区块链与行业需求相结合的角度,探讨区块链在各行业应用的商业模式。
首先,区块链的核心是解决了信用的问题:
信用是一切商业活动与金融的基础。美国自2011年起实行可信身份识别,而中国则通过实名制实现可监管的信息传播。区块链的意义在于第一次从技术层面建立了去中心化的信任,实现了完全分布式的信用体系。
其次,区块链解决了价值交换的问题:
传统网络可以实现信息的点到点传递,但无法实现价值的点到点传递。因为信息是允许复制的,而价值必须确权且具有唯—性,因此必须依赖一个中心化机构才能做到价值传递。区块链完美地解决了此问题,提供了一个实现价值点到点传递的方法,在价值传递过程中,由网络来实现记帐而不依赖某个中心化的机构。所以区块链有望成为构建新型金融的基础设施,成为未来价值互联网的基石。
区块链的应用
目前区块链的应用,主要有两种模式:
1)原生型的区块链应用:直接基于去中心化的区块链技术,实现价值传递和交易等应用,例如数字货币;
2)“区块链+”模式:将传统的场景和区块链底层协议相结合,以便提高效率,降低成本。预计区块链在各行业的应用,将以第二种模式为主。
区块链具有五大核心属性,即:交易属性(价值属性)、存证属性、信任属性、智能属性、溯源属性。如上核心属性与行业的需求相结合,解决行业痛点问题,成为了区块链在各行业应用的商业模式。
区块链+银行
1、跨境支付
跨境支付是长期以来困扰银行业的痛点问题。传统跨境支付手段包括两大类:一是网上支付,包括电子账户支付和国际信用卡支付,适用于零售小金额;二是银行汇款模式,适用于大金额的交易;二者均存在到账周期长、费用高、交易透明度低等问题。尤其是近年来随着跨境电商的兴起,方便、快捷、安全、低成本的跨境支付更成为行业的迫切需求。
区块链的作用:
区块链去中介化、交易公开透明的特点,没有第三方支付机构加入,缩短了支付周期、降低费用、增加了交易透明度。例如,2017年12月,招商银行联手永隆银行、永隆深圳分行,成功实现了三方之间使用区块链技术的跨境人民币汇款。其清算流程安全、高效、快速,大幅提升客户体验。
2、供应链金融
该领域的痛点在于融资周期长、费用高。以供应链核心企业系统为中心,第三方增信机构很难鉴定供应链上各种相关凭证的真伪,造成人工审核的时间长、融资费用高。
区块链的作用:
区块链将共识机制、存在性证明、不可篡改、可追溯等特性引入供应链金融,不需要第三方增信机构鉴定供应链上各种相关凭证的真实性,从而降低融资成本、缩短融资周期。例如,2017年4月,上市公司易见股份与IBM中国研究院联合发布了区块链供应链金融服务系统“易见区块”,该系统主推医药场景,目前己有30余家医药流通企业在“易见区块”注册成功,截至7月底交易数量己接近8000笔,投放总金额超过一亿元。
3、数字票据
数字票据行业的痛点在于长期存在“虚假票据”、“一票多卖”等问题,为银行业的票据融资业务带来了风险。
区块链的作用:
区块链的存在性证明、不可篡改的特性,有效解决了虚假数字票据的问题;同时,区块链解决了双花问题,可避免”一票多卖”。例如,深圳区块链金融服务有限公司发行票链产品,基于区块链提供票据的融资服务,解决中小微企业的票据融资需求。合作银行包括赣州银行、贵阳银行、苏州银行、石嘴山银行、廊坊银行、乌海银行、吉林九台农商银行、尧都农商银行、深圳农村行业银行、潍坊银行、中原银行等。此外,浙商银行、京东金融、恒生电子、海航等也在验证区块链数字票据服务。
区块链+证券
1、资产证券化
资产证券化是以未来的收入作为保证,以获得现在的融资。该领域的痛点在于:参与主体多,操作环节多,交易透明度低,信息不对称,底层资产真伪无法保证。
区块链的作用:
区块链为资产证券化引入了存在性证明、不可篡改、共识机制等属性,能够实时监控资产的真实情况,解决了交易链条各方机构对底层资产的信任问题。各类资产如股权、债券、票据、收益凭证、仓单等均可被整合进区块链中,成为链上数字资产,提升资产流转效率,降低成本。例如,2017年5月,百度金融与佰仟租赁、华能信托等在内的合作方联合发行区块链技术支持的资产证券化ABS项目,发行规模达4.24亿元。
区块链+保险
1、保险业务
保险行业存在着信息不对称,客户与保险机构之间缺乏信任等问题:用户难以选择适合自己的保险产品,而保险机构则面临骗保的风险。
区块链的作用:
区块链的去中心化、开放透明、可追溯的特点,为保险机构和用户间建立良好的沟通渠道;保险标的信息在区块链上统一管理,不可篡改,帮助保险机构规避骗保风险;同时,通过智能合约可提升工作效率,降低成本。例如,法国保险巨头安盛保险(AXA)正在使用以太坊公有区块链为航空旅客提供自动航班延迟赔偿。如果航班延迟超过2小时,“智能合约”保险产品将会向乘客进行自动理赔。
2、征信管理
该领域的痛点在于征信机构的数据采集渠道有限,数据缺乏共享,导致难以准确表征个人或机构的信用情况;此外,数据收集过程中也存在如何保障用户隐私的问题。
区块链的作用:
区块链具有去信任、共识、不可篡改的特征,在技术层面保证了可以在有效保护用户隐私的基础上实现有限度、可管控的信用数据共享和验证。例如,目前中国平安的区块链征信业务已上线运行,此外国内的创业公司如上海矩真、LinkEye、布比区块链等也在进行联合征信、安全存证等方面的探索。
作为一种基础性技术,区块链在众多具有分布式处理、点对点交易、快速建立信任关系等需求的行业领域具有极大的应用价值,其核心是解决了信用的问题,实现了价值的点到点传递。因此被认为是未来价值互联网的基石。
区块链商业模式的核心在于,利用区块链引入的创新属性,与传统行业应用相结合,实现商业逻辑的重构,以便创造新的应用场景,或提升效率,降低成本。
区块链也将延伸到社会生活的各个领域:区块链解决了数字化资产的管理、交易、转移等问题,因此将在资产数字化的浪潮中发挥重要作用,如供应链管理、数据服务、资产管理、公共服务、物联网等应用正在各个领域逐步落地,“区块链+”正在成为现实。
什么是区块链技术?区块链技术的核心构成是什么?
从技术的角度,架构的角度,用通俗的语言来跟大家讲讲,我对区块链的一些理解。
究竟啥是区块链?Blockchain,一句话来说,区块链是一个存储系统,存储系统更细一点,区块链是一个没有管理员,每个节点都拥有全部数据的分布式存储系统。
那常见的存储系统,是什么样子的呢?
如上图所示,底部是数据,上面可以写入数据。一个空间存储数据,一个软件管理数据,提供接口写入数据,这就是存储系统。比如MySQL就是最常见的存储系统。
普通的存储系统,容易存在什么问题呢?至少有两个常见的问题
第一个是非高可用的问题,数据存在一个地方很危险。用技术的话说,就是数据不高可用。
第二个问题是,它存在写入的单点,写入点只有一个。用技术的话说,就是它是一个单点控制。
那普通的存储系统通常是如何解决这两个问题的呢?
首先看一下如何保证高可用?
普通的存储系统通常是用“冗余”的方式来解决高可用问题的。图上图所示如果能够把数据复制成几份,冗余到多个地方,就能够保证高可用。一个地方的数据挂了,另外的地方还存有数据,例如MySQL的主从集群就是这个原理,磁盘的RAID也是这个原理。
这个地方需要强调的两点是:数据冗余,往往会引发一致性的问题
1、例如MySQL的主从集群中中其实读写会有延时的,它其实就是有一个短的时间内读写不一致。这个是数据冗余,带来的一个副作用。
2、第二个点是数据冗余往往会降低写入的效率,因为数据同步也是需要消耗资源的。你看单点写入,如果加了两个从库之后,其实写入的效率会受影响。普通的存储系统,就是采用冗余的方式,保证数据的高可用的。
那么第二个问题,普通的存储系统,能否多点写入呢?
答案是可以的,比如说以这个图为例:
其实MySQL的话可以做一个双主的主从同步,双主的主从同步,两个节点,同时可以写入。如果要做多机房多活的数据中心,其实多机房多活也是进行数据同步的。这里要强调的是多点写入,往往会引发写写冲突的一致性问题,以MySQl为例,假设有一个表的属性是自增ID,那么现在数据库中的数据是1234,那么其中一个节点写入,插入了一条数据,那它可能变成5了,然后这5条数据,向另外一个主节点进行数据同步,同步完成之前,如果另外一个写入节点,也插入了一条数据,也生成了一条这个自增id为5的数据。那么,生成之后,往另外一个节点同步,然后同步数据到达之后会与本地的这两条5冲突,就会同步失败,会引发写写的一致性冲突问题。这个多点写入的话都会出现这个问题。
多点写入,如何保证一致?
维新“天鹅大咖课”给你更多的技术干活
区块链技术的核心层是什么?
重庆金窝窝分析:共识机制是区块链技术的核心,共识机制很大程度上决定了整个区块链系统节点之间的相互信任程度,也决定了其他使用者对于区块链上数据的信任程度
区块链技术的核心是?
区块链技术
的核心是共识算法,共识算法的本质是在
分布式网络
中,各节点互不信任的条件下,通过举证
稀缺资源
的方式,形成了
纳什均衡
的博弈场,赢得各方的信任,快速在各个节点之间达成一致,并同步的完成任务。