
区块链技术剖析
文章平均质量分 91
本专栏旨在深入剖析区块链技术实现,包含核心代码的讲解。
http://learnblockchain.cn
Tiny熊
区块链技术专家,《精通以太坊智能合约开发》的作者,北京航空航天大学硕士,创新工场高级工程师,猎豹移动技术项目负责人,以太坊基金会讲师,登链科技创始人兼CTO。对底层公链技术,区块链技术落地都有深入研究。
展开
-
Foundry 中文文档发布啦
Foundry是一个Solidity智能合约开发工具链。Foundry管理您的依赖关系、编译项目、运行测试、部署,并允许您通过命令行和Solidity 脚本与链交互。是基于官方 Foundry book 的翻译,全面介绍 Foundry 所有功能。原创 2023-01-11 10:04:40 · 979 阅读 · 0 评论 -
跨链技术的分析和思考
当前的区块链底层技术平台百花齐放,不同的业务、不同的技术底层的区块链之间缺乏统一的互联互通的机制,这极大限制了区块链技术和应用生态的健康发展。跨链的需求由此而来,本文通过分析几种主流的跨链方案探讨跨链技术的本质及相应的解决思路。跨链的类型跨链交互根据所跨越的区块链底层技术平台的不同可以分为同构链跨链和异构链跨链:同构链之间安全机制、共识算法、网络拓扑、区块生成验证逻辑都一致,它们之间的跨...原创 2019-03-25 23:18:37 · 3061 阅读 · 0 评论 -
寻找一种易于理解的一致性算法(扩展版)
摘要Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如领导人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。从一个用户研究的结果可以证明,对于学生而言,Raft...原创 2019-03-24 23:28:20 · 3186 阅读 · 0 评论 -
如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理
这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。导入账号预备知识从用户需求上来讲,导入用户已经存在的账号是有必要的。 不过从安全性考虑,当你之前使用的是一个非官方、非开源的钱包产品时(尤其是小众钱包),或者之前没有对私钥、助记词、Keysotre文件小心保存时。正确的做法是提示用户:在新的钱包重新...原创 2019-03-23 00:58:39 · 525 阅读 · 0 评论 -
登链钱包(一款功能强大的以太坊钱包)完全开源
你是否和我前段时间一样,苦苦的寻找一款好用的开源以太坊钱包,你会发现可用都很少,因为很多钱包说开源,仅仅是开源部分代码,现在不需要再找了,登链钱包完全开源,登链钱包完全开源,登链钱包完全开源,重要的事情说三遍。再也不用傻乎乎找人开发以太坊钱包了, 直接拿去用吧;再也不用担心私钥会被上传到别人的服务器上。写在前面区块链是开放的,很难想象一个封闭的项目如何产生信任,开源一直是区块链社区所倡导...原创 2019-03-10 01:46:30 · 2139 阅读 · 0 评论 -
IPFS 使用入门
在上一篇文章介绍了IPFS要做什么, 本篇文章介绍下IPFS怎么用, 按照本站的风格,我不会仅仅把一个个命令列出来,同时会说明命令在后面为我们做了什么。IPFS 安装要使用IPFS, 第一步肯定是先把IPFS安装好,IPFS在Mac OS X 、Linux及Window平台均有提供, 可以通过这个链接下载对应平台可执行文件的压缩包。对于Mac OS X 及 Linux 平台,使用一下命令进...原创 2018-12-28 09:38:26 · 2708 阅读 · 1 评论 -
深入理解Plasma(四)Plasma Cash
这一系列文章将围绕以太坊的二层扩容框架 Plasma,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。在上一篇文章中我们已经理解了 Plasma 的最小实现 Plasma MVP 如何使用 UTXO 模型实现 Plasma 链下扩容的核心思想。但由于 Plasma MVP 本身过于简单,并不能用于实际的生产环...原创 2018-11-28 15:31:19 · 1445 阅读 · 1 评论 -
深入理解Plasma(三)Plasma MVP
这一系列文章将围绕以太坊的二层扩容框架 Plasma,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍 Plasma 的一个最小实现 Plasma MVP(Minima Viable Plasma)。在上一篇文章中我们已经理解了 Plasma 中的一些关键操作,但是 Plasma 是一套框架,如果脱离了实际的应用,仍然很难彻底理解它。因此本篇将详细介绍 Plama...原创 2018-11-11 23:54:50 · 3710 阅读 · 0 评论 -
深入理解Plasma(二)Plasma 细节
这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要对 Plasma 一些关键操作的细节进行剖析。在上一篇文章中我们已经理解了什么是 Plasma 框架以及它是如何运行的,这一篇文章将对其运行过程中的一些关键部分,包括 Plasma 提交区块的过程,当有恶意行为发生时如何构建防伪证明以及如何退出 Plasma 子链等进行剖析。需要注...原创 2018-11-04 23:17:58 · 4321 阅读 · 0 评论 -
深入理解Plasma(一)Plasma 框架
这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章作为开篇,主要目的是理解 Plasma 框架。Plasma 作为以太坊的二层扩容框架,自从 2017 年被 Joseph Poon(Lightning Network 创始人)和 Vitalik Buterin (Ethereum 创始人)提出以来[1],一直是区块链从业人员关注的焦点...原创 2018-10-22 09:46:36 · 3992 阅读 · 2 评论 -
如何使用Web3.js API 在页面中进行转账
本文介绍如何使用Web3.js API 在页面中进行转账,是我翻译的文档Web3.js 0.2x 中文版 及 区块链全栈-以太坊DAPP开发实战 中Demo的文章说明。写在前面阅读本文前,你应该对以太坊、智能合约、钱包的概念有所了解,如果你还不了解,建议你先看以太坊是什么 除此之外,你最好还了解一些HTML及JavaScript知识。转账UI 页面的编写转账UI主体的...原创 2018-09-14 11:51:49 · 2236 阅读 · 0 评论 -
以太坊 web3.js 文档翻译及说明
这些天,为了录制以太坊DAPP开发实战课程,我准备把web3文档全部翻译一下(并做适当的补充),目前web3.js 0.20.x 版本 已经翻译完成,欢迎大家前往查阅。这里还几个实用DEMO,供大家参考:使用web3.js API在页面中转账web3.js 0.20 API 使用Demoweb3.js 1.0 文档中文版 正在翻译中,请大家关注更新。web3介绍Web...原创 2018-09-09 09:48:11 · 658 阅读 · 0 评论 -
Web3.js 0.20.x API 中文版翻译
文档原始链接为:https://web3.learnblockchain.cn/0.2x.x/,欢迎大家前往查阅,本文只是节选开头部分的介绍及API列表索引,以下为翻译正文:为了开发一个基于以太坊的去中心化应用程序,可以使用web3.js库提供的web3对象, 在底层实现上,web3通过RPC调用与本地节点通信, web3.js可以与任何暴露了RPC接口的以太坊节点连接。web3 包含下面...原创 2018-09-06 16:13:30 · 1039 阅读 · 0 评论 -
程序员如何切入区块链去中心化应用开发
前段时间一个以太坊游戏应用:Fomo3D异常火爆,在短短的几天内就吸引了几万的以太币投入游戏,第一轮游戏一个“黑客”用了一个非常巧妙的利用以太坊规则成为了最终赢家,拿走了1万多以太币奖金。区块链应用的价值由这个游戏反映的淋漓尽致,Fomo3D游戏能够成功核心所依赖的是以太坊提供的一个可信、不可篡改平台。当游戏的规则确定之后,一切都按规则运行,无人可干预。今天这篇就来介绍一下程序员如何切入去中心...原创 2018-09-05 14:28:11 · 3241 阅读 · 0 评论 -
区块链技术实战学习路线图
引言给迷失在如何学习区块链技术的同学一个指引,区块链技术是随比特币诞生,但区块链技术支撑着比特币的运行,因此要搞明白区块链技术,应该先了解下比特币。比特币如果你是还不知比特币是什么,那就看看比特币是什么基础入门接下来可以通过下面这几篇文章了解比特币大概的运行原理: * 区块链记账原理 通过这篇可以了解到区块链是一个怎样的结构 * 比特币所有权及隐私问题 通过这篇可以了解到地址...原创 2017-12-19 22:04:10 · 11868 阅读 · 4 评论 -
智能合约语言 Solidity 教程系列10 - 完全理解函数修改器
这是Solidity教程系列文章第10篇,带大家完全理解Solidity的函数修改器。 Solidity系列完整的文章列表请查看分类-Solidity。写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么欢迎订阅区块链技术专栏阅读更全面的分析文章。函数修改器(Function Modifiers)函数修改器(...原创 2018-04-10 22:29:52 · 789 阅读 · 0 评论 -
Web3与智能合约交互实战
写在前面在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽然让很多程序员感到兴奋(黑客帝国的既视感?),但不可能指望普通用户通过命令行使用Dapp。因此,我们需要一种友好的方式(比如一个web页面)来与智能合约交互,于是问题的答案就是web3.js。Web3.jsWeb3.js是以太坊官方的Javascript API,可以帮助...原创 2018-05-16 16:26:15 · 3574 阅读 · 1 评论 -
搭建智能合约开发环境Remix IDE及使用
目前开发智能的IDE, 首推还是Remix, 而Remix官网, 总是由于各种各样的(网络)原因无法使用,本文就来介绍一下如何在本地搭建智能合约开发环境remix-ide并介绍Remix的使用。写在前面Remix 是以太坊智能合约编程语言Solidity IDE,阅读本文前,你应该对以太坊、智能合约有所了解, 如果还不了解,建议先看以太坊是什么。Remix IDE 介绍Rem...原创 2018-06-21 09:16:12 · 2593 阅读 · 1 评论 -
什么是EOS(不一样的角度看柚子)
是时候给写写EOS了,现在EOS主网已经上线,尽管我个人不是很喜欢EOS项目(不过也一直在关注EOS),但是不可否认EOS这个争议性很大的项目给区块链世界带来的变化。写在前面阅读本文前,如果了解过比特币及以太坊,可以更好的理解本文。欢迎订阅专栏:区块链技术 指引你从头开始学区块链技术。本文出现EOS是指EOS.io公链项目,不是指以太坊上的EOS Token。EOS 简介...原创 2018-07-18 16:20:31 · 1712 阅读 · 0 评论 -
Python实现一条基于POS算法的区块链
区块链中的共识算法在比特币公链架构解析中,就曾提到过为了实现去中介化的设计,比特币设计了一套共识协议,并通过此协议来保证系统的稳定性和防攻击性。 并且我们知道,截止目前使用最广泛,也是最被大家接受的共识算法,是我们先前介绍过的POW(proof of work)工作量证明算法。目前市值排名前二的比特币和以太坊也是采用的此算法。虽然POW共识算法取得了巨大的成功,但对它的质疑也从来未曾...原创 2018-08-07 10:44:54 · 5270 阅读 · 0 评论 -
智能合约最佳实践 之 Solidity 编码规范
每一门语言都有其相应的编码规范, Solidity 也一样, 下面官方推荐的规范及我的总结,供大家参考,希望可以帮助大家写出更好规范的智能合约。命名规范避免使用小写的l,大写的I,大写的O 应该避免在命名中单独出现,因为很容易产生混淆。合约、库、事件、枚举及结构体命名合约、库、事件及结构体命名应该使用单词首字母大写的方式,这个方式也称为:帕斯卡命名法或大驼峰式命名法...原创 2018-05-04 11:08:25 · 1643 阅读 · 1 评论 -
详解 Solidity 事件Event - 完全搞懂事件的使用
很多同学对Solidity 中的Event有疑问,这篇文章就来详细的看看Solidity 中Event到底有什么用?写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么,另外 本文在监听合约事件是对上一篇Web3与智能合约交互实战进行补充,如果阅读了上一篇可以更好的理解本文。什么是事件Evne...原创 2018-05-16 12:06:04 · 8236 阅读 · 2 评论 -
如何编写一个可升级的智能合约
区块链信任基础的数据不可修改的特性,让它传统应用程序有一个很大的不同的地方是一经发布于区块链上就无法修改(不能直接在原有的合约上直接修改再重新发布)。写在前面阅读本文前,你应该对以太坊、智能合约及Solidity语言有所了解,如果你还不了解,建议你先看以太坊是什么当智能合约出现bug一方面正式由于智能合约的不可修改的特性,因为只要规则确定之后,没人能够修改它,大家才能够...原创 2018-03-19 10:05:15 · 2856 阅读 · 0 评论 -
剖析非同质化代币ERC721-全面解析ERC721标准
什么是ERC-721?现在我们看到的各种加密猫猫狗狗都是基于ERC-721创造出来的,每只都是一个独一无二的ERC-721代币,不过ERC-721在区块链世界远不止猫猫狗狗,它更大的想象空间在于将物理世界的资产映射到区块链上。本文就来剖析下什么是ERC721.ERC721是什么在创建代币一篇,我们讲到过ERC20代币, 和ERC20一样,ERC721同样是一个代币标准,ERC72...原创 2018-03-26 09:39:33 · 4327 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列9 - 错误处理
这是Solidity教程系列文章第9篇介绍Solidity 错误处理。 Solidity系列完整的文章列表请查看分类-Solidity。写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么欢迎订阅区块链技术专栏阅读更全面的分析文章。什么是错误处理错误处理是指在程序发生错误时的处理方式,...原创 2018-04-08 10:02:37 · 979 阅读 · 0 评论 -
美链BEC合约漏洞技术分析
这两天币圈链圈被美链BEC智能合约的漏洞导致代币价值几乎归零的事件刷遍朋友圈。这篇文章就来分析下BEC智能合约的漏洞漏洞攻击交易我们先来还原下攻击交易,这个交易可以在这个链接查询到。 我截图给大家看一下: 攻击者向两个账号转移57896044618…000.792003956564819968个BEC,相当于BEC凭空进行了一个巨大的增发,几乎导致BEC价格瞬间归零。 下面我们来...原创 2018-04-26 09:52:40 · 1562 阅读 · 4 评论 -
智能合约语言 Solidity 教程系列7 - 以太单位及时间单位
这是Solidity教程系列文章第7篇介绍以太单位及时间单位,系列带你全面深入理解Solidity语言。写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么欢迎订阅区块链技术专栏阅读更全面的分析文章。货币单位(Ether Units)一个数字常量(字面量)后面跟随一个后缀wei,原创 2018-02-02 22:02:04 · 923 阅读 · 0 评论 -
什么是拜占庭将军问题
接触区块链的同学,多少都听说过拜占庭将军问题,经常看到或听到某某区块链使用某某算法解决了拜占庭将军问题,那么究竟什么是拜占庭将军问题呢?什么是拜占庭将军问题也被称为“拜占庭容错”、“拜占庭将军问题”。 拜占庭将军问题是Leslie Lamport(2013年的图灵讲得住)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。原创 2018-02-07 12:24:23 · 1433 阅读 · 0 评论 -
如何通过以太坊智能合约来进行众筹(ICO)
前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约。写在前面本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么众筹先简单说下众筹的概念:一般是这样的,我一个非常好的想法,但是我没有钱来做这事,于是我把这个想法发给大家看,说:我做这件事需要5百万,大家有没有...原创 2018-03-01 11:13:51 · 7399 阅读 · 1 评论 -
智能合约语言 Solidity 教程系列8 - Solidity API
这是Solidity教程系列文章第8篇介绍Solidity API,它们主要表现为内置的特殊的变量及函数,存在于全局命名空间里。写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么欢迎订阅区块链技术专栏阅读更全面的分析文章。Solidity API 主要表现为Solidity 内置的特殊的变量及...原创 2018-03-15 15:37:21 · 1310 阅读 · 0 评论 -
一步步教你创建自己的数字货币(代币)进行ICO
本文从技术角度详细介绍如何基于以太坊ERC20创建代币的流程.写在前面本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么代币Token如果不那么追求精确的定义,代币就是数字货币,比特币、以太币就是一个代币。 利用以太坊的智能合约可以轻松编写出属于自己的代币,代币可以代表任何可以交易的东西,如:积分、财产原创 2018-01-22 18:01:37 · 21972 阅读 · 4 评论 -
给代币添加高级功能-代币管理、增发、兑换、冻结等
本文主要介绍代币高级功能的实现: 代币管理、代币增发、代币兑换、资产冻结、Gas自动补充。 写在前面在上一篇:一步步教你创建自己的数字货币(代币)进行ICO中我们实现一个最基本功能的代币,本文将在上一遍文章的基础上,讲解如果添加更多的高级功能。实现代币的管理者虽然区块链是去中心化的,但是实现对代币(合约)的管理,也在许多应用中有需求,为了对代币进行管理,首先需要给合约添加原创 2018-01-29 13:05:00 · 5848 阅读 · 3 评论 -
智能合约语言 Solidity 教程系列6 - 结构体与映射
写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么本系列文章一部分是参考Solidity官方文档(当前最新版本:0.4.20)进行翻译,另一部分是Solidity深入分析,这部分请订阅区块链技术专栏阅读。结构体(Structs)Solidity提供struct来定义自定义类型,自定义的类型是引用类型。原创 2017-12-28 20:58:45 · 1896 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列5 - 数组介绍
写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么本文前半部分是参考Solidity官方文档(当前最新版本:0.4.20)进行翻译,后半部分对官方文档中没有提供代码的知识点补充代码说明(订阅专栏阅读)。数组(Arrays)数组可以声明时指定长度,也可以是动态变长。对storage存储的数组来说,元素类型可以是任原创 2017-12-25 09:52:21 · 2025 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列4 - 数据存储位置分析
Solidity教程系列第4篇 - Solidity数据位置分析。写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么这部分的内容官方英文文档讲的不是很透,因此我在参考Solidity官方文档(当前最新版本:0.4.20)的同时加入了深入分析部分,欢迎订阅专栏。数据位置(Data location)在系列第一篇,原创 2017-12-21 22:32:44 · 1424 阅读 · 0 评论 -
智能合约语言Solidity教程系列2 - 地址类型介绍
Solidity教程系列第二篇 - Solidity地址类型介绍. 写在前面Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么本文前半部分是参考Solidity官方文档(当前最新版本:0.4.20)进行翻译,后半部分是结合实际合约代码实例说明类型的使用(仅针对专栏订阅用户)。地址类型(Address)地址类型address是原创 2017-12-13 10:52:38 · 1481 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列3 - 函数类型
Solidity 教程系列第三篇 - Solidity 函数类型介绍。写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么本文前半部分是参考Solidity 官方文档(当前最新版本:0.4.20)进行翻译,后半部分函数可见性( public, external, internal, privite )深度分析(仅针对原创 2017-12-14 20:34:28 · 1165 阅读 · 0 评论 -
Solidity教程序列1 - 类型介绍
现在的Solidity中文文档,要么翻译的太烂,要么太旧,决定重新翻译下。写在前面Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解。 Solidity语法的介绍会是一系列文章,本文是第一篇:介绍Solidity的变量类型。本文前半部分是参考Solidity官方文档(当前最新版本:0.4.20)进行翻译,前半部分是实际合约代码实例说明类型的使用。类型Solidi翻译 2017-12-07 09:32:56 · 2096 阅读 · 0 评论 -
Geth 控制台使用及 Web3.js 使用实战
在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3。 Geth 控制台(REPL)实现了所有的web3 API及Admin API, 使用好 Geth 就是必修课。结合Geth命令用法阅读效果更佳。写在前面阅读本文之前,你需要对以太坊(区块链)有初步的了解,如果你不知道以太坊是什么,请先阅读以太坊是什么。 如果你在我的小专栏之外的地方阅读到本文,你可能只能阅读本文的节选,阅读原创 2017-12-01 23:57:39 · 1674 阅读 · 0 评论 -
区块链技术术语表 - 以太坊篇
区块链技术相关表包含了常见的区块链术语(概念)及其解释,及进一步阅读参考文章,以加深理解。 方便大家阅读博客或网络上其他文章时做快速索引,比特币相关术语参考比特币篇以太坊一个基于区块链的去中心化应用平台。阅读以太坊开发入门指南了解更多以太(Ether)以太坊网络的内部基础的加密代币。以太是用来支付交易和以太坊交易的计算费用。智能合约一套以数字形式定义的承诺(promises),包括合约参与方可以在原创 2017-11-29 23:44:30 · 1948 阅读 · 0 评论