主页 > 苹果版imtoken图标 > 以太坊智能合约原理简析

以太坊智能合约原理简析

苹果版imtoken图标 2023-09-14 05:13:22

摘要:以太坊不仅是一条以工作量证明为共识机制的公链,更是一个可以运行更复杂的智能合约和基于合约的应用程序的应用平台。 它也是一种用于支付以太坊公链调用合约费用的加密货币。 因为有智能合约的加持,以太坊在操作系统层面有了想象空间。

我们经常听到人们划分区块链的发展时期。 比特币的出现定义了区块链1.0时代以太坊平台可以运载智能合约,以太坊的出现定义了区块链2.0时代。 比特币在整个区块链世界中扮演着价值存储的角色,因此被称为数字黄金,以太坊的出现定义了智能合约时代。

以太坊智能合约编写_以太坊平台可以运载智能合约_以太坊智能合约转不出去币

如何准确定义以太坊? 笔者认为,以太坊在区块链世界扮演着三个角色:以工作量证明为共识机制的公链,采用不同于比特币的抗ASIC挖矿算法,并计划转向POW+POS Hybrid,一种称为Casper的共识算法; 它是一个具有近乎图灵完备计算能力的应用平台,能够运行更复杂的智能合约和基于合约的应用程序; 它也是一种加密货币,用于在以太坊中支付公链调用合约并记录数据时产生的手续费;

以太坊智能合约编写_以太坊智能合约转不出去币_以太坊平台可以运载智能合约

以太坊之所以开辟了一个时代,是因为它使得建立基于区块链技术的生态成为可能。 美国证券交易委员会曾经定义过所有数字货币,本质上可以分为两类,一类是证券型代币,一类是实用型代币。 前者是指具有融资功能的数字货币,后者是指具有实用性的数字货币。 由于大多数区块链项目距离落地应用较远,因此大多数数字货币都是证券型通证。 而这一幕主要是因为以太坊的问题。 我认为以太坊从去年到今年年初的价格暴涨,也主要是因为它解决了一个非常紧迫的问题——中小企业的融资问题。

今天我们就以ERC20代币为例,从技术层面深入讲解以太坊智能合约。 智能合约由 Nick Szabo 在 1990 年代提出。 由于缺乏可信的执行环境,它们还没有得到实际应用。 区块链技术出现后,人们发现区块链天然可以为智能合约提供可信的执行环境。 以太坊创始人Vitalik最先看到区块链和智能合约与区块链的融合,并发布了《以太坊:下一代智能合约和去中心化应用平台》。

我们知道,区块链的本质是分布式账本系统。 在比特币网络中,区块中记录的主要是比特币的转账交易信息。 在以太坊的区块中,除了转账信息外,还记录有可执行代码。

以太坊平台可以运载智能合约_以太坊智能合约编写_以太坊智能合约转不出去币

首先我们要了解一个很重要的概念,叫做EVM(Ethereum Virtual Machine),也就是以太坊的虚拟机。 以太坊的每个节点都会运行一个虚拟机,它不仅可以执行代码,还可以读写可执行代码和区块数据,验证数据签名等。 如果比特币就像一部功能手机,那么以太坊就像一部智能手机。

在以太坊中,有两种账户,一种叫外部账户,是人操作的普通账户,地址是公钥,由私钥控制; 另一种叫合约账户,地址是随机生成的,有点像游戏中的NPC(Non-player control character,非玩家角色)。

在外部账户中发起和改变区块链数据的行为称为交易,如转账、部署合约、调用合约等; 与之对应的是查询,是指只查看链上的数据,不更改。 不消耗气体。

以太坊智能合约转不出去币_以太坊智能合约编写_以太坊平台可以运载智能合约

那么什么是智能合约呢? 简而言之,智能合约是指可以运行在EVM上的代码和数据,是区块链系统的内部应用,有自己的账户地址和存储空间。 外部账户可以部署智能合约,向合约地址提交交易即可调用合约。 部署合约后,所有节点将自动执行合约并验证执行结果。 同样,智能合约本身就是代码,代码和数据都是可追溯的、一致的、不可变的。 即使是合约创建者也无法更改代码。

目前最流行的智能合约开发语言是Solidity,它被编译成字节码然后部署到主网,通过外部账户发送转账来调用。 实际测试后,大家可以尝试发币玩玩。 推荐步骤如下:

1. 使用 MetaMask 创建一个新的以太坊钱包

以太坊平台可以运载智能合约_以太坊智能合约编写_以太坊智能合约转不出去币

2.钱包选择以太坊测试网Ropsten

3.使用测试网获取eth

4. 使用 Remix 编码和编译

以太坊智能合约编写_以太坊智能合约转不出去币_以太坊平台可以运载智能合约

5. 与 MEW 的合同部署

6. 使用 EtherScan 进行交易跟踪和合约浏览

因为有了智能合约的支持,以太坊在操作系统层面有了想象空间,也是目前生态最好的公链,因为它找到了自己强大的应用场景。 回到行业本身,虽然一开始我们提到了区块链的1.0、2.0时代,但整个行业还处于非常早期的阶段。 我们也可以说现在是0.1、0.2时代。

作为区块链行业的从业者,笔者认为以太坊平台可以运载智能合约,之所以要普及区块链技术,是为了厘清区块链技术的边界。 区块链作为一种高冗余的数据存储方式,其本身以牺牲系统效率等为代价来提升安全性,并不是天生就适合所有的应用场景。 对于所有的公链来说,在未来的寒冬里,有足够的耐心去解决现有区块链技术的痛点,培育生态,才是真正不负这个时代。