章节 区块链 – 介绍 区块链 – 发展历史 区块链 – 比特币 区块链 – 应用发展阶段 区块链 – 非对称加密 区块链 – 哈希(Hash) 区块链 – 挖矿 区块链 – 链接区块 区块链 – 工作量证明 区块链 – 交易流程与挖矿 区块链 – 矿工的激励 区块链 – 默克尔树(Merkle Tree) 区块链 – 付款确认 区块链 – 处理冲突 区块链 – 用户隐私 区块链 – 防范攻击 区块链 – 进一步深入了解 区块链作为分布式账本,原则上网络中的每个节点都应包含整个区块链中全部区块,…
目的:解决由于区块链过长,导致节点硬盘存不下的问题. 方法:只需保留交易的哈希值. 区块链作为分布式账本,原则上网络中的每个节点都应包含整个区块链中全部区块,随着区块链越来越长,节点的硬盘有可能放不下.区块链中引入了默克尔树解决这个问题. 区块链中,为节省空间,只保存交易的哈希值,不保存交易本身的信息,哈希值对于校验来说足够了. 默克尔树很简单,具体来说,一个区块中的所有交易都会求取哈希值,得到的哈希值,再两两组合成新文本求取哈希值,以此类推,直到生成最后一个哈希值,即根哈希值,这些哈希值组成的…
转载~Merkle Tree(默克尔树)算法解析 /*最近在看Ethereum,其中一个重要的概念是Merkle Tree,以前从来没有听说过,所以查了些资料,学习了Merkle Tree的知识,因为接触时间不长,对Merkle Tree的理解也不是很深入,如果有不对的地方,希望各位大神指正*/ Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树.Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值.非叶节点是…
☞ ░ 前往老猿Python博文目录 ░ 一.简介 默克尔树(Merkle tree,MT)又翻译为梅克尔树,是一种哈希二叉树,树的根就是Merkle根. 关于Merkle树老猿推荐大家阅读<Merkle树>这篇文章. Merkle树和Merkle根在区块链中用于维护账本校验数据的完整性和不可篡改,并在变动时快速定位变化的交易数据.在区块链中常用的hash算法为SHA256,关于SHA算法请参考<深入理解SHA系列加密算法>. 二.思考 为什么说在比较两组相同数据量的数据时,将其构…
Solidity支持条件语句,让程序可以根据条件执行不同的操作.条件语句包括: if if...else if...else if 语法 if (条件表达式) { 被执行语句(如果条件为真) } 示例 展示if语句用法. pragma solidity ^0.5.0; contract SolidityTest { uint storedData; constructor() public { storedData = 10; } function getResult() public view…
与其他语言类似,Solidity语言支持循环结构,Solidity提供以下循环语句. while do ... while for 循环控制语句:break.continue. Solidity – while循环 语法 Solidity 中, while循环的语法如下: while (表达式) { 被执行语句(如果表示为真) } 示例 pragma solidity ^0.5.0; contract SolidityTest { uint storedData; constructor() p…
Solidity – 算术运算符 Solidity 支持的算术运算符,如下表所示: 假设变量A的值为10,变量B的值为20. 序号 运算符与描述 1 + (加)求和例: A + B = 30 2 – (减)相减例: A – B = -10 3 * (乘)相乘例: A * B = 200 4 / (除)相除例: B / A = 2 5 % (取模)取模运算例: B % A = 0 6 ++ (递增)递增例: A++ = 11 7 — (递减)递减例: A– = 9 示例 下面的代码展示了如何使用算…
智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethereum) – 智能合约开发概述 支持智能合约的区块链 虽然以太坊(Ethereum)是最流行支持智能合约的区块链平台,但它并不是唯一支持智能合约的平台. 超级账本(Hyperledger) 是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目.通过创建分布式账本的公开标准,实…
Solidity 支持三种类型的变量: 状态变量 – 变量值永久保存在合约存储空间中的变量. 局部变量 – 变量值仅在函数执行过程中有效的变量,函数退出后,变量无效. 全局变量 – 保存在全局命名空间,用于获取区块链相关信息的特殊变量. Solidity 是一种静态类型语言,这意味着需要在声明期间指定变量类型.每个变量声明时,都有一个基于其类型的默认值.没有undefined或null的概念. 状态变量 变量值永久保存在合约存储空间中的变量. pragma solidity ^0.5.0; co…
一个 Solidity 源文件可以包含任意数量的合约定义.import指令和pragma指令. 让我们从一个简单的 Solidity 源程序开始.下面是一个 Solidity 源文件的例子: pragma solidity >=0.4.0 <0.6.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view retu…