向你解释实用的区块链解决方案,速成、迅速入门

2020-03-12 作者:区块链应用   |   浏览(166)

在听一个区块链微课时,有专家提出“信任不等于信用,信任是人际关系,信用是资金融通”。这句话指出了很多区块链应用的误区,本期就详细探讨一下这个问题。本系列的开篇,在介绍区块链是什么的时候,提到了这样一句话:“区块链的价值在于,没有任何一个中心能够控制这个系统,数据一旦产生便不可更改,这产生了强大的信任。因此人们常说区块链是一台创造信任的机器。”区块链能创造信任,那么能创造信用吗?首先,我们看一下“信任”的概念,信任是一个复杂的概念,很多学科都涉及到这个概念,但是至今没有一个统一的定义。在区块链中,我们认为信任是指:区块链中的节点运行者相信区块链上面的数据是确定的。换句话说,就是区块链中的节点运行者信任区块链上的数据。而信用的含义则是:在经济活动中能够履行承诺。而在经济学中,信用往往是债务。那么,从“信任数据”能否推导到“信用”?需要看具体问题具体分析:情况一:假设Alice和Bob在以太坊上构建了一个智能合约,Bob将10个ETH转移到该合约的地址上,约定3天后,Alice调用这个合约,就可以得到这10个ETH。那么,在这个经济活动中,3天后Alice调用这个合约,Bob的承诺就会被以太坊自动执行。这里,信任以太坊上的数据就能得出Bob会履行承诺的结论。情况二:如果Bob一开始没有10个ETH呢?简单说,我没钱,你能咋地?这样我们就要看这个函数是怎样编写的,是否专门处理了这个情况?从智能合约的角度来说,一个完善的智能合约,应该考虑到所有异常的情况(违约情况)——Bob没有在3天内把10个ETH转移到合约地址中。我们就可以这样编写:如果合约账户上不足10个ETH,先转走全部余额,剩下的等合约地址中有的时候再处理,等等。这里,在智能合约编写的时候,实质上是把Bob未来的全部可能性都考虑进去,然后写成了一个程序上完善的合约。从这个完善的合约上看,该合约是一定能被履行的。但是对于Alice而言,她所期望的履行方式仅仅是正常的情况,而不包括违约情况。因此,信任数据推导出信任合约,但是合约中只有一部分是真实期望的结果,另一部分(违约情况处理)并不是真实期望的结果,整个过程也没有产生100%的信用。于是,问题又回到了和现实社会相同的情况,我们判断一个主体X是否有足够的信用,需要收集大量和X相关的数据,然后通过一些数学手段和数学模型,来分析它的信用情况。而在区块链中,我们只完成了前一半的一小部分——我们有区块链上和X相关的数据,并且这些数据是确定的(很难讲数据是真实的,只能用“确定”这个词)。其他的都不在区块链上,甚至我们有的可能只是X履约的历史数据,而X的其他数据都无法从区块链上获取到。那么,从信用模型角度,这个数据量就很少了。因此,区块链不能创造信用,它只能创造信任。依靠信用的交易活动,在区块链上的风险,和在现实世界上的风险没有区别,甚至可能更高一点(这些交易活动依赖的智能合约可能有bug)。但是,不依靠信用的交易活动,是可以充分相信的。情况三:仍以Alice和Bob的交易为例,Bob当前没有10个ETH,但是他有10000个EOS。Alice和Bob之间编写的智能合约中,Bob首先把10000个EOS转移到合约地址上,3天后,如果Bob给合约地址充了10个ETH,则Alice 获得10个ETH,10000个EOS全部转移回Bob账户;如果合约地址上的ETH不足10个,则将10000个EOS转给Alice。在这个合约中,合约正常执行的情况和违约情况都能够在以太坊上正常处理,并且违约情况也是Alice能够接受的,那么,信任以太坊上的数据就能得出Bob会履行承诺的结论。但是,情况一和情况三一样,这种履行承诺,我认为不能称之为“创造”了信用。敖萌,现就职于中国信息通信研究院北京泰尔英福网络科技有限责任公司,主要研究模式识别和区块链,

Kovan:一种使用“权威证明(Proof of Authority)”共识方法的公有测试网络。这意味着其交易由选定人员进行验证,从而只需要4秒的出块时间。此测试环境上的以太币供应也受到控制,以减轻垃圾内容的攻击。这个链条的信息是公开的。 Kovan 是由 Parity 科技创建的,需要他们的 Parity 以太坊客户端。

实现去中心化账本的技术有哪几种?

完全去中心化:读 / 写数据库是分散和安全的,单独某个人或某个组无法控制区块链。

二、挖矿与共识

…这种例子不胜枚举。我们将在不久后提供如何建立自己的 dapps 的详细教程,所以将本教程加入书签,并继续关注吧。

这也可以叫“价值互联网”

以太坊网络

图片 1

以太坊网络

在理解智能合约之前,我们先来看看传统的合约:在传统的合约中,一般都会有两方Bob和Alice,他们都希望交易能够有利于他们,所以他们希望创造共赢。

房地产

一、分布式账本

什么是区块链?

经过探索,自己认为,只要掌握了这3个知识,就能迅速入门,还能迅速展开行动,赶超大部份盲目跟风者。

除了主网,还有测试网络(本地和公有),以及私有网络。

如果一个智能合约太复杂而又没有经过审计,是很容易被黑客攻破并盗取财产,著名的 TheDAO事件就是由智能合约漏洞引发,导致以太坊分叉成ETH、ETC。

以太坊不仅是一个数据库,它还允许你在区块链的可信环境中运行程序。以太坊在区块链上搭建了一个名为 EVM(Ethereum Virtual Machine,以太坊虚拟机)的虚拟机。EVM 允许在区块链上验证和执行代码,为代码在每个人的机器上以相同方式运行提供保障。这些代码包含在智能合约中(更多如下)。

Minimal 

现在我们对区块链价值有一定了解,下面让我们来深入了解它们的工作原理。

没有完美的共识机制,只有是不是适合当前场景,很多问题的解决思路,都在于做出合理取舍。

供应链

拿以太坊举个例子(以太坊是一条公链,人人都可以基于这条公链创建自己的智能合约)。

哈希

智能合约就是运行在区块链上的电脑程序,是一串代码。

区块链如何工作?

因此,在实现智能合约时,最好经过专家严格审计,最好规则不要太复杂,最好可以纯线上完成。

第一个数据库

这样的特性,在我们的金融化应用中非常有用,例如众筹合约等。

交易市场

Alice的付款可以通过链上执行,但如果Alice认为只有当Bob货物的缺陷率小于某个值时才付款呢?关于货物的缺陷情况就不能仅依靠链上完成。

Dapps(分布式应用程序)

然而现实世界是复杂的。

一旦新区块被开采出来,其他矿工将被通知,它们开始验证并将这个新区块添加到其链条的副本中。我们之前提到的数学问题称作加密哈希(或简称哈希)。哈希函数是一个特殊单向的过程,它接收数据并返回一个表示该数据固定长度的字符串。虽然原始数据不能从其哈希值中再现,但相同数据始终产生相同的哈希值。因此,未验证的数据可以使用相同函数进行哈希,并与原始数据比较。 如果它们相同,则数据验证通过。

如果双方把规则1、2、3写成白纸黑字并签字画押,就形成了我们常规意义上的”线下合同“;

小团体需要更大的容量。随着网络规模的缩小,私有区块链可以扩展到更大的规模,并处理比公链更重的读 / 写量。

Experience

智能合约是用 Solidity 语言编写的。Solidity 是静态类型,支持继承、库和复杂的用户定义类型等功能。它的文件扩展名是“.sol”。 Solidity 的语法类似于 JavaScript。 我们将在以后教程中介绍 Solidity 基础知识,但你也可以通过查看文档来深入了解。

现在把智能合约做一个狭义理解:

档案保存

不得不赋于中心化机构信任,这就是“中心化”账本最重要的特点

作者:Truffle Team

在代码中增加”货物缺陷“情况是没有意义的,因为它并不能够自动执行,它只能通过线下商议或诉讼执行。

这是整个可视化过程:

如果双方找程序员把这些规则写成代码,可以自动执行,就成了今天要讲的”智能合约“,也就是说利用代码表达、确认并执行各方之间的协议;

区块链如何工作?

随着越来越多的企业或个人参与到“去中心化”行业中,会有更多的共识机制产生,但不管是什么样的机制,在现实的约束条件之下,往往都需要通过牺牲掉某些特定需求,来满足当前场景的需求。

基于以太坊的私链同样运行EVM,因此也兼容 Truffle 和其他开发工具。摩根大通最初开发的Quorum就是一个非常好的例子,也与Truffle兼容。更多关于在Quorum上使用Truffle的内容请访问我们的博客。

关于学习,特别是“速成、迅速入门”这件事,其实每个领域都有属于自己特有的“最少必要知识”(MAKE)

到目前为止,我们已经描述了主要网络(或主网),以太坊的公链。任何人都可以创建一个节点并开始验证交易;因此,它是高度安全的。链上的数据,包括账户余额和交易,都是公开的。网络上的以太币具有市场价值,并可以交换其他数字货币、或例如美元的法定货币。

按照我们之前对智能合约的定义(是用代码创建的具有商议用途的协议),可以基于区块链+智能合约,创建全新的构建在代码之上的信任网络。

区块链具有以上特点并将其运用到更深层次,完全解决了信任问题。

多个参与者!共同记账!保持一致性!

以太坊区块链

小明转账20给小芳,记录小明-20  小芳 +20.....以此类推

永久性:创建一个新拷贝并将旧数据保留为历史记录,而不是直接覆盖旧数据。该记录可以被访问,用于证明某一时刻存在的数据。

2、以”RaiBlocks——源石币“为代表的加密数字货币,是通过区块点击技术实现的”去中心化账本“,号称可以实现无交易手续费、瞬时交易特性

这里继续 Bob 和 Alice 的智能合约案例。这一次,他们正在使用托管合约(一个货币储存空间,储存一定货币直到满足某条件),以便在最终交易之前存储其以太币。

关于区块链世界的最少必要知识是什么?

私有以太坊网络允许各参与方共享数据,而不使其公开访问。私有区块链是一个很好的选择,当:

由于支付宝的品牌及违约成本过高,我们相信支付宝并不会恶意破坏这本账,但如果发生以下这些情况呢:

什么是区块链?

这种,通过某种规则,规定谁优先记账,记账完成之后是否给到奖励的规则就叫做“共识”。

区块链是核心是一个共享数据库,该数据库称作分类账本。就像一个银行,简单的区块链分类账本会跟踪货币(这里指加密货币)所有权。与中心化银行不同,每个人都有该账本的拷贝,而且可以验证彼此的账户。这就是区块链的分布式(或去中心化)特点。每个包含账本拷贝的连接设备被称作节点。

Actionable 

独立验证:交易可以由任何人验证,无须第三方,这有时也被称作脱媒。

如果机房恰好遭遇了火灾?如果黑客刚好侵入了支付宝数据库中心(也就是账本中心),并且在每人的账户中减掉1分钱,加到黑客自己的账户中?.....

什么是以太坊?

矿工的一系列记账动作可称作为“挖矿”。

区块链基础

备注:make概念来自李笑来得到专栏《通往财富自由之路—起步时,最重要的是什么?》

分布式应用(Dapps)

从只能相信某个“中心”机构,到相信“分布式账本”,完成了“中心化互联网”到”信任互联网“的转变。

为什么使用区块链?

既然“共识”是一种规则,目前去中心化世界里的共识机制有哪些呢?

挖矿

面对这一些用户没有任何办法,用户天然地只能选择“支付宝”这个中心机构能够处理好这一切。同样的道理也适用于银行、腾讯。我们相信银行一定会认真保管好账本;相信腾讯一定不会莫名删除我们的QQ好友;相信微博一定不会莫名地给我们添加好友;

共享数据需求

当前市场上较为流行的共识机制整理成以下表格,供大家查看。

除了追踪账户余额,以太坊使用相同方法将 EVM 的状态保存在区块链上。所有节点处理智能合约,来验证合约本身及其输出的完整性。

虽然我们说相信代码比相信人好,但代码也是人写的,也会出现漏洞。

本地测试网络

1、分布式账本

共识性:对于要共享的数据库,所有参与方必须就其内容达成一致(达成共识)。有很多种达成共识的方法,其中一种(工作量证明),我们将在下一节区块链中讨论。

1、区块链——代表为比特币

这些测试网络是存在和公开的。这些网络上的以太币仅用于测试目的,没有货币价值。由于这些网络是公有的,所以货币是免费的,开发人员在最终部署以太坊应用程序到主网之前,需要使用它们测试。

于是大家在合约中写好了一些条款,用于约束双方,保证共赢:

鉴于以太坊区块链的好处,dapp 可能是许多行业的解决方案,包括但不限于:

重点提下Iota,用的虽然是Pow(工作量证明)共识机制,却并不会像比特币的POW机制那样产生算力浪费,而是把算力作为交易的一部份,实现交易与记账的绑定,最终达到“去中心化”目的和0手续费。

什么是智能合约?

基于这点,我们可以就智能合约做一个广义理解:使用智能合约代码创建新颖但具有商业用途的替代协议形式,是可以被定制化、被谈判的。

  1. Bob 完成了露台,Alice 很激动!她许可智能合约释放资金。

  2. Bob 收回了 1 ETH 的抵押,和 Alice 支付的 1 ETH

举个支付宝的例子。我们把支付宝的数据库当成一个巨大的账本。

你可能已经听过“区块链”和“智能合约”这两个术语,但它们实际是什么意思?我们将揭开其神秘面纱,向你解释实用的区块链解决方案,然后给你一些如何创建它们的指导。这是一个高层次概述,包括:

(3)如果Bob延期大于半个月,则Bob需要支付Alice违约金500美元;

私有 / 企业网络

2、挖矿与共识

货币(金融)

小明从银行卡充值100元至支付宝账户,记录小明+100;

分享敏感数据,如医疗保健记录,这是不允许或不希望公开的。

三、智能合约

现代共享数据库使用技术来减少这种损坏,其中部分技术与区块链重叠。根据不同的共享数据库系统,它可以有以下特点:

到了21世纪这个信息化、数据化、智能化的世界,我们可以把任何数据的增加、删除、修改都看成是一种”记账“行业。

一旦一半以上的矿工验证了新区块,网络则就新区块达成共识,并成为链条中永久的一部分。现在这个数据可以很容易被非采矿节点下载(同步),且其有效性得到保证。

从此以后,不必去调查合同对方的人品如何,只需要相信”智能合约“代码即可。

在一个公链中,任何人都可以读写数据。读取数据是免费的,但向公链中写数据是需要花费的。这种花费有助于阻止垃圾内容,并通过支付保护其安全性。网络上的任何节点都可以参与称作挖矿的方式来保护网络。由于挖矿需要计算能力和电费,矿工们的服务会得到一定报酬。

而分布式账本最重要的是什么呢?

如下图所示,每个服务器边上的箭头都是需要信任的连接。

由于区块链的不可更改特性,没有谁可以任意更改合约内容,除非合约中规定可以发起投票,并根据投票结果进行更改。

极致容错:容错是系统处理损坏数据的能力,虽然容错能力不是区块链特有的,它将此概念逻辑化,让每个人共享数据库来验证其变化。

去中心化账本意味着:用户的信任不再赋给某个中心化机构,改为相信实现"去中心化账本"的技术,相信网络本身。

什么是智能合约?

(2)如果Bob延期半个月发货,则Alice只需要支付货款的80%;

  1. Bob 尝试向 Alice 发送 1 ETH。

  2. Bob 和 Alice 的交易与其它自上个区块之后发生的交易绑定在一起。

  3. 矿工们竞争验证新交易集合产生的区块。

  4. 成功创建新区块的矿工将会得到报酬。

  5. 交易通过验证,Alice 收到 1 ETH。

可以用Mist工具创建属于自己的智能合约,并调用这个智能合约(如下图所示)。在以太坊中的架构中,智能合约被看作一个特殊的账户,因此智能合约也能和其他账户一样进行交易,可以接受以太币,也可以付出以太币。

区块链网络中账户之间的交互被称作交易(Transactions),它们可以是货币交易,例如发给某个人以太坊中的加密货币以太币;它们还可以是数据传输,例如评论或用户名。区块链上的每个账户都有唯一的签名,让每个人都知道是哪个账户激活该交易。

大家非常熟悉的代币众筹,本质就是代币发行方通过创建智能合约,在合约规则中写清楚如果收到来自某个钱包的X个ETH,则对这个钱包地址发行Y个新token。

自我托管博客就是中心化数据库的一种常见形式。所有者为了让文章更好,可以进行事后编辑,或者无需追索就可以审查用户。即使拥有一名正直的所有者,黑客也会渗透到服务器并实施恶意行为。如果没有数据库备份,那就几乎无法确认哪些数据被修改或损坏。

大家可以思考下,在我们看到的这些去中心化项目中,哪些是可满足上述要求的?

以太坊区块链可以在本地进行模拟开发。本地测试网络可以即时处理交易,并且以太币可以根据需求进行分配。存在一系列的以太坊模拟器;我们推荐我们自己的:Ganache。

3、智能合约

比起之前的数据库,区块链除了解决信任问题,还有以下主要优点:

Knowledge and 

网络中的每个节点可以选择参与挖矿。通常,节点的矿工需要竞争解决保护区块链内容的数学问题。每个区块都是刚创建的待处理交易集合,需要添加进链条中最新的区块后面。数学问题比赛的获胜者创造了下一个区块,并收到一些加密货币作为奖励。这激励了节点来保护网络,防止太多权力掌握在任何一个矿工手中。

3、以“IOTA”为代表的Tangle技术,也可实现“去中心化账本”。

当有很多个位于世界各地的参与方,它们之间在无法互相信任、但需要共享数据和传输价值情况下,就需要使用区块链了。金融界将这种信任描述为交易对手风险,即其他参与方最后不履约的风险。区块链通过一种创新的数学系统、密码学和点对点网络,完全解决了交易对手风险。在我们详细了解它们的工作原理之前,我们需要回顾一些历史,以及区块链产生的必要性。

参与到这个“共识”规则中的角色可以统称为矿工。

在20世纪60年代,第一台计算机式数据库出现。这些硬件占据了很多房间,而互联网还有几十年才出现,数据通常存储于中心的实体位置。这是一种中心化方式,意味着数据的位置和访问都由中央机构控制。中心化系统可由恶意角色从内部或外部控制,所以我们相信这些系统拥有者有足够意愿和资源来保护数据的安全性和完整性。中心化数据库在今天依然是最常见的,支持着大多数在线和离线应用。

对各个共识机制有基本了解之后,在未来的行业参与(投资)过程中,可渐渐形成自己的独力判断能力,最终实现我们的目标。

原文链接:

(1)如果Bob在18.1.15日之前发货1000个配件给Alice,Alice必须保证在18.1.17日之前支付2000美元给Bob;

为什么使用区块链?

翻译&校对:Nina & Elisa

公有测试网络

什么是以太坊?

在更复杂的托管合约中,如果 Bob 没有完成露台,或他完成的非常糟糕,可以将规定写入合约代码中,以释放 Bob 给 Alice 的抵押。

* Ropsten:由以太坊基金会创建的官方测试网络。

Alice 想雇佣 Bob 来建立一个露台。为了让双方保持诚实,Alice 同意在托管合约中存放露台款项,Bob 同意在合约中存入同等金额。

使用智能合约的应用程序大多数(虽然不是全部)的后端处理称为 dapps,分布式应用程序的缩写。这些 dapps 的用户界面使用包括你可能已经知道的语言:HTML,CSS和JavaScript。这些文件可以托管在传统可信的 Web 服务器上,或无需信用的分布式文件服务上,如 Swarm 或 IPFS。

共享大量数据是非常昂贵和麻烦的。我们可以通过在需要共享的各参与方分配数据来缓解这种负担。读 / 写由这个群体中的一方或多方控制,因此受制于类似中心化数据库的变化方式。

Rinkeby:一个同样使用权威证明的官方测试网络。 任何以太坊客户端都可以访问,由以太坊基金会创建。

智能合约是指在 EVM 上运行的程序,它们与其他编程语言十分相似。智能合约可以接受和存储以太币、数据、或两者组合。然后,使用编入合约的逻辑,它可以将以太币分发到其他帐户、甚至其他智能合约。你可以看到复杂系统是如何从这种灵活性中发展起来的。

本文由威尼斯官网9778818发布于区块链应用,转载请注明出处:向你解释实用的区块链解决方案,速成、迅速入门

关键词: