主页 > 以太坊钱包imtoken安装 > 科普 | 走进以太坊,第 1 部分

科普 | 走进以太坊,第 1 部分

以太坊钱包imtoken安装 2023-07-29 05:09:16

废话不多说,从头说起。

如果你是以下两种情况之一,你应该阅读这篇博客。

你是专业的软件工程师

您想对以太坊和相关生态系统有深入的了解。

预备知识:

您了解区块链的概念以及比特币如何使用区块链创建无需信任的数字货币。 如果您不明白,请观看这​​个短片或这个长片。 提示,您应该尽可能多地观看那个长视频。

你是一个专业的软件工程师,认真的那种,你一定有很多软件设计的工作经验。 了解系统/架构/数学可以成倍提高学习效率。

大约需要一周的空闲时间。 我已经告诉过你我们跳过废话。

您了解 Merkle 树的基本概念以及如何使用它来快速验证信息的正确性。

注意:您不需要阅读白皮书,但您需要理解它。 但事实证明,阅读白皮书是最快的入门方式。

我建议您用几天的时间阅读整个主题,深入了解该主题的精髓,然后分别深入研究每个链接。

以太坊区块链_以太坊开发区块链_以太坊区块链查询浏览器

虽然整个生态系统中的许多人都患有流行语癌症,但您会惊讶于这项技术的神奇之处是多么的少(没有)。 每个人的工作都站在巨人的肩膀上。 如果你是一名以专业软件工程师为生的人,并且你对这些项目和技术有很深的了解,那么不要再被这些废话分心了。

以太坊

以太坊是一个分布式计算机网络; 网络中的每个节点都执行一些字节代码(提示:智能合约),并将结果状态存储在区块链上。 由于区块链能够表示应用程序的状态,这就是为什么“完全按照编写的方式运行的应用程序不会出现故障、审查、欺诈或第三方中断的问题。”

很明显,短短的一段话无法给出令人满意的解释。 然后去阅读以太坊白皮书。 或者浏览互联网上许多“如何使用以太坊/区块链/智能合约”相关的帖子。 或者观看这个名为“25 分钟了解以太坊”的视频。 (编者按:本超链接为2016年版《25分钟了解以太坊》,文末有2017年版文字实录翻译超链接。)

智能合约

智能合约实际上只是一些代码(真的,只是代码),运行在像以太坊这样的分布式环境中。 执行此代码的平台赋予此代码一些属性,例如:不变性、确定性操作、分布式和可验证状态等。 这些由上述代码管理的状态存储在区块链上,无法更改。 任何人都可以从链的开头重播所有交易,以检查最新状态是否正确。

在以太坊中,一个合约有一个地址作为它的唯一标识(即创建者地址的哈希值和他之前发出的交易数量)。 客户端可以通过向该地址发送以太币、调用合约、查询分布式状态等方式与其进行交互。

重申一下,智能合约只是一些具有由区块链管理的分布式状态的代码。 例如,您用来接收和发送以太币的多重签名钱包是一个具有精心设计的用户界面的智能合约。

这个概念非常强大,我敢肯定您已经阅读了所有相关内容。 如果您还没有,请浏览一些您喜欢的中等技术源材料(嘿 Medium!),您会被淹没的人告诉您这个概念有多大的潜力。 您可能会遇到一些术语:资产/权限管理、去中心化自治组织 (DAO)、身份、社交网络等。

气体

每个全节点在网络上执行一个智能合约(同样,只是琐碎的代码),这将有很多冗余(好的一面),但也会消耗大量的精力和时间(坏的一面)。 因为执行操作是要花钱的,所以执行操作的成本直接关系到你的代码执行了哪些操作指令。 换句话说,每个低级操作码在 EVM 上执行时都会消耗一定量的“gas”。 “gas”是一个完全随意的词,只是运行计算指令成本的抽象标签。 为了解决宕机问题,有一个网络强制执行的gas limit,也就是说,你不能写一个永不停止的程序,你的操作会因为gas用完而被网络拒绝。

以太坊区块链_以太坊开发区块链_以太坊区块链查询浏览器

Gas 的“价格”(即在这个分布式计算机网络上将两个数字相加需要多少费用)由市场决定以太坊区块链查询浏览器,类似于比特币的交易费用。 如果您支付更高的 gas 价格,节点将优先处理您的交易以获得更高的利润。

一般来说,在以太坊系统中计算和存储东西比在传统环境中做同样的事情要昂贵得多,但以太坊可以为你的代码提供我们上面讨论的出色性能,而且成本是合理的。

一般来说,状态读取是免费的,而写入是需要 gas 的。 这是对 gas 概念的更深入的概述。计算以太坊合约中的成本

分布式应用程序 (dApps)

dApp 是一种分布式应用程序,其服务器端是一个或多个存在于以太坊网络上的知名智能合约。

dApp 不需要存储其所有状态并在区块链上运行所有计算,这对最终用户来说是非常昂贵的。 但 dApps 最终会在以太坊区块链上存储一个任何人都可以读取的可信状态。 许多 dApp 不处理以太坊区块链上的计算和存储,而是利用 IPFS 和 Golem(稍后讨论)技术以同样分散的方式执行这些操作。

以太坊社区在 GitHub 上有一个 dapp-bin 存储库,其中包含一些参考资料和示例。 当您查阅这些文件时,您必须注意这些文件的活动,因为这种信息很快就会过时。

另外,我们最终在 Twitter 上一致投票决定将“dApp”大写(现在你看,它具有统计意义)。 所以我们以后会把它写成“dApp”。

dApp 客户端

这些 dApp 通常具有易于使用的前端,因为没有人愿意使用命令行界面或手动制作请求来发送或接收带有哈希和操作码的交易(天哪,光想想就头疼)。

dApp 客户端实际上与您通常用于编程的任何术语“客户端”或“前端”没有什么不同,不同之处在于客户端与以太坊区块链(可能还有其他服务)进行交互。 这样的客户端通常是用 JavaScript 编写的,因为我们还没有完成将这个世界上的所有东西都翻译成 NodeJS。

以太坊区块链_以太坊区块链查询浏览器_以太坊开发区块链

准确地说,大多数 dApp 客户端首先是用 JavaScript 编写的,因为这样它就可以在每个人拥有的每个浏览器中运行。 由于一些现有工具的出色性能,一些 dApp 客户端通常是用 GO 语言编写的。这是一个有缺陷的良性循环,这意味着除非你确切地知道你要做什么,否则你可以在 JavaScript 和 Go 之间进行选择(和在某种程度上,Rust 也是一种选择)来写

用于与以相同语言开发的以太坊区块链和协议交互的 dApp 客户端。

* 关于“分布式应用”的确切术语/定义存在一些混淆/争议:它只是智能合约吗? 或者不时与以太坊平台交互以存储可信内容的系统的整个后端? 或者它是否还包括客户端代码和用户界面,所有这些作为一个整体被称为“分布式应用程序”?

* 我将其定义为“与以太坊区块链交互的系统后端”。 这足以将它与“智能合约”的概念区分开来,保证它有自己的概念,同时(正确地)暗示任何人都可以创建一个客户端来与之交互。

dApp 浏览器

DApp 浏览器,顾名思义,是一个应用程序(也就是大家熟悉的普通程序),通过它更容易使用 dApp 客户端(通常用 javascript 编写,与以太坊节点交互以与智能合约进行通信)。

dApp浏览器的主要功能:

提供一种连接到以太坊节点(本地或远程)并将该连接更改为不同节点(可能是不同网络)的简单方法。

为用户提供一个账户接口(“钱包”),使他们能够轻松地与这些分布式应用程序进行交互。

Mist 是以太坊的官方 dApp 浏览器。 Mist 是一个漂亮的 UI,用于与以太坊节点交互,发送和接收与其他智能合约(dApps!)的交易。

Status 是一款移动浏览器,可为 dApp 用户提供独特的用户体验。

以太坊开发区块链_以太坊区块链查询浏览器_以太坊区块链

Toshi 是 Coinbase 构建以太坊钱包和浏览器的尝试。 该项目坚信“微信”和“聊天机器人”的协同作用。

MetaMask 是一个 Google Chrome 插件,可以将 Google Chrome 变成一个用于去中心化应用程序的浏览器。 它的核心功能是在每个记录中引入 web3,一个 JavaScript 以太坊客户端库,允许 dApps 连接到由 MetaMask 托管的以太坊节点。 这个 Google Chrome 插件允许您管理钱包并连接到不同的可用以太坊网络。

Parity 是一个以太坊客户端(也是一个全节点实现),它结合了你的浏览器并将其变成一个 dApp 浏览器。

以太坊节点

你对比特币节点的了解大多适用于此。 节点存储区块链的副本,并且可以选择执行所有交易以确认结果状态。 你可以使用geth(第一方应用,GO语言)或parity(第三方应用以太坊区块链查询浏览器,Rust语言)作为轻客户端,也可以自己运行全节点客户端。

要自己运行一个节点,您需要知道要从哪个区块链同步以及要与哪些节点交互; 下面是对不同可用网络的讨论。

您可以使用 docker 和一些持久存储运行所有这些节点客户端。 如果您不想自己运行节点,可以使用 Infura 等第三方服务。 还有一种方法是运行本地节点进行测试和开发,后面会讲到。

如果您向用户分发 dApp 客户端,您也不需要提供以太坊节点入口; dApp 浏览器将提供他们需要的任何客户端连接。

以太坊代币

现在您知道我们如何编写将状态存储在区块链上的代码(智能合约)了吗? 假设在该状态下,我们存储了从一组以太坊地址到整数的映射。 我们称该整数为余额。 平衡什么? 这就是我们所说的令牌。

就是这样! 您听说过的所有令牌都是存储在分布式哈希表中的数字,使用 API(又名协议)添加和删除这些数字。 这是一个基本的代币合约(只有38行代码,其中一半是注释和空格)

以太坊区块链查询浏览器_以太坊区块链_以太坊开发区块链

看看 ethereum.org 上关于创建众筹项目的教程,你就会明白它只是一个与另一个合约(MyToken)交互的合约(Crowdfunding),就像上面链接的基本代币合约一样。 这没什么神奇的。

人们将代币用于很多事情,您很快就会发现想象力是无限的。 代币通常用于激励人们与协议交互、证明资产所有权、证明投票权等。 来自 Coinbase 的 Fred Ehrsam 就代币、它们存在的原因以及它们的使用方式进行了精彩的讨论。

Vitalik 最近分析代币销售模型的博文也是极好的读物。 (编者注:中文翻译见文末“众筹模式解析”超链接)

ERC20 / ERC223 / ERC777 / ERC827 / 各类代币

为了让更多的人与他们的代币合约进行交互,每个人都开始定义自己的协议,这些协议很快就过时了。 所以一些人聚在一起创建了 ERC20 规范。 它说“嘿,支持这些函数签名,我们都会有一个更美好的未来”。

由于 ERC20 规范的一些问题(由于设计时间框架、较少的安全考虑以及每次付款需要两次交易),现在我计划制定更多的代币标准。

* 大家一直对ERC223和ERC23的区别感到困惑。 它们是同一个概念。 因为标准的ERC编号是223,所以应该叫ERC223。

ERC721 / NFT 代币(不可替代代币)

ERC721 定义了非同质代币标准。 (编者按:中文翻译见文末)“非同质化”是指每个token与另一个token不同; 每个令牌的价值或多或少与另一个令牌相比,具有独特的属性。 CryptoPunks 和 CryptoKitties 就是最好的例子。

* 还有ERC821,但是它的概念已经通过社区的共识融入到ERC721中。

区块链艺术家指南,第 1 部分

原始链接:@mattcondon/getting-up-to-speed-on-ethereum-63ed28821bbe