![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
区块链
linyonghui1213
sfwe
展开
-
【以太坊基础系列-001】merkle树
merkle树 区块链中的每个区块都包含了产生于该区块的所有交易,且以Merkle树表示。 默克尔树(又叫哈希树)是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。默克尔树的特点是,底层数据的任何变动,都会传递到其父亲节点,一直到树根。 ...转载 2018-09-28 08:55:39 · 1388 阅读 · 0 评论 -
【以太坊基础系列-004】深入浅出以太坊MPT(Merkle Patricia Tree)
1 Trie树Trie树,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。在图示中,键标注在节点中,值标注在节点之下。每一...转载 2019-01-12 16:05:28 · 825 阅读 · 0 评论 -
【以太坊基础系列-005】数据保存levelDB
LevelDb日知录之一:LevelDb 101 说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat。这两位是Google公司重量级的工程师,为数甚少的Google Fellow之二。 Jeff Dean其人:http://research.google.com/pe...转载 2019-01-12 16:08:07 · 1026 阅读 · 0 评论 -
【智能合约系列003-以太坊安全之 Parity 第一次安全事件漏洞分析】
截止目前,Parity 多重签名钱包共发生过两次安全事件,第一次发生在 2017年07月19日,涉及 Parity 1.5 及以上版本,造成 15万以太币约 3000万美元被盗,第二次发生在 2017年11月07日,致使约 50万枚以太币被锁在合约中无法取出,当时价值大约 1.5亿美元,本篇先对发生于 7月19日的第一次安全漏洞做一下分析,下一篇再分析 2017年11月7日的安全漏洞。 ...转载 2019-01-08 14:38:03 · 489 阅读 · 0 评论 -
【智能合约系列004-以太坊安全之 Parity 第二次安全事件漏洞分析】
Parity 多签钱包的第二次漏洞发生于 2017年11月07日,不同于 17年7月19日那次,本次不是资产被黑客盗走,而是合约底层被破坏,导致资产就在那,但却永远也取不出,就像驾船到太平洋最深处,投下一枚硬币,硬币就在那,但你可能再也无法找到它。 本次漏洞导致约 50万枚以太币被锁在多签智能合约里,当时价值大约 1.5亿美元。下面我们来分析下这次漏洞的原理。漏洞回放 ...转载 2019-01-08 14:38:32 · 465 阅读 · 0 评论 -
【智能合约系列005-以太坊短地址攻击】
0x00 基础知识EVM虚拟机在解析合约的字节码时,依赖的是ABI的定义,从而去识别各个字段位于字节码的什么地方。关于ABI,可以阅读这个文档:https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI一般ERC-20 TOKEN标准的代币都会实现transfer方法,这个方法在ERC-20标签中的定义为:function tra...转载 2019-01-08 14:39:41 · 364 阅读 · 0 评论 -
【智能合约系列006-重入攻击(Reentrancy attack)】
solidity漏洞类型学习笔记(一)以下代码内容皆参考于RICKGRAY师傅之前的文章《以太坊智能合约安全入门了解一下》,在此记录我在复现中发现的一些问题和学习记录。Reentrancy - 重入首先我们先参考代码实现一个类似公共钱包的代码, 1 2 3 4 5 6 7 8 9 10 11 ...转载 2019-01-08 14:40:15 · 1857 阅读 · 0 评论 -
【智能合约系列009-如何做智能合约审计?】
研究报告【Finding The Greedy, Prodigal, and Suicidal Contracts at Scale】)指出,目前在以太坊中,有89%的智能合约代码都或多或少存在安全漏洞/隐患,这显然是一个非常惊人的调查结果,对社区而言也是一个巨大的风险因素。而随着智能合约的增多乃至未来可能的大规模发展,相信对各种合约代码的审计也将会变成一个专门的、专业的领域,并且是不能够、也不应...转载 2019-01-08 14:51:50 · 655 阅读 · 7 评论 -
【智能合约系列008-solidity事件】
在介绍事件前,我们先明确事件,日志这两个概念。事件发生后被记录到区块链上成为了日志。总的来说,事件强调功能,一种行为;日志强调存储,内容。事件是以太坊EVM提供的一种日志基础设施。事件可以用来做操作记录,存储为日志。也可以用来实现一些交互功能,比如通知UI,返回函数调用结果等1。事件当定义的事件触发时,我们可以将事件存储到EVM的交易日志中,日志是区块链中的一种特殊数据结构。日志与合约...转载 2019-01-08 14:51:06 · 448 阅读 · 0 评论 -
【智能合约系列010-solidity编译器修改(增加指令以及扩展函数)】
todo转载 2019-01-08 14:53:12 · 321 阅读 · 0 评论 -
【智能合约系列002-TheDAO悲剧重演,SpankChain重入漏洞分析】
前言在10月8日,区块链项目方SpankChain在medium上发表了一篇文章,并表明其受到了攻击,导致损失了160多个ETH和一些Token,这次攻击事件,相对来说损失金额是较小的,约4万美元,不过值得一提的是:这次攻击事件的起因与2016年闹得沸沸扬扬的TheDAO事件如出一辙!一共被盗走300多万ETH,更为严重的是还间接导致了以太坊硬分叉...自那次事件起,以太坊的智能合约开发...转载 2019-01-08 14:21:26 · 2184 阅读 · 1 评论 -
【以太坊系列-009】在ethereum private chain上进行oraclize的调用操作
说明: 本人使用的是 ubuntu1804-server版本(不要使用live-server,存在缺少部分包。) 在私链中容易遇到问题,本人第一次成功是通过truffle+ethereumjs-testrpc。 私链上不熟悉的人,操作会比较麻烦,容易出问题,并且文档比较少。 本文只是记录oraclize环境的搭建,更多请参阅官网。(更多搭建请参照该系列其余...原创 2018-11-27 19:04:48 · 2333 阅读 · 0 评论 -
【以太坊系列-008】oraclize介绍
IntroductionOracle service builds the bridge between blockchain and the real world, and we are going to introduce an oracle service called Oraclize.The following image describes the underlying mec...转载 2018-11-27 18:54:16 · 564 阅读 · 0 评论 -
【以太坊系列-002】Remix 搭建与简单使用,并支持外部访问
remix是基于浏览器的在线编译器,鉴于网络问题,可能存在登不上去的问题,因此 ,可以搭建自己本地的Remix。 本文是基于virtalbox的ubuntu1804的虚拟机环境,配置是1核2GB内存(建议内存越多越好)。官方在线编译器https://ethereum.github.io/browser-solidityhttps://remix.ethereum.org推...原创 2018-10-27 11:54:31 · 1675 阅读 · 1 评论 -
【以太坊系列-005】使用solc编译solidity智能合约,并生产web3deploy格式的代码
说明本文主要介绍,只通过solc来进行智能合约的部署,更简单的方式是通过remix直接生成。该场景是用于用户自己修改了solc编译器,remix无法使用的情况。1、 代码结构# cat counter.solpragma solidity ^0.4.20;contract Counter { uint count; function Counter(...原创 2018-11-17 14:42:55 · 1233 阅读 · 0 评论 -
【以太坊系列-006】ethereum solidity智能合约在geth控制台上的操作(mapping实践)
说明,本文基于已经部署好的etherum环境,在geth控制台上操作以下命令。文中用到的命令,可以参考该系列的其他文档。1、解锁账号> personal.unlockAccount(eth.accounts[0], "lyh001", 300) # 300是解锁时间,0表示没有限制> eth.defaultAccount=eth.coinbase; # 以上命令如...原创 2018-11-27 17:17:13 · 1429 阅读 · 0 评论 -
【以太坊系列-007】solidity一些函数修饰说明
solidity一些函数修饰说明一、函数可见性分析public - 任意访问private - 仅当前合约内internal - 仅当前合约及所继承的合约external - 仅外部访问(在内部也只能用外部访问方式访问)二、函数的限制访问在Solidity中constant、view、pure三个函数修饰词的作用是告诉编译器,函数不改变/不读取状态变量,这样函数执行就可以不消...原创 2018-11-27 17:18:59 · 241 阅读 · 0 评论 -
【以太坊系列-010】通过truffle以及ganache进行代币功能调试
说明: 环境使用ubuntu1804-desktop版本。1 truffle以及ganache1) Truffle Truffle 是最流行的开发框架,能够在本地编译、部署智能合约,使命是让开发更容易。 Truffle 需要以太坊客户端支持,需要支持标准的JSON RPC API。2)Ganache Ganache可以快速启动个人以太坊区块链,并可...原创 2019-01-08 14:20:54 · 2854 阅读 · 1 评论 -
【智能合约系列001-美链BeautyChain (BEC) 溢出漏洞分析】
一、Token地址:https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d二、BEC智能合约源码我们不需要看完以下所有代码,重点关注第三节要分析的内容。pragma solidity ^0.4.16;/** * @title SafeMath * @dev Math operation...转载 2019-01-08 14:21:16 · 684 阅读 · 0 评论 -
【以太坊代码分析系列001-获取合约pure,view数据的流程】
简单说明本文基于geth 1.8.19的代码 测试合约代码 pragma solidity ^0.4.20;contract Counter { uint count; function Counter() public { count = 0; } fu...原创 2019-01-08 14:55:55 · 738 阅读 · 0 评论