区块链
文章平均质量分 89
TurkeyCock
这个作者很懒,什么都没留下…
展开
-
以太坊开发(一)——Truffle和Ganache
Truffle是目前最流行的以太坊开发框架,采用JavaScript编写,支持智能合约的编译、部署和测试。一、安装Truffle1. 首先安装Truffle依赖的NodeJS:curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -sudo apt-get install -y nodejssudo apt-get ...原创 2018-01-25 19:41:50 · 42707 阅读 · 7 评论 -
Plasma MVP完全解析
1.什么是Plasma?众所周知,目前的主流区块链系统普遍存在可扩展性(Scalability)问题。解决该问题一般有下面两种思路:Layer1技术:直接修改底层区块链,比如修改区块大小和结构(2MB区块/SegWit等)、修改共识机制(PoS/DPos/PBFT等)、分片(Sharding)等方案Layer2技术:在底层区块链之上构造新的交易环境,分担主链的负载,代表方案包括状态通...原创 2018-11-27 14:42:58 · 883 阅读 · 0 评论 -
Plasma Cash完全解析
上一篇分析了Plasma MVP的原理和实现,这一篇介绍一下Plasma的另外一个实现版本:Plasma Cash。1.和MVP的区别Plasma Cash和MVP最大的不同在于使用稀疏Merkle树代替了标准Merkle树。我们都知道,Merkle树的好处在于可以利用很少的数据来证明某笔交易“存在”于某个区块中,那么稀疏Merkle树有什么好处呢?除了可以证明某笔交易“存在”于某个区块中以外...原创 2018-11-27 14:47:18 · 831 阅读 · 0 评论 -
Plasma Debit原理分析
上一篇介绍了Plasma Cash,提到它的缺点是代币无法分割,Plasma Debit就是为了解决这个问题应运而生的。回顾一下,在Plasma Cash中,每次充值会产生一个uid作为唯一标识,并记录充值的金额amount。注意,这个amount是不可更改的,这就是代币无法分割的关键所在。Plasma Debit把这个amount扩展成了两个值v和a:v表示从主链上充值的ETH数量,正常情...原创 2018-11-27 14:50:20 · 739 阅读 · 0 评论 -
Solidity中的sha256/keccak256如何正确传参
今天遇到一个需求:用户传递一个字符串过来,跟当前的时间拼在一起取哈希值,作为唯一标识。举个例子,假如用户传递的字符串是abc,当前时间是123,我们来看看标准答案:$ echo -n 'abc123' | shasum -a 2566ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090看起来很简单,就写了下面这段测...原创 2018-12-22 11:49:47 · 12873 阅读 · 0 评论 -
以太坊君士坦丁堡漏洞分析
这两天关于以太坊延迟君士坦丁堡升级的报导铺天盖地,可惜到现在都没看到一篇能把这个漏洞讲透彻的,就由我来给大家解密吧。上一篇文章给大家介绍过EIP 1283,是为了优化SSTORE指令的gas计算方式的,这次的漏洞就出在这个EIP上,可能会导致“重入攻击”。1.什么是“重入攻击”所谓“重入攻击”,指的是在同一笔交易中,合约A调用合约B,而合约B又反过来调用合约A的现象。这种情况是必须被禁止的...原创 2019-01-18 23:26:45 · 471 阅读 · 0 评论 -
分片:QuarkChain技术原理分析
最近听说QuarkChain在韩国热度比较高,于是抽了点时间研究了一下。QuarkChain是一种“sharding-based blockchain”,即基于分片的区块链。它的主要目标是提高区块链的可扩展性(即TPS),同时还要兼顾不可能三角(安全性、去中心化性、可扩展性)。主要竞争对手:以太坊分片:由于历史包袱比较重,实际应用时间不确定OmniLeger:安全性有所妥协,如果要达到10...原创 2019-01-20 02:03:38 · 1789 阅读 · 0 评论 -
以太坊君士坦丁堡升级深入分析
以太坊即将在7080000高度升级到Constantinople(君士坦丁堡)版本,预计时间为1月16号。这是以太坊第三阶段Metropolis(大都会)的第2个版本,也是最后一个版本。在这之后,以太坊将步入最终阶段Serenity(宁静)。这次升级一共涉及5个EIP,改动不算大,网络上也已经有很多文章,但大多是一些语焉不详的简短翻译,笔者试图深入分析一下各项改动的具体细节。EIP 145: ...原创 2019-01-15 10:01:19 · 766 阅读 · 1 评论 -
一分钟了解硬件钱包
所谓硬件钱包,就是把你的私钥保存在一个不联网的设备上。因为不联网,所以其他人永远都无法窃取你的私钥。硬件钱包品牌繁多,比如长得像车钥匙的Trezor:长得像U盘的Ledger Nano:长得像手机的Ellipal:甚至还有长得像信用卡的:那么硬件钱包怎么用呢?以Trezor为例,首先会要求你设置一个PIN码,类似于你的手机密码:然后就是创建你的私钥了,创建完以后会显示助记词:...原创 2019-02-02 23:03:56 · 4287 阅读 · 0 评论 -
区块链技术分享导读目录(持续更新)
还记得第一次接触到以太坊源码时,就被它作为“世界计算机”的宏伟构想深深吸引。实际上,可以认为以太坊是在试图屏蔽底层硬件的差异,制定统一的虚拟指令集,并利用去中心化维护整个系统的稳定性。此外,还可以把以太坊看成一个去中心化的App Store,任何人都可以自由发布自己的app而不用担心各种监管和下架,而且最重要的是,永不宕机。随着在区块链行业研究的深入,越来越感觉到知识的纷繁庞杂,于是决定把这些学...原创 2019-03-09 13:42:56 · 1505 阅读 · 3 评论 -
智能合约安全:短地址攻击
昨天一位博友提到短地址攻击的问题,感觉挺有意思的,就花了点时间研究了一下。1.什么是短地址攻击大家都知道,如果我们想调用智能合约的函数,需要在交易的payload字段中填充一段字节码。以ERC20的transfer()的函数为例,函数原型为:function transfer(address to, uint amount) public returns (bool success);我们...原创 2018-11-14 10:13:51 · 3381 阅读 · 2 评论 -
交易是否是零和游戏?
最近李笑来的一本新书《韭菜的自我修养》引发了热议,于是花了一个小时的时间拜读了一下。看完后总结一下,中心思想可以概括为以下三点:你没有赚到钱,是因为买入的时机不对不要高估自己的认知水平,大部分人都是在牛市的尾巴上入场的。怎么解决?等待下一个买入时机。降低交易频次买定离手,少做波段。点付大头有一句名言:如果某个币你不愿意持有一年,那就不要持有一天。优化“回报风险比”(提高分子,降低分母...原创 2018-09-19 10:35:52 · 843 阅读 · 0 评论 -
WebAssembly的前生今世
1.先从Javascript说起上帝花了7天时间创造了世界,Brendan Eich大神在1995年花了10天时间创造了Javascript。为什么Javascript被设计为解释型语言?Javascript的初衷是面向非专业编程人员和设计师的,因此大神认为不应该让这些不专业的人理解编译器这么专业的概念。解释型语言 vs. 编译型语言这两个概念其实不太严谨,应该改为“主流实现为解释器的语...原创 2018-10-24 00:44:29 · 764 阅读 · 0 评论 -
WebAssembly初体验
上篇介绍了WebAssembly的前生今世,这篇准备写几个例子试玩一下。1.安装Emscripten首先肯定是先安装Emscripten,这是一个toolchain,可以把C/C++代码编译成asm.js和WASM字节码。内部其实分为三部分:调用编译器前端Clang把C/C++代码编译成LLVM字节码调用编译器后端Fastcomp把LLVM字节码编译成asm.js调用Binaryen的...原创 2018-10-24 00:52:54 · 4190 阅读 · 1 评论 -
Go interface深入分析
1.鸭子类型(Duck Typing)If it walks like a duck and it quacks like a duck, then it must be a duck.interface是一种鸭子类型无需显示声明,只要对象实现了接口声明的的全部方法,就实现了该接口把对象的类型检查从编译时推迟到运行时好处:松耦合可以先实现类型,再抽象接口2.值receiv...原创 2018-10-24 00:55:59 · 1696 阅读 · 0 评论 -
Call,CallCode,DelegateCall,StaticCall,你分得清吗?
孔乙己懂“回”字的四种写法,你会智能合约的四种调用方式吗?在中大型的项目中,我们不可能在一个智能合约中实现所有的功能,而且这样也不利于分工合作。一般情况下,我们会把代码按功能划分到不同的库或者合约中,然后提供接口互相调用。在Solidity中,如果只是为了代码复用,我们会把公共代码抽出来,部署到一个library中,后面就可以像调用C库、Java库一样使用了。但是library中不允许定义任何...原创 2018-11-07 23:45:54 · 9354 阅读 · 3 评论 -
Bancor协议揭秘
二战结束前夕,44国政府受美国之邀在美国新罕布什尔州布雷顿森林举行会议,商讨战后经济复苏和恢复金融秩序。美国代表为哈里·迪克特·怀特,英国代表为约翰·梅纳德·凯恩斯。凯恩斯出于英国经济的考虑,试图与美国争夺全球金融霸权,提出了著名的“国际清算同盟计划”,也称“凯恩斯计划”。该计划提议建立全球中央银行,并发行超主权货币Bancor用于取代黄金,作为国际清算货币。Bancor的初始分配则以二战前三年的...原创 2018-11-14 10:09:00 · 840 阅读 · 0 评论 -
从geth切换到parity遇到的那些坑
最近需要搭建以太坊全节点,刚开始用的是geth,同步了1整天发现最新的70~80个块总是同步不下来,网上一查很多人遇到过这个问题,据说跟SSD的读写速度有关,无奈之下只能放弃,改用parity。parity是一个和geth类似的以太坊客户端程序,由以太坊黄皮书作者Gavin Woods领导,采用Rust语言编写。试用了一下体验还是挺棒的,同步Ropsten的数据只需要几个小时的时间。但是,par...原创 2019-08-20 08:51:18 · 4105 阅读 · 0 评论