木星链 木星链
Ctrl+D收藏木星链
首页 > 世界币 > 正文

以太坊:深入交易细节,理解以太坊智能合约的工作原理

作者:

时间:1900/1/1 0:00:00

你可能听说过「智能合约」,甚至可能知道它们是在区块链上运行的代码。但是你如何才能在区块链上运行代码?这不是可以轻易理解的简单概念。本文解释了智能合约是如何在以太坊区块链上运行的。对编程的基础理解将会有所帮助,因为本文包含了一些用于举例的简单代码。为了清晰起见,本文将其中的一些技术细节稍微进行了简化,但概念是有效的。

原文标题:《UnderstandingEthereumSmartContracts》

原文作者:GjermundBjaanes

翻译:蓝狐笔记社群Dyna

一、区块链——快速入门

这里不讲太多细节,区块链技术的核心概念是分布式账本。它是一种在众多参与者之间共享的特殊类型的数据库。

这个特殊的数据库就是一个交易列表,记录了网络中发生的每一笔交易。每个人都有一个副本。这种去中心化分布结合强有力的货币激励措施,消除了各方之间信任的必要性。

传统意义上,当事人之间的信任是通过中间人,即第三方来解决的,比如Paypal、银行。与你不信任的人之间的交易将通过双方都信任的中间人进行。

有了区块链,这种需求消失了。因为你可以把你的信任放在网络上,在这里,强有力的激励措施消除了作弊的欲望(简而言之:遵守规则更有利可图)。

Aurora CEO:彩虹桥已完全恢复,将深入审查相关问题:金色财经报道,Aurora CEO Alex Shevchenko发推称,彩虹桥已完全恢复。用户可以进行新的代币跨链,也可以完成暂停前已经开始的代币跨链。接下来将对该问题进行深入审查。

据此前报道,2月11日,Aurora CEO Alex Shevchenko发推称,彩虹桥(Rainbow Bridge)已采取预防措施而暂停使用,没有资金损失,团队正在努力恢复彩虹桥。[2023/2/13 12:03:11]

更具体地说:区块链网络是一组机器,它们记录着相同的交易列表副本(例如,从A转给B的钱)。

因为每个人都有相同的列表,所以很难网络接受错误的交易。结合一些加密算法和货币奖励以便遵守规则,你的网络会非常安全。

所有这些也使得区块链几乎是不可变的,因为改变历史记录的唯一方法是获得全网大多数人的同意。

二、什么是智能合约?

区别于比特币,以太坊最大的不同是引入了智能合约的概念。比特币是数字货币,以太坊也是数字货币,但远不止这些。

「智能合约」这个名称有点误导人。它们不是真正的合约,也不特别智能。它们只是一些可以运行在区块链上的代码-或者说是计算机逻辑运算。

教育部等六部门:深入应用区块链等信息技术,推动教育数字转型:7月21日消息,教育部等六部门发布《关于推进教育新型基础设施建设构建高质量教育支撑体系的指导意见》。指导意见提出,深入应用5G、人工智能、大数据、云计算、区块链等新一代信息技术,充分发挥数据作为新型生产要素的作用,推动教育数字转型。利用区块链技术保护知识产权,探索个性化资源购买使用和后付费机制。通过用户评价和第三方评估相结合的方式,推动数字资源迭代更新。(教育部官网)[2021/7/21 1:07:07]

首先,我将介绍有关智能合约是以太坊网络上的一种特殊账户。你有用户账户,你还有智能合约账户。

一个用户账户包括:

一个地址

余额

一个智能合约账户包括:

一个地址

余额

一个状态

代码

地址和普通账户的地址是一样的,它是该账户的唯一识别符。

余额和普通账户也是一样的概念。唯一令人激动的是,智能合约上的余额意味着代码可以拥有金钱。它可以处理这些钱,也可能因为编码错误而造成处理不当。

外汇局山西省分局深入推进跨境金融区块链服务平台试点工作:疫情期间,外汇局山西省分局深入推进国家外汇管理局推出的跨境金融区块链服务平台的试点工作,专题调研全省中小微外贸企业融资现状;深入宣传,促进更多中小微外贸企业了解区块链平台融资的便利性;加强推动,鼓励银行对中小微外贸企业建立专营服务机制;及时引导,推进银行主动对接中小微外贸企业,开展出口应收账款融资;“点对点”辅导,加快推进地方法人银行上线区块链平台,挖掘中小微外贸企业融资需求。通过外汇局的有效措施,银行对中小企业融资的积极性有了明显提高,企业对区块链融资的便利性也越来越了解,银行扩大了对中小微企业的融资规模,企业获得了便捷的融资,实现了“一项政策、多方共赢”。截至今年3月底,16家银行加入了区块链平台,全省通过区块链平台累计放款7.65亿美元。山西省涉外中小微外贸企业复工复产1458户,复工率达91%。(金融时报)[2020/4/9]

智能合约帐户的状态是智能合约中声明的所有字段和变量的当前状态。它的工作方式与大多数编程语言中类的字段变量相同。事实上,一个类的实体化对象可能是理解智能合约的最简单方法。唯一的区别是这个对象是永久存在的(除非被编程为自我毁灭)。

智能合约的代码是编译好的字节代码,以太坊客户机和节点可以在上面运行。它是在创建智能合约时执行的代码,并且包含可以调用的函数。就像面向对象编程的语言中的任何对象一样。

声音 | 华软资本董事长:负利率是否会影响未来数字货币信用或可计算交易体系值得深入探索:12月18日,华软资本董事长、华夏新供给经济学研究院院长在第一财经发布评论文章。文章表示,负利率对下一阶段的货币形态发展带来新的不确定性,也许为“另辟蹊径”提供某些启发。随着信息技术和互联网的发展,货币及其价值传递方式出现了根本性的转变,以信用卡、网银和移动支付为代表的电子货币,以及数字货币、区块链和加密资产等都在快速发展。特别是以Facebook筹备计划推出Libra(天秤座)为代表,其目标是发展成为一种“不企求对美元汇率稳定而追求实际购买力稳定”的加密数字货币,这对未来数字货币的重要性、演化形态和利率价格等引发了全球关注。与此同时,中国央行主导的主权数字货币DCEP已有实质进展,欧洲央行也开始考虑发行公共数字货币的多种方案。数字化相当程度上加速了全球资金流动,可以部分解释利率下行原因,但负利率是否会影响未来数字货币的信用或可计算交易体系,更值得深入探索的。[2019/12/19]

关于智能合约的趣事:它们可以调用其它的智能合约。这就开启了创建自主代理的能力,这些代理可以自己花钱和进行交易。

假设我用上面的代码创建了一个智能合约。该代码有一个名为counter的字段,类型为uint(整数)。counter变量的内容是本合约的状态。每当我调用count()函数时,任何人都能看到这个智能合约在区块链上的状态将会加1。

政策 | 人民银行副行长范一飞:要深入推进央行数字货币研发:据中国人民银行消息,人民银行党委委员、副行长范一飞强调,要加大改革创新力度,深入推进央行数字货币研发,进一步完善纪念币发行机制,探索多元化发行基金仓储模式,推动钞票处理业务转型。四是着力维护现金流通秩序,继续推动大额现金管理先行先试,建立整治拒收现金长效机制,健全现金机具管理机制,进一步推进反假货币工作重心前移,加强虚拟货币监测监管。[2019/2/22]

稍后我们将通过更多的例子来解释它是如何工作的,但首先我想回到以太坊和比特币的交易,并以此来解释一些事情。

三、交易水平上,以太坊VS比特币

比特币交易非常简单。你可以只做一件事。一种类型的交易。略过一些细节,一切都可以归结为TO,FROM和AMOUNT。这使得比特币成为一种价值储存手段,能够在网络参与者之间传递价值。

以太坊的不同之处在于交易还有一个「DATA」字段。该「DATA」字段支持三种类型的交易:

价值转移

TO接收地址;

DATA字段为空或包含要附加的任何消息;

FROM你

AMOUNT是你要发送的以太坊数量

创建智能合约

TO字段为空

DATA字段包含编译为字节代码的智能合约代码

FROM你

AMOUNT可以是0或者任意你想放在合约里的以太坊数量

调用智能合约

TO字段是智能合约账户地址

DATA字段包含函数名称和参数——如何调用智能合约

FROM你

AMOUNT可以是0或者任何数量的以太坊,比如你需要为一项服务合约支付的数目

在这些交易中还有更多的字段和复杂性,但以上这些已经很好地解释了核心概念。让我们看看关于这些交易的一些更具体的例子。

价值转移

非常简单。TO向一个地址发送一定数目的以太坊代币。你也可以为一笔交易加上一条消息。

创建智能合约

正如以上提到的,一个空的TO字段表示创建一份智能合约。DATA字段包含编译为字节代码的智能合约。

调用合约

我们稍后会回到这个问题,但是其主要概念是你将交易发送到你想要调用的智能合约地址,然后将函数调用放在DATA字段中。

四、注意成本和执行

正如你所想象的,你不能一直在区块链上免费运行计算量很大的程序。

代码的执行是由调用者用一种叫做gas的东西来支付的。Gas是运行以太坊虚拟机的燃料。你可以将其视为每次执行指令的费用(就像一行代码)。

你需要为一个特定的合约调用设置可花费的最大gas。比如,如果你调用的代码进入了一个永久循环,将会确保在执行过程中所花费的gas不会超过设置的最大gas。

gas(执行)的成本由网络的矿工(运行代码的节点)决定。关于gas和执行,还有很多知识。但以上这些值得牢牢记住。

五、智能合约如何工作?

当一个智能合约被部署到以太坊网络时,任何人都可以调用智能合约的函数。虽然出于安全考虑该函数可能阻止人们调用,但你可以自由尝试。

假设有一个MyObject类型的对象。该对象有一个名为myFunction的函数。要调用它,只需引用对象的实例、调用哪个函数和使用哪个参数调用。

像这样:

myObjectReference.myFunction(parameters);

该函数返回的任意值,可以将其存在变量中:

myVariable=myObject.myFunction

调用一个智能合约在概念上是一样的。唯一的区别是,你必须将调用相关的所有信息放在交易中,对其签名并发送到网络上来执行。

假设你想要调用函数myFunction,其中包含智能合约「0x0123456」里的一些参数。调用智能合约分四步:

现在,当交易被放进区块链中的一个块,该状态变化便会被记录在整个网络中。

六、世界计算机

许多人把以太坊称为世界计算机。这是个不错的类比。它就像一台由整个世界来维护的虚拟机。

但是请记住:虽然智能合约是图灵完备的,并且理论上可以做任何事情,但它们不太适合繁重的计算工作。

以太坊世界计算机就像一台运行简单程序的老式慢速计算机。由于成本和安全性,保持以太坊的智能合约小而简单是至关重要的。

合约需要的计算量越多,运行的成本就越大。合约越复杂,就越有可能存在安全漏洞。而且智能合约中的安全漏洞是很难处理的——毕竟区块链是不可变的。

举例:通证

回归重点,我想解释一下通证是如何工作的。

大多数这些通证都是在以太坊上创建的,而且概念非常简单。

如何使用Javascript或其他编程语言编写一个简单的货币系统?你可以在一个文件中完成所有的操作。你真正需要记录的是:

总供应量

账户

账户中的余额

资金流向

通过用户和余额之间的简单映射,你可以得到123的答案:

该map只是把一个账户映射到一笔钱。

使用构造函数,你可以在自己的帐户中设置初始供应量

资金的流动是通过简单的函数来完成的,即从一个账户中减去,然后加在另一个账户上。

创建通证与我们在以太坊使用的概念完全相同。当然,还有一些更复杂和额外的功能,但是基本概念非常简单。

以下就是基本的通证合约在以太坊编程语言中呈现的样子(再次重申:为清晰起见进行了简化):

这就是基础编程概念。我认为这说明了以太坊作为一个平台的力量。通过一些简单的代码,你可以凭空生成一个代币,它本质上就是由世界计算机记录的一些变量。欢迎来到新的互联网。

来源链接:www.gjermundbjaanes.com

标签:以太坊区块链DATATArly币为什么要关闭以太坊侧链区块链证据保全怎么操作的OwndataKATANA

世界币热门资讯
BTC:58COIN BTC交割合约现报5788.50美元,较现货贴水14.01美元

截至9:00,58COIN交割合约行情如下:BTC合约现报价5788.50美元,较现货贴水14.01美元,24h涨幅1.39%.

1900/1/1 0:00:00
58COIN交割合约交易24H行情9:00播报

截至9:00,据58COIN交割合约行情:BTC合约现报价5795.47美元,较现货贴水11.37美元,24h涨跌幅-0.40%.

1900/1/1 0:00:00
数字货币:港盛科技创始人魏琨:数字资产领域需要“券商”引进新增流量

4月26日,由金色财经主办、贝壳公关承办、节点资本协办的金色沙龙第25期—《“券商”能否掀起区块链经济新浪潮》在上海圆满落幕.

1900/1/1 0:00:00
加密货币:美国国会听证会实录:高盛要做加密货币交易?摩根大通为什么发币?

北京时间4月11日,美国7大银行负责人齐聚美国众议院,参与了金融服务委员会的听证会。向国会议员展示了自2008年金融危机以来银行业的改革现状.

1900/1/1 0:00:00
区块链:穆迪:私有链共识机制没有公有链强

金色财经比特币4月30日讯全球知名评级机构穆迪最近发布了一份私有链风险报告,为其客户分析了区块链技术对金融公司的利弊.

1900/1/1 0:00:00
USD:主板A、B部分交易对挖矿额度调整公告

亲爱的社区用户:自2019年5月2日0点起,FCoin主板A、B部分交易对挖矿额度调整如下:主板A交易对??交易挖矿返每日还额度?????挂单挖矿每日返还额度???排序挖矿每日返还额度BTC/U.

1900/1/1 0:00:00