区块链格式 区块链数据格式

皕利分享 108 0

本篇文章主要给网友们分享区块链格式的知识,其中更加会对区块链数据格式进行更多的解释,如果能碰巧解决你现在面临的问题,记得关注本站!

简要理解区块链?

区块链(Blockchain)是比特币的一个重要概念,是比特币的底层技术和基础架构,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。

狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。

一句话,它是一种特殊的分布式数据库。

一个很重要的理解就是去中心化

区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库,任何读取都是平行的和透明的。

区块链没有管理员,区块链格式作为一种使数据库安全而不需要行政机构的授信的解决方案首先被应用于比特币。

那么ta是如何取得防伪的呢?

区块与 Hash 是一一对应的,有人修改了一个区块,该区块的 Hash 就变了。

所以ta是唯一的!

计算 Hash 的机器就叫做矿机,操作矿机的人就叫做矿工。

区块头包含一个难度系数(difficulty),这个值决定了计算 Hash 的难度。

大概计算10亿次,才算中一次。

区块链主要解决的交易的信任和安全问题,因此它针对这个问题提出了四个技术创新:

第一个叫分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。不同于传统的中心化记账方案,没有任何一个节点可以单独记录账目,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。另一方面,由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。

第二个叫做非对称加密和授权技术,存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。

第三个叫做共识机制,就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。当加入区块链的节点足够多的时候,这基本上不可能,从而杜绝了造假的可能。

最后一个技术特点叫智能合约,智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息(包括医疗信息和风险发生的信息)都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔。

一个署名为中本聪的人,提出了革命性的构想:让我们创造一种不受政府或其他任何人控制的货币!

----比特币的起源。

区块链技术应用前景极为广泛,尤其是金融领域的数字货币、跨境支付等等,此前消息称,中国央行有望成为首个研发数字货币并开展真实应用的中央银行。

三五互联:公司与中金在线已签署了合作意向书,拟共同开展比特币项目,而区块链技术正是比特币的核心。

恒生电子:正在尝试建立运用区块链技术实现基于联盟链的数字票据系统。

飞天诚信:公司曾在互动平台表示目前在区块链技术有一定的技术储备和研究。公司未来将积极参与数字货币及其他区块链技术产业。

赢时胜:4月11日在投资者关系互动平台上表示,公司目前有这方面的技术储备,但处初始阶段。

从目前情况看,我国上市公司区块链技术应用绝大多数还停留在研究阶段,项目落地与推广应用尚有待时间检验。

什么是区块链,与比特币有什么联系

区块链诞生自中本聪的比特币,2008年由中本聪第一次提出了区块链的概念。

狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,

并以密码学方式保证的不可篡改和不可伪造的分布式账本。

广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式

区块链格式作为一种使数据库安全而不需要行政机构的授信的解决方案首先被应用于比特币。2008年10月,在中本聪的原始论文中,“区块”和“链”这两个字是被分开使用的,而在被广泛使用时被合称为区块-链,到2016年才被变成一个词:“区块链”。在2014年8月,比特币的区块链文件大小达到了20千兆字节。

1分钟带你快速了解区块链的技术模型架构

区块链技术性并并不是一项单一的技术性,只是多种多样技术性融合自主创新的结果,其实质是一个弱管理中心的、自信赖的最底层构架技术性。

区块链技术性实体模型由上而下包含数据信息层、传输层的共识层、鼓励层、合同层和网络层。每一层具有一项关键作用,不一样等级中间互相配合,一同搭建一个去管理中心的使用价值传送管理体系。

数据信息层的特性是不能伪造、全备份数据、彻底公平(数据信息、管理权限、编码),而其算法设计是区块链,包含区块链头和区块材。区块链头由三组区块链数据库,一组数据库是父区块链哈希值,用以该区域块与区块链中的前一区块链相互连接;二组数据库是Merkle根,一种用于合理地小结区块链中全部买卖的算法设计;三组数据库是难度系数总体目标、时间格式和Nonce与生产制造区块链有关。

传输层封装了P2P网络体制、散播和认证体制等技术性。在传输层中,新的买卖向各大网站开展广播节目,每一个连接点都将接到的交易信息列入一个区块链中,且每一个连接点都试着在自身的区块链中寻找一个具备充足难度系数的劳动量证实,当一个连接点找到一个劳动量证实(得到装包区块链的资质),它就向各大网站开展广播节目(新装包的区块链),当且仅当包括在该区域块中的全部买卖全是合理的且以前未存有过的,别的连接点才认可该区域块的实效性,而表明认可接纳的方式 ,则是在追随该区域块的结尾,生产制造新的区块链以增加该传动链条,而将被接纳区块链的任意散列值视作在于新区块链的任意散列值。

的共识层封装了节点的各种共识机制优化算法,它是区块链的关键技术,由于这决策了区块链的造成,而记帐决策方法可能危害全部系统软件的安全系数和稳定性。现阶段早已发生了十余种共识机制优化算法,在其中较为知名的有劳动量证实体制(POW)、好用拜占庭容错机制优化算法(PBFT)、利益证实体制(POS)、股权授权证明体制。

鼓励层包含发售体制和激励制度。简易而言,激励制度是根据经济发展均衡的方式,激励连接点参加到维护保养区块链系统优化运作中,避免 对总帐簿开展伪造,使长期性保持区块链互联网运作的驱动力。

合同层具备可编程控制器的特点,关键包含智能合约、共识算法、脚本制作、编码,是区块链可编程控制器特点的基本。将编码置入区块链或动态口令中,完成能够 自定的智能合约,并在做到某一明确的约束的状况下,不用经过第三方就可以全自动实行,是区块链去信赖的基本。

网络层封装了区块链的各种各样应用领域和实例,跟电脑的应用软件、电脑浏览器上的门户网等很类似,将区块链关键技术布署在如以太币、EOS上并在实际中落地式。

#比特币[超话]# #数字货币#

【转载】MimbleWimble 和 Grin 简介

本文摘自Grin官方github源码:

MimbleWimble是一个区块链格式和协议,依托于健壮的加密原语,提供非常好的可扩展性、隐私和可替代性。它解决了当前几乎所有实现的区块链(与现实需求之间)差距。MimbleWimble 的白皮书在 本项目的WiKi 中可以找到,WiKi是开放的。

Grin是一个实现MimbleWimble区块链的开源软件项目,并填补了(MimbleWimble协议所缺失的)实现一个完整的区块链和加密货币必需的一些东西。

Grin 项目的主要目的和特性如下:

备注 :MimbleWimble 出自《哈利波特》中的一句咒语,详见: Tongue-Tying Curse ,这个标题的涵义应该是希望所有读到这篇介绍的人都可以来为这个开放社区做点贡献,真心希望如此。

本文针对的读者是已经了解过区块链并了解一些基本的密码学知识的人群。我们尝试解释MimbleWimble的技术构建,以及它如何应用于Grin。我们希望这篇介绍能够浅显易懂,我们的目的是鼓励您对Grin产生兴趣,并加入Grin的开放社区,以任何您可能的方式对其做出贡献。

为了实现这个目标,我们将介绍一个主要概念:Grin是一个MimbleWimble实现。我们将从椭圆曲线密码(ECC)的简短描述开始,这是Grin的重要基础。然后描述MimbleWimble区块链交易和区块的所有关键要素。

我们首先简要介绍一下椭圆曲线密码学(后面简称为:ECC),只是简单说明一下理解MimbleWimble如何工作所必需了解的ECC属性,这里并不深入研究和讨论ECC。对于想要更多一点了解ECC的读者,可以参考这个介绍: 了解更多 .

用于密码学目的的椭圆曲线只是一大组我们称之为 C 的点。这些点可以被加、减或乘以整数(也称为标量)。 给定一个整数 k 并使用标量乘法运算,我们可以计算 k * H ,这也是曲线 C 上的一个点。 给定另一个整数 j ,我们也可以计算 (k + j)* H ,它等于 k * H + j * H 。 椭圆曲线上的加法和标量乘法运算保持加法和乘法的交换率和结合律:

在ECC中,如果我们选择一个非常大的数字 k 作为私钥,则 k * H 被作为相应的公钥。 即使人们知道公钥 k * H 的值,推导 k 几乎不可能(或者换句话说,椭圆曲线点的乘法计算是微不足道的,然而曲线点的“除法”计算却极其困难。参见: 椭圆曲线密码学 。

先前的公式 (k + j)* H = k * H + j * H 中, k 和 j 都是私钥,演示了从两个私钥的加和获取公钥 (k + j)* H ,等价于每个私钥的对应公钥加和( k * H + j * H )。在比特币区块链中, 分层确定性钱包(HD Wallets/BIP32) 严重依赖于这个原则。 MimbleWimble和Grin也是如此。

交易结构的设计显示了MimbleWimble的一个关键原则:强大的隐私性和保密性。

MimbleWimble的交易确认依赖于两个基本属性:

下面介绍账户余额、所有权、变更和证明,并借此说明上面的这两个基本属性是如何得以实现的。

基于上面描述的ECC的属性,可以在交易数据中掩盖实际交易值。

如果 v 是交易输入或输出的值,而 H 是椭圆曲线,我们可以简单地在交易中嵌入 v * H 而不是 v 。 这是因为使用ECC操作,我们仍然可以验证交易的输出总和等于输入总和:

验证每笔交易的这个属性允许协议验证交易不会凭空创造出金钱,而无需了解实际的交易值是多少。但是,可用数值是有限的,攻击者可以尝试每一个可能的数值来猜测你的交易值。 另外,知道v1(来自 上面的交易示例)和 v1 * H ,就等于在整个区块链中揭露了等于v1的交易。 出于这些原因,我们引入了第二个椭圆曲线 G (实际上 G 只是与 H 相同的曲线组上的另一个发生器点)和私钥 r 用作 致盲因子 。

交易中的输入或输出值可以表示为:

其中:

无论是 v 还是 r 都不能被推导出来,从而利用了椭圆曲线密码学的基本属性。 r * G + v * H 被称为 Pedersen Commitment 。

作为一个例子,我们假设我们想用两个输入和一个输出创建一笔交易。 我们有(忽略费用):

满足:

为每个输入值生成一个私钥作为致盲因子,将上面的等式替换每个值为他们各自的 Pedersen Commitments,我们获得:

并且要求:

这是MimbleWimble的第一个支柱:验证交易的算术运算可以在完全不知道任何实际交易值的情况下完成。

补充最后一点说明,这个想法实际上派生自Greg Maxwell的 机密交易 ,机密交易本身是从Adam Back提出的用于比特币的同态值提议中发展而来。

在前面的章节中,我们介绍了一个私钥作为致盲因子来掩盖实际交易值。MimbleWimble的第二个见解就是这个私钥可以用来证明值的所有权。

Alice 给你发了3个币并且隐藏了这个数字,你选择了28作为你的致盲因子(请注意,在实践中,致盲因子是一个私钥,是一个非常大的数字)。 区块链上的某处显示以下交易输出,并只能由你来用(做交易输入):

X , 上述加法的输出值,是对所有人可见的。 但是值3只有你和 Alice 知道,而28就只有你自己知道了。

为了再次转移这3个币,协议要求(交易者)以某种方式知道28。 为了演示这是如何工作的,假设你想将这3个相同的币转移给Carol。 您需要构建一个简单的交易,以便:

其中 Xi 是一个输入,它花掉你之前得到的输出值 X ,而 Y 是 Carol 的输出。如果不知道你的私钥28,就没有办法建立这笔交易。的确,如果Carol要平衡这个交易,她既需要知道发送的值,也需要知道你的私钥, 以便:

通过检查一切已被清零,我们可以再次确认没有创造新的金钱。

等等! 停一下! 现在你知道了 Carol的输出中的私钥(在上面的情况下,它必须与你的相同,为了让等式两边平衡),所以你可以把钱从Carol那里偷回来!

为了解决这个问题,我们允许Carol增加她选择的另一个值。 113,最后在区块链上的结果变成了:

现在交易不会再归零了,我们在 G 上有一个 excess value (85),这是所有致盲因子总和的结果。 但是因为 85 * G 是椭圆曲线 G 上的有效公钥,85, 对于任何x和y,只有 y = 0 是 G 上的 x * G + y * H 有效公钥。

因此,协议需要验证的其实就是:( Y - Xi )是 G 上的一个有效公钥,以及交易者知道私钥(我们与Carol的交易中的85)。最简单的方法就是要求使用excess value(85)进行签名,然后验证:

这个关联到每笔交易的签名,附加一些额外数据(比如交易费),被称为交易核( transaction kernel )。

本节阐述创建交易,通过讨论交易的找零机制和范围证明的要求以便所有值都被证明为非负。 这些都不是了解MimbleWimble和Grin的必需内容,所以如果你想快速了解,随时可以直接跳过本节内容,直接到 Putting It All Together .

在上面的例子中,你必须分享你的私人密钥(致盲因子)给Carol。 一般来说,即使私钥永远不会被重用,这也不是一个十分可取的方法。 实际上,这不是问题,因为交易包括找零输出。

比方说,你只想从你收到的来自Alice的3个币里送出2个币给Carol。你简单地生成另一个私钥(比如12)作为一个致盲因子来保护你的找零输出,并告诉Carol 你正在发送2个币给她。Carol像以前一样使用自己的私钥:

最终,链中发生的交易基本上就是上述这种过程。签名使用 excess value ,例如这个例子当中就是97。

在所有上述计算中,我们都依赖交易值始终为正值。如果可能的话,引入负值将是非常有问题的,由于可以在每笔交易中凭空捏造新的金钱。

例如,可以创建一个输入为2并且输出为5和-3的交易,并且依照前面章节中的定义仍然可以获得平衡的事务。 这是不容易被检测到的,因为即使x是负数,ECDSA曲线上的对应点x.H看起来也是任何值。

为了解决这个问题,MimbleWimble利用了另一个加密概念(也来自机密交易),称为范围证明:一个数字落在给定范围内的证明,而不会泄露数字。 我们不会详细说明范围证明,您只需要知道,对于任何 r.G + v.H ,我们都可以创建一个证明,证明 v 大于零且不会溢出。

同样重要的是要注意,为了从上面的示例中创建有效的范围证明,必须知道在创建和签署excess value时使用的值113和28。 其原因以及范围证明的更详细描述在 range proof paper 中进一步详述。

MimbleWimble交易包括以下内容:

我们已经在上面解释了MimbleWimble交易如何在保持有效区块链所需的属性的同时提供强大的匿名性保证,即交易不会凭空捏造出货币,并且通过私钥建立所有权证明。

MimbleWimble区块格式通过引入一个附加概念来构建:核销( cut-through )。 有了这个补充,一个MimbleWimble链可获得:

回顾一下一笔交易的组成:

例如:

这个例子中使用的签名公钥是 28*G 。

任何一笔交易必须满足以下条件: (为了描述简便,这里忽略掉交易费部分)

这个条件同样适用于区块,因为区块只是一系列聚合的交易输入、交易输出和交易核。我们可以把所有的交易输出加起来,减去所有的交易输入,将结果与所有交易核中的kernel excess之和做比较:

简单来说,(依然忽略交易费部分)我们可以认为,对MimbleWimble区块的处理方法和对MimbleWimble交易的处理方法是严格一致的。

上面描述的MimbleWimble区块和交易设计有一个小问题,有可能从一个区块中的数据来重建交易(即找出一笔或几笔完整的交易,分辨哪一笔交易输入对应哪一笔交易输出)。这个对于隐私而言当然是不好的事情。这个问题也被称为子集问题("subset" problem) - 给定一系列交易输入、交易输出和交易核,有可能能够从中分辨出一个子集来重新拼出对应的完整的交易(很像拼图游戏)。

例如,假如有下面的两笔交易:

我们能够聚合它们并构建下面的区块(或一笔聚合交易( aggregate transaction )):

很容易利用等式平衡关系用穷举法试验所有可能的组合,从而找出原始的交易关系:

只要找出了一笔交易,那么剩下的当然也是符合等式平衡关系的,于是很容易就拼凑出另一笔交易:

为了大幅降低这个拼凑的可能性,从而缓解这个问题的不利影响,我们设计一个交易核偏移因子( kernel offset )给每一个交易核。 这也是一个致盲因子(或者说一个私钥),它需要加到kernel excess当中用于验证等式平衡关系:

当我们聚合这些交易到区块的时候,我们在区块头中存储一个(且仅一个)聚合偏移因子(aggregate offset)(即所有交易核偏移因子的总和)。这样一来,因为我们一个区块只有一个偏移因子,再也不可能将其分拆对应到每一笔交易的交易核偏移因子了,从而也就不可能再从区块中拼凑出任何一笔交易了。

具体的实现方法就是,在创建交易时将 k 分割成 k1+k2 。 对于交易核 (k1+k2)*G ,我们在交易核中发布出去的是 k1*G (称之为:the excess),以及 k2 (称为:the offset),并跟以前一样使用 k1*G 作为公钥来对交易进行签名。 在矿工构建区块的时候,我们对打包的所有交易的 k2 (the offset)求和,以生成一个单个的聚合值(aggregate k2 offset)用于该区块所打包的所有交易。一旦区块打包完成并发布和被链所接受,其原始的对应每笔交易的 k2 (the offset)即成为不可恢复的。

区块让矿工将多个交易组合成一个单个集合添加到链中。 在下面的区块表示中,包含3个交易,我们只显示交易的输入和输出。 输入关联其花费的输出。 前一个区块中包含的输出标记为小写字母x。

我们注意到以下两个属性:

与单个交易类似,所有需要在一个区块中进行检查的是所有权已经被证实(来自交易内核 transaction kernels ),并且整个区块没有增加任何货币供应(除了coinbase所允许的之外)。 因此,匹配输入和输出可以被消除,因为它们对总和的贡献被抵消了。 这导致了以下更紧凑的块:

请注意,所有的交易结构已被消除,输入和输出的顺序已不再成问题。 但是,该块中所有输出的总和减去输入,仍然保证为零。

一个块的建立来自:

当区块以这种方式构建时,MimbleWimble区块提供了非常好的隐私保证:

然而,区块仍然可验证!

回到前面的示例块,I1和I2花费的输出x1和x2必须先前出现在区块链中。因此,在添加此区块后,这些输出以及I1和I2也可以从整体链中移除,因为它们不会影响整体总和。

总而言之,我们得出结论:任何时间点的链状态(不包括区块头)都可以通过这些信息来概括:

第一条信息可以使用块高度(与起始块的距离)推导出来。未使用的输出和交易内核都非常紧凑。这有两个重要的后果:

另外,未使用的交易输出(即UTXO)组成的完整集是不可篡改的,即使只是想去添加或删除一些交易输出。这样做会导致交易内核中所有致盲因因子的总和与输出中致盲因素的总和不同。

在本文中,我们介绍了基于MimbleWimble区块链的基本原则。 通过使用椭圆曲线密码的附加属性,我们能够构建完全不透明但仍可以正确验证的交易。 通过将这些属性,我们可以消除大量区块链数据,从而实现新对等点的大规模部署和快速同步。

【区块链】什么是比特币地址?

比特币地址是一串由字母和数字组成的26位到34位字符串,看起来有些像乱码。但它就是你个人的比特币账户,相当于你的银行卡卡号,任何人都可以通过你的比特币地址给你转账比特币。

它与比特币私钥不同,不会因为信息泄露而造成比特币丢失,因此你可以将比特币地址放心的告诉任何人。

通过区块链浏览器可以查看每个比特币地址所有的转账交易记录。

常用的比特币区块链浏览器有:

我们常用的比特币地址格式一般有如下四种。

1、BASE58格式

BASE58格式是人们常见的比特币地址格式,一般由1开头的。

例如:1M8DPUBQXsVUNnNiXw5oFdRciguXctWpUD

2、HASH160格式

HASH160格式为RIPEMD160算法对130位公钥的SHA256签名进行计算得出的结果 。

例如:fbfb58defc272942fc31d00c007b59aa4cb5087a

3、WIF压缩格式

WIF压缩格式即钱包输入格式,是将BASE58格式进行压缩后的结果130位公钥格式 这是最原始的由ECDSA算法计算出来的比特币公钥。

例如:

0469B0E479C9A358908DB9CF4628BDD643C3F81C4F0096AAD442DA6CA8BCC4FD86A8D47D7A865E178B6D062CC9B702908973952062A1D767DA9B2BD2095D5CCF6E

4、60位公钥格式

60位公钥格式即130位公钥进行压缩后得出的结果。

例如:

0269B0E479C9A358908DB9CF4628BDD643C3F81C4F0096AAD442DA6CA8BCC4FD86

比特币是建立在数学加密学基础上的,中本聪大神用了椭圆加密算法(ECDSA)来产生比特币的私钥和公钥。

由私钥是可以计算出公钥的,公钥的值经过一系列数字签名运算会得到比特币地址。

比特币地址是由算法随机生成,那么就会有人问,既然都是随机生成的,那么比特币的地址会不会重复呢?关于这个问题,想必就更不用担心。

因为比特币的私钥长度是256位的二进制串,那么随机生成的两个私钥正好重复的的概率是2 ^ 256 ≈ 10 ^ 77之一,这个数字大到你根本无法想象,比中彩票的概率还要小好多;所以不用担心的啦,每个人的比特币地址都是独一无二的。

区块链格式的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于区块链数据格式、区块链格式的信息别忘了在本站进行查找喔。

标签: #区块链格式

  • 评论列表

留言评论