主页 > imtoken国际版和国内版 > 首页> TokenPocket钱包官网> 什么是以太坊

首页> TokenPocket钱包官网> 什么是以太坊

imtoken国际版和国内版 2023-07-03 05:22:19

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!!

什么是以太坊

以太坊是一个基于区块链技术的去中心化应用平台。 它允许任何人在平台上构建和使用运行在区块链技术上的去中心化应用程序。

不懂这句话的同学可以理解为以太坊就是区块链中的安卓。 它是一个开发平台,允许我们编写基于区块链技术的应用程序,如 Android 框架。

在没有以太坊之前,写一个区块链应用是这样的:复制一份比特币代码,然后改变底层代码如加密算法、共识机制、网络协议等,一个新的币就会出来)。

以太坊平台封装了区块链底层技术,允许区块链应用开发者直接基于以太坊平台进行开发。 开发者只需要专注于应用本身的开发,大大降低了难度。

目前,围绕以太坊已经形成了一个比较完整的开发生态:在社区的支持下,有很多开发框架和工具可供选择。

智能合约

什么是智能合约

以太坊上的程序称为智能合约,它是代码和数据(状态)的集合。

智能合约可以理解为用代码编写的合约(特殊交易),可以在区块链上自动执行(消息驱动)。

智能合约英文为Smart Contract,与人工智能(AI:Artificial Intelligence)的智能无关。 Nick Szabo 于 1995 年首次提出智能合约的概念,概念很简单,就是将法律规定写成可执行代码。 那时候还没有区块链,但是智能合约是区块链最好的搭档。 我们知道,合同要求一式两份,三份或四份,不能由一方控制。 这就是权力下放。

在Bitcoin Script中,我们提到比特币交易是可以编程的,但是Bitcoin Script有很多的局限性,可以编写的程序也是有限的。

以太坊币钱包下载_以太坊钱包的币怎么不显示了_以太坊钱包提币到交易所

虽然以太坊更完整(在计算机科学术语中称为“图灵完备”),但它让我们可以编写几乎可以做任何事情的程序(智能合约),就像任何高级语言一样。

智能合约非常适用于对信任、安全、持久性要求高的应用场景,例如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权管理、物联网、点对点交易等

目前除了数字货币,真正的应用还不多(就像移动平台刚刚起步一样)。

编程语言:Solidity

官方推荐的智能合约编程语言是Solidity,文件扩展名以.sol结尾。

Solidity 语言与 JavaScript 非常相似,用于开发合约并编译为以太坊虚拟机字节码。

还有 Viper、Serpent、LLL 和 Bamboo。 我建议你使用 Solidity。 更新:官方不再推荐使用 Serpent。 建议 Serpent 用户切换到 Viper,这两种语言都是类 Python 的语言。

Browser-Solidity 是用于浏览器的 Solidity IDE。 您可以点击查看。 以后我们会在更多的文章中介绍Solidity语言。

运行环境:EVM

EVM (Ethereum Virtual Machine) 以太坊虚拟机是以太坊智能合约的运行环境。

Solidity 之于 EVM 就像它之于 JVM,因此每个人都很容易理解。

以太坊虚拟机是一个隔离的环境,运行在 EVM 内部的代码是无法被外界访问的。

EVM 在以太坊节点上运行。 我们将合约部署到以太坊网络后,合约就可以在以太坊网络上运行了。

以太坊钱包的币怎么不显示了_以太坊币钱包下载_以太坊钱包提币到交易所

编译合约

运行在以太坊虚拟机上的是合约的字节码形式。 我们需要在部署之前编译合约。 您可以选择 Browser-Solidity Web IDE 或 solc 编译器。

合同部署

在以太坊上开发应用程序时,经常会用到以太坊客户端(钱包)。 平时我们在开发,一般不会接触到client或者wallet的概念,那是什么?

以太坊客户端(钱包)

以太坊客户端,其实可以理解为一个开发者工具,提供账户管理、挖矿、转账、部署和执行智能合约等功能。

EVM 由以太坊客户端提供

Geth是以太坊开发中使用的典型客户端,基于Go语言。 Geth 提供了一个交互式命令控制台,通过它可以包含以太坊的各种功能(API)。 文章后面会介绍Geth的使用,这里先介绍一个概念。

Geth 控制台类似于 Chrome 的开发者工具中的控制台,但 Geth 控制台运行在一个终端中。

与 Geth 相比,Mist 是一个带有 GUI 的以太坊客户端。

如何部署

部署智能合约是指将合约字节码发布到区块链上,并使用特定的地址来标记合约,称为合约账户。

以太坊中有两种类型的账户:

以太坊币钱包下载_以太坊钱包的币怎么不显示了_以太坊钱包提币到交易所

o外部账户

此类帐户由私钥(由人控制)控制,并且不与任何代码相关联。

o合约账户

这些账户由他们的合约代码控制,并有一个与之相关联的代码。

与比特币的 UTXO 设计不同,以太坊使用更简单的账户概念。

这两种账户类型与 EVM 相同。

外部账户与合约账户的区别和关系如下:外部账户可以通过使用自己的私钥创建并签署交易来向另一个外部账户或合约账户发送消息。

在两个外部账户之间传递消息是传递价值的过程。 但是从外部账户到合约账户的消息会激活合约账户的代码,允许它执行各种操作(例如转移代币、写入内部存储、挖掘新代币、执行某些操作、创建新合约等。等待)。

只有当外部账户下单时,合约账户才会执行相应的操作。

合约部署就是将编译好的合约字节码以通过外部账户发送交易的形式部署到以太坊区块链中(实际部署需要等到实际矿工出块后才能成功)。

跑步

部署合约后,当需要调用智能合约的方法时,只需要向合约账户发送消息(交易)即可。 消息触发后,智能合约的代码将在 EVM 中执行。

气体

以太坊币钱包下载_以太坊钱包提币到交易所_以太坊钱包的币怎么不显示了

与云计算类似,占用区块链资源(无论是简单的转账交易,还是合约的部署和执行)也需要相应的费用(天下没有免费的午餐,对吧!)。

Gas 机制用于以太坊上的计费。 气体也可以被认为是一个工作单元。 智能合约越复杂(计算步骤的数量和类型、使用的内存等),完成操作所需的 Gas 就越多。 .

为任何特定合约运行合约所需的气体量是固定的,由合约的复杂性决定。

gas price 由运行合约的人在提交运行合同的请求时指定,以确定他愿意为交易支付多少:gas price(以太币)* gas 量 。

Gas 的目的是在支付执行费用的同时限制执行交易所需的工作量。 当EVM执行一笔交易时以太坊钱包的币怎么不显示了,gas会按照一定的规则逐渐消耗。 不管在哪里执行,一旦gas用完,就会触发异常。 当前调用框架中所做的所有状态修改都将回滚。 如果执行结束时仍有gas剩余,则gas会返还给发送账户。

如果没有这个限制以太坊钱包的币怎么不显示了,有人会编写一个不可阻挡的合约(例如:无限循环)来阻塞网络。

所以实际上(把前面的内容串起来),我们需要一个有以太币余额的外部账户来发起一个交易(普通交易或者部署运行一个合约),在运行的时候,矿工收取相应的工作量成本。

以太网络

有焦急的同学想问,没有以太币怎么开发智能合约? 以下选项可用:

选择以太坊官网测试网Testnet

在测试网络中,我们可以轻松获得免费的以太币,缺点是初始化节点需要很长时间。

使用私有链

创建自己的以太坊私有测试网络,也就是通常所说的私有链,我们可以将其作为开发、调试和测试智能合约的测试环境。

以太坊钱包提币到交易所_以太坊币钱包下载_以太坊钱包的币怎么不显示了

通过上面提到的 Geth 很容易创建你自己的测试网。 不同步官网整个区块链数据,你能挖多少以太币。

使用开发者网络(模式)

与私有链相比,在开发者网络(模式)中,余额较大的开发者账户会自动分配给我们。

使用模拟环境

另一种创建测试网络的方法是使用 testrpc,这是一个以太坊环境,在本地使用内存模拟,使开发和调试更容易和更快。 而testrpc可以帮助我们在启动时用资金创建10个测试账户。

开发合约时,在testrpc中测试通过后,即可部署到Geth节点。

更新:testrpc 现已合并到 Truffle 开发框架中,现在称为 Ganache CLI。

Dapp:去中心化应用

以太坊社区将基于智能合约的应用称为去中心化应用。 如果我们将区块链理解为不可变的数据库并将智能合约理解为与数据库一起工作的程序,那么 Dapps 就很容易理解。 一个Dapp不仅需要有智能合约,比如还需要有友好的用户界面等等。

松露

Truffle 是一个 Dapp 开发框架。 它可以帮我们处理很多不相关的小事,让我们可以快速的开始编写代码-编译-部署-测试-打包DApp的流程。

总结

现在让我们总结一下,以太坊是一个让我们可以使用区块链技术轻松开发去中心化应用程序的平台。 在这个应用中,使用Solidity来编写智能合约,在编写完与区块链交互的合约后,我们需要使用以太坊客户端来部署和运行带有余额账户的合约(使用Truffle框架可以帮助我们做这些事情)更好的)。 为了方便开发,我们可以使用Geth或者testrpc搭建测试网络。

注:在本文中,为了方便大家理解,有些概念是类比的,有些是严格不准确的,但我也认为对于初学者来说,没有必要非常仔细准确地掌握每个概念。 学习是一个逐渐深入的过程。 很多时候我们会发现,经过一段时间后,我们对同一件事的理解是不同的。

看完本文,这些概念你都明白了吗?现在可以开始开发了,来看看智能合约开发环境搭建和Hello World合约