从比特币开始
这篇文章的定位会比较科普,尽量用类比的方法将比特币的基本原理讲出来。这篇文章不会涉及算法和协议中比较细节的部分,打算后面会再写一篇程序员视角下的比特币原理,那里会从技术人员的视角对比特币系统中较为关键的数据结构、算法和协议进行一些讲解。在这篇文章中我会给出一个虚拟的村庄叫“比特村”,整个文章会以讲故事的方式,逐步告诉大家比特币提出的动机、解决了什么问题以及一些关键组件的目标和设计方案。
- 比特币的原理是什么?
- 为什么这个无人管理的体系可以成功运作?
- 比特币交易的流程是怎么回事?
- 它与区块链又是什么关系?
下面,我尝试回答这些问题,希望帮助大家理解比特币。抛开技术细节,还是很容易解释的。
去年,比特币暴涨,其他币也像雨后春笋一样冒出来,已经有1000多种了。很多人都在问,加密货币(cryptocurrency)的时代,真的来临了吗?将来会不会人类不再使用美元、人民币,改用加密货币?那么多品种,我应该使用哪一种币?要不要现在就去投资一些?
本文提出了一种完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。
区块链
我学习区块链的目标是很明确的,从大的方面来说,目标就两个:
- 1、为了以后进入区块链开发做技术储备;
- 2、为了能指导我如何投资虚拟货币。
那么,为了达到这两个目标,需要学习哪些东西呢?
第一个目标需要学习区块链相关技术,就要知道区块链涉及到哪些技术、区块链的技术原理等;
第二个目标则需要学习虚拟货币相关知识,包括需要解决有哪些虚拟货币、去哪里买虚拟货币、怎么买等问题,以及要了解虚拟货币未来的前景会如何。
梳理之后,就变成了一个个待解决的问题。
下面,我就来尝试,写一篇最好懂的区块链教程。毕竟它也不是很难的东西,核心概念非常简单,几句话就能说清楚。我希望读完本文,你不仅可以理解区块链,还会明白什么是挖矿、为什么挖矿越来越难等问题。
我喜欢在实践中学习,尤其喜欢一代码为基础去了解整个工作机制。如果你我一样喜欢这种学习方式,当你学完本教程时,你将会知道区块链技术是如何工作的。
- Step 1: 创建一个区块链
- Step 2: Blockchain 作为 API 接口
- Step 3: 运行区块链
- Step 4: 一致性(共识)
区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。无论你擅长什么编程语言,都能够参考这种设计去实现一款区块链产品。与此同时,梳理与之相关的知识图谱和体系,帮助大家系统的去学习研究。
以太坊
入门
以太坊是一个全新开放的区块链平台,它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。就像比特币一样,以太坊不受任何人控制,也不归任何人所有——它是一个开放源代码项目,由全球范围内的很多人共同创建。和比特币协议有所不同的是,以太坊的设计十分灵活,极具适应性。在以太坊平台上创立新的应用十分简便,随着Homestead的发布,任何人都可以安全地使用该平台上的应用。
我建议你完整的读一下本文,从一个较高的层面了解一下,然后再挑感兴趣的,一一钻研,也许要花几天时间哦。你最后会发现,区块链就是建立在朴实无华的基本技术之上,一点也不神奇。虽然最近各种ICO把它炒得非常热。每个人都是站在巨人的肩膀上,如果你是程序员,你能对这些项目和技术,理解得更深。所以不要因为其它一些糟粕,而失去了一个提升自己的机会。
本文从0开始搭建了以太坊的开发环境,犹如当年初学其他语言一样,这是我们的第一个hellowork程序,在完成搭建后又进行了账户创建、挖矿、转账等测试。
实操一
实操:如何在私有区块链上编写、部署以及与以太坊进行交互的智能合约
本文作者以极长的篇幅给出了在私有区块链上编写、部署以及与以太坊进行交互的智能合约的较为完整的代码、相关细节步骤、用户界面等。作者是希望借助他这篇文章,大家可以自行在私有以太坊区块链上编写并部署一个智能合约。
实操二
以太坊(1) : 在 CentOS 上搭建以太坊私有链的步骤(图文详细)
- 本文章参看以太坊相关资料,通过个人实践安装,避免大家走很多弯路
- 安装时确保服务器最低是2G的运行内存,不然可能会安装不成功!
- 本次将介绍如何在CentOS上搭建以太坊私有链。
以太坊(2):CentOS下以太坊私有链环境下的账户管理操作、挖矿、转账
现在为大家介绍在以太坊私有链环境下的基本操作。
- 账户的查看
- 挖矿
- 转账
以太坊(3):CentOS下以太坊私有链环境下的智能合约的编写、编译、创建与执行
上回我们做了私有链的搭建和简单的账户管理操作、转账、挖矿,这次我们就通过一个非常简单的智能合约来演示智能合约的编写、编译、创建与执行。大概步骤如下:
- 通过在线IDE并使用Solidity语言进行一个简单智能合约的编写与编译
- 在我们之前创建的私有链环境中创建智能合约(其实智能合约就是所谓的 ”链上代码“)
- 通过智能合约中的方法进行合约的执行或调用
实操三
很多人迷惑于区块链和以太坊,不知如何学习,本文简单说了一下学习的一些方法和资源。
通过本文所述方法和项目中的脚本,我们可以快速的搭建好自己的私有链进行区块链开发测试,本文基于以太坊技术进行搭建,分两个部分,一个是Ubuntu下搭建方法,另一个是Windwos下搭建方法。
网络上不少部署智能合约的文章,但是都有一个共同的特点,就是采用命令行的方式来部署,先是建立SOLC的编译环境,然后部署Geth或者Eth节点,然后一步一步生成钱包、ABI、合约地址进行部署,对初学者来说晦涩难懂而且容易失败,本文主要介绍如何在图形化界面下一键部署和调用智能合约。
目前以太坊上支持三种语言编写智能合约:
- Solidity:类似JavaScript,这是以太坊官方推荐语言,也是最流行的智能合约语言。具体用法参加Solidity文档。
- Serpent:类似Python风格。
- LLL:类似Lisp风格,目前已经被终止了。
可以根据不同的习惯选择不同的高级语言,目前最流行的是Solidity。本文所有的智能合约均为Solidity语言编写。
超级账本 HyperLedger
超级账本(Hyperledger)是linux基金会下的众多项目中的一个。是由IBM、因特尔,还有金融公司,GP摩根以及其他联合机构于2015年提出来的区块链项目,超级账本还包括4个框架项目:Sawtooth、Iroha、Fabric、Burrow。其中广为人知的是Fabric。当前成员大约140个,其中1/4来自中国,现在中国技术组由万达、华为、IBM担任主要负责,负责中国会员和中国需求的提供,以及推进代码。
本教程可以指导你着手为 Hyperledger 编写智能合约。
- 部署
- 如何编写链码
- 实现你的第一个链码
- 与你的第一个链码交互
这篇 developerWorks 快速入门指南适合不熟悉区块链技术,希望快速开始构建和试验区块链网络的应用程序开发人员。文中的简单操作说明将展示如何设置一个基于开源 Hyperledger Fabric 的 IBM Blockchain 网络,如何部署链代码(业务规则),以及如何编写客户端应用程序来简化业务流程和数字化交互。
Hyperledger Fabric V1.0 – 开发者快速入门
本文档演示使用Hyperledger Fabric V1.0来部署一个开发者环境并运行一个简单例子。文档包括创建和加入通道(账本)、客户端认证以及部署和调用智能合约。CLI将用于创建和加入通道(账本),NodeJS SDK将用于客户端身份验证和使用账本的智能合约功能。Docker Compose将用于创建包含三个Peer节点的联盟链、一个独立的Orderer和一个证书颁发机构(CA)。为了加快部署进度,预先生成了基于标准PKI实现的加密要素并打包进fabpre.tar.gz。证书颁发机构(CA)负责签发、撤销和维护代表一个企业的加密要素,这些要素提供给客户端(Node SDK)用于身份认证。
Fabric网络将通过执行docker-compose自动生成,创建通道和加入通道的API将会自动被调用;同时,开发者也可以通过手动步骤生成自己的Fabric网络和通道(账本)或直接使用开发者模式进行应用开发。
Solidity 入门
Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同。
先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节。在Solidity中,一个合约由一组代码(合约的函数)和数据(合约的状态)组成。合约位于以太坊区块链上的一个特殊地址。
Solidity 中文文档——第二章:安装 Solidity
如果你只是想尝试一个使用Solidity的小合约,你不需要安装任何东西,只要访问基于浏览器的Solidity。如果你想离线使用,你可以保存页面到本地,或者克隆一个。
- 实例一:投票
- 实例二:盲拍
- 实例三:安全的远程购物
本节提供您需要了解的有关Solidity的所有信息。
更多资源
本期完
:)
欢迎关注 SegmentFault 讲堂服务号 :)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。