区块链和智能合约的关系
区块链和智能合约的关系
链客 专为开发者而生 有问必答
此文章来自区块链技术社区 未经允许拒绝转载。
尽管比特币 Bitcoin 和以太坊 Ethereum 是经常被一起提及的两个词 但实际上 比特币与以太坊有着很大的区别。它们唯一的共同点是 以太坊也是一个在区块链之上运行的加密资产。
与比特币仅仅是一个加密货币不同 以太坊还有很多其他特性。正是这些特性 才使得以太坊成为了一个去中心化的超级电脑。
在理解 以太坊 之前 我们必须要理解区块链是如何工作的。如果你已经了解了区块链 或者读过 理解区块链终极指南 可以直接进入下一节。
什么是区块链
简单点说 区块链就是一个数据库。它是一个不断增长的数据库 里面存储着特定类型的数据 并且有着一些独特的属性
一旦数据被存储到数据库中 它就永远也无法再被修改或是删除。区块链上的每一条记录都是永久存在的。
这个数据库 并不是由一个单一的个人或是组织维护 而是由成千上万的人在共同维护 其中的每个人都有着一份数据库的拷贝。
为了理解为什么几个人能够持有一份拷贝 并且能够与其他人进行同步 让我们来假设现在网络里面有 10 个人 每个人的面前都有一个空的文件夹 并且有着一页空的纸。无论何时 网络中任何一个人做了一些事情 比如转账 他们必须要将这件事告诉网络里面的其他人。
每个人都会在纸上记录这件事 直到填满这张纸。这个时候 每个人都必须通过解决一个数学难题来封装这页纸。通过解决数学难题 保证了每个人手中的纸都有着同样的内容 并且无法被修改。谁第一个解出了题 谁就会得到一定数量的加密货币的奖励。
一旦封装完毕 这一页就会被加到文件夹里面 然后拿出新的一页 继续重复上述过程。
随着时间不断增长 这些包含了重要记录 也就是交易 transaction 的页 也就是区块 block 不断地被加入到文件夹 链 里面 最终形成了数据库 区块链 。
区块链存储了什么
区块链可以用于存储各种类型的数据 它所存储的数据 赋予了区块链价值。比特币区块链存储的是金融交易 因此 看起来像是美元或者英镑这样的货币。除了跟美元所承载的功能以外 比特币没有任何额外的功能。但是 以太坊则不同。
以太坊不仅仅是一个像美元 英镑或者比特币一样的货币。以太坊的目标不仅是成为一个货币 更是成为下图中的事物
以太坊实际是一个巨型电脑 但是 它是一个非常慢的电脑 – 大概比今天的普通电脑慢上 100 倍 并且非常昂贵。“以太坊电脑” 有着跟 90 年代智能手机 类似的境遇。除了一些非常简单的事情以外 它几乎做不了任何事情。
这听起来好像并不怎么吸引人 那么 为什么以太坊还有这么多人趋之若鹜呢 这是一个非常好的问题。不夸张的说 以太坊正在席卷整个世界 因为它是一个完全去中心化的电脑 分布在世界各地。理解以太坊区块链是如何工作的 就会看出它是如何承担了一个世界电脑的角色。
以太坊是如何工作的
与其他所有的区块链一样 以太坊需要数以千计的人在他们的个人电脑上运行一个软件来支撑整个网络。网络中的每个节点 电脑 运行一个叫做以太坊虚拟机 Ethereum Virtual Machine, EVM 的东西。可以把 EVM 想象成是一个操作系统 它能够理解并且执行用以太坊上特定的编程语言编写的软件。由 EVM 所执行的软件或者应用叫做 “智能合约 Smart Contract ”。
为了在这台世界电脑上做一些事情 你需要进行付出一定的费用。但是 你并不是付美元或者英镑这样普通的货币。而是通过叫做以太 ether ETH 的以太坊网络原生的加密货币 来支付相关费用。以太跟比特币几乎一模一样 唯一不同的是它被用于支付在以太坊上执行智能合约的费用。
无论是一个人 还是一个智能合约 都被视作为以太坊上的用户 user 。一个人可以以太坊上做什么 一个智能合约就可以做什么。
智能合约看起来就跟网络的其他任何人一样。它们都可以发送或者是接收以太 就跟其他的货币一样。
但是智能合约又不是完全跟人类相同。跟人类用户不同的是 智能合约也可以执行一个预先定义好的计算机程序来执行各种操作 执行的操作可以根据事件进行触发。为了感受一下智能合约的威力 让我们来考虑一个例子
智能合约的威力
假设你和我对明天的天气进行打赌 我打赌明天是晴天 但是你打赌是雨天。双方同意输的一方必须给赢的一方 100 美元。那么 我们如何才能够做到这一点 并且确保输的一方不会耍赖呢 我可以想到三种不同的方式
信任对方最简单的方式是信任对方。如果我们是老朋友了 那么信任对方是非常容易的。我知道你住哪儿 你也知道关于我的各种糗事。但是如果我们是完全不认识的陌生人 事情就会变得复杂的多。我没有理由去信任你 你也没有理由去信任我。
签一个法律协议另一个貌似可行的方案是 将我们的赌约正式形成一个有法律效力协议。我们双方签署一个定义了赌约所有细节的协议 – 包括如果输的一方违反协议会怎样。
这个协议将会使得我们有义务付给赢的一方 但是它没有任何实用性 因为通过合法途径强制协议执行的成本 要比这个赌约的价值高得多。
请一个共同的朋友帮忙我们可以找一个双方都信得过的朋友 然后各给这个朋友 100 美元进行保管。第二天 他会检查天气 然后把全部的 200 美元给打赌赢的一方。非常简单和方便 除了有一点 如果这个双方都信任的朋友把钱卷走了怎么办
现在 我们有了三种不同的方案来实施赌约 但是每种方案都有缺点
因为是陌生人 所以我们无法信任彼此。
强制执行一个协议是如此的昂贵 以至于不具有任何实用性。
求助一个共同的朋友同样又会遇到信任的问题。
以太坊的智能合约就是为了解救这个问题。一个智能合约就像是可信赖的共同的朋友 只不过是用代码写的而已。我们可以在以太坊上写一个合约 这个合约从我们双方获得 100 美元的输入 然后在第二天 通过开放的天气 API 来检查天气 并将所有的以太转给赢的一方。
一个合约写好以后 就无法再被编辑或者修改。因此 你可以保证无论合约的内容是什么 它都会无条件执行。
但是 智能合约是如何执行 跟区块链又有什么关系呢
智能合约是如何与区块链关联的
无论智能合约何时被执行 它都会在一个区块上被记录为一个交易。概括来讲 一笔以太坊上的交易看起来就像是这样
除了最后的 Data 其他字段相信大家一眼就能看出来是干什么的。也正是这个 data 字段 才使得以太坊与众不同。data 用于记录智能合约的创建和执行 就像记录交易一样。在以太坊区块链上 任何一个块都可能包含以下三种交易
从一个人转移到另一个人的普通交易这些普通交易 就像是比特币交易。如果你直接发送以太给你的朋友 那么 data 字段就是空的 这样的交易就是普通交易。
只有发送方却没有接收方如果一笔交易中没有接收方 这意味着此次交易是用 data 字段的内容在网络中创建一个智能合约。data 字段包含了代码 这些代码就像是网络中的其他用户一样。
将以太转到一个智能合约无论何时 只要一个用户 或是一个智能合约 想要执行一个智能合约 他/她/它 都会创建一个智能合约的交易 并在 data 字段放置执行指令。
与其他区块链一样 无论上面提到的三种事件何时发生 都会被公布到网络中 并且网络中的每个人都会对它进行记录。除了记录 每个节点还会执行智能合约 来使得他们的 EVM 状态与网络的其他部分同步。
每个节点都执行软件的一部分 因此 使得整个网络像一个巨大 但是缓慢 的分布式电脑。每次无论多么小的执行 都会被记录到区块链上 永久存在。
等一下 Gas 是什么东西
如果用户想要使用和执行智能合约 就必须要为执行该智能合约付出一定费用。这笔费用是给了实际花费了内存 存储 计算和电力等资源来执行合约的节点。
为了计算智能合约的费用 合约中的每条语句都有收费标准。比如 如果执行的语句用到了节点的内存 这个语句会有一个价格。如果执行一个语句用到了节点的硬盘存储 这些语句又是另一个价格。在这里 定义成本的单位就叫做 Gas。最终 Gas 会通过汇率转换成以太 ETH 。
无论何时执行一个智能合约 你都必须要定义一个可以花费的 Gas 的最大值。当智能合约执行完成 或是达到了 Gas 的限额 就会停止执行。这是为了避免在智能合约中出现无限循环 防止出现一些反复执行的语句导致程序停滞。
因为程序员的一些错误 很可能会导致这样的事情发生。所以每次重复执行时 都会消耗掉一些分配的 Gas 因此使得不会出现无限循环这样的事情。没有必要因为程序员的错误 导致一个节点在执行时崩溃。使用 Gas 就解决了这个问题。
这就是以太坊
以太坊不仅仅是一个用于交易的加密货币 它的实际价值在于其目的 – 以太坊的目的 是为了让人们使用由几千个节点支撑的分布式世界电脑。
当然 由于每条语句必须被网络的中每个节点所执行 去中心化的分布式电脑会变得很慢 而且很贵。不过 这里所说的慢是跟谁相比较呢 是跟更快 但是由中心化控制的服务器。
为了能够享受中心化电脑带来的低成本 我们交出了我们的控制权。但是如果中心化服务器宕机或是被黑客攻击 那么所有与它连接的客户端都会挂掉。而一个去中心化的分布式电脑 只有在每个节点都停止工作的情况下 才会挂掉。换句话说 这使得它永远不会宕机。无论在哪里 只要有网络 就有以太坊。
查看全文相关文章:
最新文章2023/6/6 19:03:***/6/6 19:03:***/6/6 19:03:***/6/6 19:03:***/6/6 19:03:***/6/6 19:03:***/6/6 19:03:***/6/6 19:03:09
数字加密货币是草根翻身的最后机会,真的错过了,找绳也没用!
五百年一遇的金融变革,让我们用全部的力量与全部的热忱拥抱区块链
币圈一日,互联网十年!在币里疗伤并收获着无穷的快乐与财富,美哉善哉!
如果你是刚接触的小白,或者是经常亏损爆仓 的朋友,可以让我们一起共同努力。让我们的口袋达到我们所预期的效果。让我们一起在这个市场持久的走下去,迎来最终的胜利。
了解更多币圈一线报道,与作者、读者更深入探讨、交流,欢迎大家来一起交流,互相学习!
区块链和智能合约的关系
------
延伸阅读:
炒币:币圈炒币市场以自身经验给你几点建议
投资本是一场自我的修行,只有起点,没有终点,切洋葱的时候你总是闭着眼睛,以为这样就不会流眼泪了,但当切到手的那一瞬还是哭了,投资何偿不是如此,扛着单以为就能熬过今天,可明天的风雨却照样刮走你一切的奢望!所以你做投资时,如果你能力不足以支撑你现在的状况,选择大于努力,跟对的人,做对的事情
很多投资朋友可能会觉得我作为老师很厉害,一大早你能看到我,深夜也能看到我,专业尽责,其实我想说,这是一个人对事情的态度,说实话,我不赞同一大早就爬起来做单的朋友,更加不喜欢超过晚上24点还问今天有没有行情的朋友,投资要与生活分开,你才会明白投资的乐趣。
但是依旧有很多人不明旧理反而乐此不疲,你今天抽出工作生活多余的时间来学投资,就算是赚了1美金也要学会自足,因为投资的根本便在于此,就像一个人钓鱼,他能把一个池塘里面的鱼全部钓完吗?答案显而易见,熟悉我的朋友都知道,到了休息时间我就会催促你早点休息。
如果你是那种错过一波行情就后悔的痛哭流涕的那种性格,我想交易市场并不适合你!我一直觉得做交易要稳健,因为交易存在很大风险,可能你今天就做了一单或者两单,但是赚了一单或者两单后,我就觉得你不应该再随意的进场,毕竟进入自己口袋的钱,才是最终属于你的。
同时在你出现亏损的时候,那么我也不建议你再去继续做单,静下心来好好想一下自己亏损的原因。下面浪人给大家几条建议:
1.善与做投资计划,切记勿用生活必需资金为资本。想做成功的投资者这是基础,资金压力过大会误导你的投资策略,徒增交易风险,导致出现更大的错误,而每次投资最好是你闲散资金。当赢利超过你的本金有余时,最好把本金抽回,利用赢余的资金去做。
2.严格止损减低风险。当你做交易的同时应计划可容忍的亏损范围,善用止损,才不致于出现巨额亏损,亏损范围依帐户资金情形,最好设定在帐户总额3-10%,当亏损金额已达你的容忍限度,不要找寻借口试图孤注一掷去等待行情回转,应立即平仓,即使5分钟后行情真的回转,不要婉息,因为你已除去行情继续转坏,损失无限扩大的风险。你必需拟定交易策略,切记是你去控制交易,而不是让交易控制了你,自己伤害自己。应以帐户金额衡量交易量,勿过度交易。永远把资金安全放在第一位。
3.交易资金要充足。帐户金额越少,交易风险越大,因此要避免让交易帐户仅有做一手的金额,做一手的帐户金额是不容许犯下一个错误,但是,即使经验丰富的保证金交易人也有判断错误的时侯,这样就没有下一次补仓的机会,扭亏为盈更是无望。
4.交易不易过度频繁。一般情况下一天最多俩单,控制数量提高质量;也不要在亏损后急于翻本,应该冷静下来,仔细分析,然后再战。面对亏损的情形,切记勿急于反向的新仓位欲图翻身,这往往只会使情况变的更糟。只有在你认为原来的预测及决定完全错误的情况之下,可以尽快了结亏损的仓位再开一个反向的新仓位。切记不要情绪化,宁可错过机会,决不冒险做错。
5.勿逆势操作,在一个上升浪中只可以做多,同样在一个下降浪中只可以做空,甚至只要行情没有出现大的反转,切记勿逆势操作!不以回调利润点数而感到惋惜,只须在回调的支撑位上伏击便可。市场不会因人的意志为转移,市场只会是按市场的规律延伸。
6.学会彻底执行交易策略,勿找借口推翻原有的决定。交易最大致命性而且会摧毁每件事的错误是,当你(在损失已扩大至所做资金的30%)损失了开始找借口不要认赔平仓,想着行情可能一下子就会回转?在你持续有这个念头时,就不会有心去结束这个损失继续扩大的仓位,而只会失去理智地等待着行情回转。
7.错误难免,要汲取教训,切勿重蹈覆辙。错误及损失的产生在所难免,不要责备你自己,重要的是从中记取教训,避免再犯同样的错误。另外,要学会控制情绪,不要因赚了100点而雀跃不已,也不用因损失了100点而想撞墙。交易中,个人情绪越少,你越能看清市场的情况并做出正确的决定。要以冷静的心态面对得失,要了解交易人不是从获利中学习,而是从损失中成长,当了解每一次损失的原因时,即表示你又向获利之途迈进一步,因为你已找到正确的方向。交流请加笔者!
------------------
推荐阅读: