以太坊的入门小知识_以太坊:DAPP

如果你是一名软件工程师,拥有软件开发的经验。能知道从系统、架构角度学一个东西,其实能倍增学习效果。如果有一周的空闲时间。好了,下面开始就不再是废话了。你需要了解Merkletree的基本概念,看他是如何做到防止信息篡改,以及信息自校验的。不用必须读白皮书,只需要了解一些基本概念。但说实话,如果不读,不会相信这些概念,从而不能真正明白这些概念,所以读白皮书也许仍然是最快的方式。我建议你完整的读一下本文,从一个较高的层面了解一下,然后再挑感兴趣的,一一钻研,也许要花几天时间哦。

你最后会发现,区块链就是建立在朴实无华的基本技术之上,一点也不神奇。虽然最近各种ICO把它炒得非常热。每个人都是站在巨人的肩膀上,如果你是程序员,你能对这些项目和技术,理解得更深。所以不要因为其它一些糟粕,而失去了一个提升自己的机会。

以太坊

以太坊,Ethereum是一个分布式的计算机,有许多的节点,其中的每一个节点,都会执行字节码,然后把结果存在区块链上。由于整个网络是分布式的,且应用就是一个个的状态组成,存储了状态就有了服务;所以它就能永不停机,没有一个中心化的结点,任何第三方不能干预。

显然上面这一段话,直接解释了以太坊是什么。但你可能有非常多的问题。可以先读一下以太坊的白皮书。或者看下这个视频,25分钟理解以太坊。

智能合约

智能合约与平时的代码其实没有什么区别,只是运行于一个以太坊这样的分布式平台上而已。这个运行的平台,赋予了这些代码不可变,确定性,分布式和可自校验状态等特点。代码运行过程中状态的存储,是不可变的。每一个人,都可以开一个自己的节点,重放整个区块链,将会获得同样的结果。

在以太坊中,每个合约都有一个唯一的地址来标识它自己。客户端可以与这个地址进行交互,可以发送ether,调用函数,查询当前的状态等。

智能合约,本质上来说就是代码,以及代码运行后存储到区块链上的状态两个元素组成。比如,你用来收发ETH的钱包,本质上就是一个智能合约,只是外面套了一个界面。

概念非常强大,而我相信你已经看完了。而你在看相关的新闻,经常听到这个非常有潜力,经常听到资产/权利管理,分权自治组织,身份,社交网络等炫酷。但他本质就是这些。

Gas

智能合约,就是一些代码,运行整个分布式网络中。由于网络中的每一个节点都是一个全节点。这样的好处是容错性强,坏处是效率低,消耗资源与时间。因为执行计算要花钱,而要执行的运算量与代码直接相关。所以,每个在网络运行的底层操作都需要一定量的gas。gas只是一个名字,它代表的是执行所需要花费的成本。

整个分布式网络引入了强制限制,来避免停机问题。因此如果你写一个死循环,当gas耗尽后,网络就会拒绝执行接下来的操作,并且回滚你之前的所有操作。

gas的价格由市场决定,类似于比特币的交易费机制。如果你的gas价格高,节点则将优先因为利益问题打包你的交易。

一般来说,在Ethereum中计算和存储东西比在传统环境中做得更为昂贵,但是,Ethereum为您的代码提供了上述我们讨论过的那些好的属性,这可能是一样有价值的。

一般来说,在以太坊网上读取状态是免费的,只有写入状态是收费的。下面这个文章是gas概念的一些深度解析。

分布式APP

一个分布式App是指,服务端运行于以太坊网络上一个或多个智能合约。

一个分布式的App不用将所有状态都存储在区块链上,或者在链上进行所有计算,这样就太花gas了。所以一个分布式App把需要大家共同信任的状态存在区块链上就好了。许多的分布式应用使用后面提到的技术,如IPFS和Gelem,在链下进行分布式存储和计算。虽然没在以太坊上,但仍使用的是区块链技术。

我不知道谁开始在D上使用这个小小的缺点,是看起来酷,但会影响搜索。你可以自由使用,但尽量方便别人的搜索。

以太坊的github上,有一个dapp-bin的目录,有一些文档和示例。使用前,你需要看看文件最近的状态,因为他们将很可能已经被淘汰。

DApp客户端

大多数的分布式应用都通过一些用户友好的前端提供服务,因为不是所有人都愿意通过命令行,通过自己手动组装哈希串和操作指令码进行交易。

一个DApp与传统的开发中的,客户端或前端是类似,区别仅在于它们与以太坊的区块链进行交互。这些客户端往往用JS编写,因为当前还暂时没有完成全部的向NodeJS的转换。

另外,大多数的Dapp客户端使用JS的原因,是因为它可以在浏览器中运行,因为大家都有浏览器,这样每个人都可以运行了。由于有更多的go语言的开发工具,使用go语言来写客户端的也不少。在现在这个激烈的发展期,这意味着,除非你有自己的偏好,否则可能要从go和JS来选择一种语言,来与以太坊区块链,以及基于以太坊开发的协议进行交互了。

以太坊的一个核心开发者,写了一篇关于使用Meteor工具来创建Dapp的文章,这意味着Meteor已经成为Dapp客户端开发的新标准。这绝对是基于JS建立全栈应用时的一个首选方法。但需要注意的是Meteor只是提供了一个开发工具,与DApp客户端并不等同,DApp客户端也完全可以由其它方式开发。。

因为围绕Meteor和DApp开发的活跃,有非常多的包在Atmophere,它提供了许多常见的操作,如帐户管理,从区块链中获得最新的50个区块等等。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-3:516ms