LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > Ethereum开发速成班Part 2

Ethereum开发速成班Part 2

2020-10-29 明明很爱你y 来源:区块链网络
Ethereum开发速成班Part 2

【评论留言】留言+EOS地址 , 即可获得30key

在这一系列文章中的第二篇文章,将带你从Ethereum和去中心化计算的基础知识,到构建你的第一个D-APP。
作者:Connor Wiseman

Part 2


在第二部分中,我们将介绍Ethereum区块链的一些更基本的方面,比如钱包、交易和气体。同时给你简要介绍中心化应用与去中心化应用的异同,以及应该使用什么样的开发环境以及智能合约和去中心化应用开发的一些关键工具。

如果你刚加入这个系列,请从头开始观看https://medium.com/bitfwd/ethereum-development-crash-course-part-one-327dee16878b

更多Ethereum

第一条涵盖了Ethereum区块链背后的一些主要关键点,如节点和矿工、分叉、协议网络、哈希函数和梅克尔树。这是为了让你了解Ethereum区块链上发生的一些低级细节。

不要忘了保留第一篇文章中所学到的内容,以便将来在加密技术的开发世界中参考,因为正如前面所说,公共区块链背后的大多数基础设施将使用与所述相同的功能和基元。

现在在第二部分中,是时候开始研究更多关于Ethereum的高层次的东西了,我们需要了解Ethereum,才能成为生态系统内的开发者。再一次,这一切都将对加密领域内的基础知识负责,所以请大家尽量努力去接受并记住这一切。因为这些知识在与同事交流、活动中交流,甚至是与朋友喝社交茶或咖啡时,都是非常有用的。

帐户/钱包

账号和钱包归结到它们最初的使用情况时,几乎是一回事。它们都保存着我们的交易、余额、代币和nonce的记录。不同的是,账户作为数据存储在区块链上,而钱包可以有几个不同的变体,比如冷钱包和热钱包。

冷钱包--一种离线的钱包,通常像Ledger Nano S或Trezor等硬件钱包,也有纸质钱包。

热钱包--热钱包应该被认为是任何持续在线或可通过某种连接到达的钱包,如交易所钱包Bittrex、Poloniex、Binance、移动钱包、Metamask和桌面钱包,如Exodus或MyCrypto。

另一方面,账户有两种形式:一种是合约账户,另一种是EOA(外部拥有的账户),它是由两个独特的加密密钥组成的,就像我们在第一篇文章中讨论的那样,一个公钥和私钥。EOA存储的是密钥对的状态余额,密钥对所做的所有交易,交易的接收者是谁,以及账户做了多少交易。一个合约账户只会存储合约余额和合约存储(即代码、状态变量和函数)。

使用下面的命令来设置一个外部拥有的账户与go-etheruem节点。

请注意:"geth account new "命令不需要你有一个节点在运行,你可以在一个空的终端中使用该命令。


geth account new - 空白终端

一旦你执行了该命令,你将被提示为该账户输入密码。

您的新帐户是用密码锁定的。请输入密码。不要忘记这个密码
密码口令
重复密码
地址:{0x0000000000000000000000000000000000000000}

一定要把你的密码和它所链接的账户一起写在某个地方,通常公钥的首尾4-5位数字就足够了,以便追踪你的地址。

要设置一个新的EAO,而你有一个正在运行或与区块链同步的节点。

请使用以下方法

attach命令应该在一个新的终端中使用,并将给你一个javascript控制台,将连接到你的node.

geth attach - 当使用主网时,连接到正在运行的node.

geth --testnet attach - 如果你的node连接到一个测试网.然后使用下面的命令,用你的密码作为参数.

>

personal.newAccount("Password") "0x8d471a8ff59343c70780564abb29d1dac0d166c3"

如何获得你的账户及其余额清单

eth.accounts-你的账户列表。

eth.getBalance("0x8d471a8ff59343c70780564abb29d1dac0d166c3")

eth.getBalance将为你提供Wei中的余额。

web3.fromWei(eth.getBalance("0x8d471a8ff59343c70780564abb29d1dac0d166c3")

web3.fromWei--会给你ETHER中的余额。

交易

您可以通过Ethereum区块链有两种方式发送交易,要么是发送至他人的EAO,要么是发送至合约地址。

当发送ETH到另一个账户时,你需要的是你要交易的EOA的公钥以及一些ETH来支付交易在区块链上存储的气体。(稍后再讲讲气体)

在控制台中使用以下命令来发送事务

eth.sendTransaction({from:eth.accounts[0],to:“0x0000000000000000000000000000000000000000”, value: web3.fromWei(0.1, ‘ether’), gas: 210000})

这将从存储在你节点上的第一个账户发送交易。帐户被保存在一个内存数组中,并且从'0'开始,如果你想从一个不是你的第一个帐户发送交易,请使用eth.accounts[1]、eth.accounts[2]等数组进行迭代。

注意:当指定交易的值时,我们使用'web3.fromWei'。这是因为默认情况下,交易的值是以'Wei'为单位设置的,即以太坊的最低面额。以太坊被设置为10^18(10与18位小数),所以如果在没有使用web3.fromWei的情况下尝试发送0.1,你将从控制台收到一个错误。

如果你已经做到了,那就恭喜你! ????

这可能是你第一次使用开发者环境向Ethereum区块链发送的交易。但是,等等! 你如何获得交易的数据,看看它是否成功。一旦交易被发送,你应该在区块链上收到一些信息,这些信息看起来会是这样的

请注意:我使用的是开发控制台

这是您的交易被添加到区块链中,哈希函数返回您的交易的摘要,即 "fullhash "或 "交易哈希"。

要检索交易的数据,请使用

eth.getTransaction("0xe4b76f63ebd7055cc958df80f40b82a3de24a8e37efaef53211deb99541f2c34")

返回

交易数据

在这里的交易数据中,你看到我们有


blockHash - 交易被挖矿的区块的哈希值。

blockNumber - 在链上的哪个区块.

from - "from "账户.

gas - 交易使用的气体数量.

gasPrice - 你愿意为你的交易支付的价格,以使你的交易在网络上被挖掘出来.通常主网的价格在21-40gwei左右.hash - 交易的hash数据。

哈希 - 交易的哈希值.

input - 与tx、参数等一起添加的任何数据.

nonce - 从该账户出来的tx的编号.

r、s和v - 'r'和's'是ECDSA签名的输出,'v'是恢复ID。

to - 交易接收方的公钥.

transactionIndex - 该区块中tx的索引号.

value - 与交易一起发送的**数量.

Note: 交易哈希值是所有上述内容通过哈希函数的拼合,并以十六进制摘要的形式发布(即transactionHash)

很好!现在你有了交易的所有细节,关于那个特定的哈希值。现在你已经有了交易的所有细节,关于那个特定的哈希值,但是你怎么知道交易是否已经被确认,并且没有任何错误的执行。

请使用以下命令来验证交易

eth.getTransactionReceipt("0xe4b76f63ebd7055cc958df80f40b82a3de24a8e37efaef53211deb99541f2c34")

返回

交易收据

在这里,我们有交易收据,其中包括的组件有

blockHash- 交易被挖矿的区块的哈希值.

blockNumber - 在链中是哪个区块.

contractAddress - 如果交易被发送到一个合约上,地址就在这里.cumulativeGasUsed - 交易中使用的气体量.

cumulativeGasUsed - 交易中使用的气体量.

from - 发送者账户的公钥.

gasUsed - 交易中使用的气体数量.

logs - 在交易执行过程中调用的事件将存储在这里.

logsBloom - 事件日志的十六进制值将存储在这里.

status - 如果'0x0'交易已经失败。

to - 收件人账户的公钥.

transactionHash - 交易的哈希值.

transactionIndex - 该块中tx的索引号.

注意:这些组件是 "交易收据 "的一部分,只有部分组件会被包含在交易哈希值中。

棒极了!你现在已经检查了所有的数据。您现在已经检查了交易哈希中的所有数据,并验证了交易是否成功。

请注意:这只是一个钱包到钱包的交易。当向合约账户发送交易时,您需要合约的地址,您的账户中需要一些ETH作为加油费,如果需要的话,您还必须指定您希望从合约中调用的函数名称与函数参数。(我们将在后面的文章中介绍与合约的交易)

燃气??

现在是时候说说Ethereum最重要的一个方面了,那就是gas,没有gas,Ethereum区块链就无法运行。燃气从字面上看就是它在锡纸上说的gas。就像为你的汽车提供燃料的天然气,为你的家庭提供暖气,或者为你的野营炉子提供液体一样,天然气为Ethereum区块链提供了动力。

Ethereum中的气体为EVM和矿工处理交易和编译字节码所做的计算工作支付费用。Ethereum中的每一笔交易都必须有一些气体一起发送,才能被网络的矿工接收。如果你发送的交易没有气体,它就会永远停留在网络的云端,或者除非有矿工想免费开采区块并完成计算。

你可能已经注意到,当你在网络上发送交易时,你将不得不指定气体价格和气体限制。

Gas - 是用来衡量特定计算所需费用的单位。天然气的计量单位是 'Wei'。


Gas Price(价格) - 是指你愿意为执行计算而支付的每单位天然气的数量。这是用'Gwei'而不是'Wei'来计算的。


Gas Limit(限制)--是您愿意支付的最大气量,单位为'Wei'。


1 Wei = 0.000000000000000001 ether

1 Gwei = 0.000000000100000000ether

举个例子:比方说,你想发送的交易与天然气限额25,000和天然气价格为10。这意味着您需要支付25,000weix10gwei = 250,000wei,即0.00025 ETH。目前在Ethereum主区块链上处理这笔交易大约需要10c美元(3/5/2018)。


交易完成后剩余的气体都会退给交易发送者。同时如果交易发送者的账户中没有足够的ETH来支付交易,或者在执行过程中没有选择足够的气体来使用,交易就会失败。而除了已经消耗的天然气之外的所有资金将被转回发送者的账户。

网络的矿工将是收集所有交易和合约创造的气体的人,他们开采成块。矿工们也有权力操纵网络的天然气价格,只接受具有特定天然气价格的交易,比如20Gwei或以上。这又让矿工们可以决定可执行交易的兑换率是多少。当网络的牵引量较低时,矿工一般会抽出气价,不接受任何低费,因为他们想最大限度地利用采矿设备所消耗的电力。但另一方面,当网络流量很大时,矿工一般会降低对气价的预期,并接受相对较低的费用,因为网络上发生的交易量很大。

最新的天然气价格和信息请见

https://ethgasstation.info/index.php

中心化应用 v 去中心化应用 ??


传统的应用程序托管在AWS或Heroku等中心化服务器上,这意味着它们很容易受到DDOS攻击、SQL和数据操纵等攻击载体的攻击,但随着区块链技术的去中心化性质。这些漏洞会被抹去,应用程序的构建会更有强度和稳健性,以防止黑客攻击的发生。

去中心化应用的架构与中心化应用非常相似,因为它们首先被托管在web浏览器上,而web浏览器会连接到一个静态的前端,这个前端会用HTML、CSS和JavaScript编写。然后,前端将与Ethereum节点(区块链)对话,以检索用户与应用程序交互所需的数据。

传统的中心式网络架构

分散式v中心式网络架构

相同点和不同点


现在我们就来谈谈这两种应用之间的区别,以及它们在应用栈、UI/UX、应用逻辑和数据方面的相似之处。

堆栈的相似之处?


两种应用都可以在手机、平板、笔记本和PC上使用,因此两种应用的布局设计会相对相同。

堆栈差异

在堆栈设计架构上,唯一的区别之一就是密钥管理和身份管理的最佳插件。

UI/UX的相似性

使用React、Redux、Angular、Jquery等常用框架,可以实现两种应用的UI/UX设计。

UI/UX的差异?

去中心化应用与传统的应用开发方式不同,因为需要web3.js通过RPC与区块链对接。

https://en.wikipedia.org/wiki/Remote_procedure_call


应用逻辑相似性?

大多数业务和应用逻辑的标准框架都可以为双方所用,有些包括Trailblazer、Zend、Entity等。

应用逻辑的差异?

需要在无信任环境下的逻辑,需要编程到区块链上。

数据相似性?

你可以在这两种情况下使用传统的数据建模,如关系模型、网络模型、文档模型和实体-属性-价值模型。

数据差异?

去中心化应用的逻辑和数据必须通过部署在区块链上的智能合约进行编程。

D-APP的开发环境

在本文的最后一部分,我们将开始探讨什么样的开发环境最适合去中心化应用和智能合约开发。当然,你开始创业首先需要的是一个文本编辑器,如Atom、Sublime、Eclipse或Visual Studios。还有一个基于Web浏览器的IDE,叫做remix,在开发智能合约的时候非常棒。如果完全诚实的话,remix是最好的工具之一,你可以你用于Ethereum开发,由于它所拥有的功能。你能够编写代码,将你的合约部署到本地区块链、主网或托管端口,它甚至为你提供了一个调试工具和你的合约的分析师。除了语法警告和错误,remix还允许你在本地部署时通过IDE与你的智能合约进行交互。

https://remix.ethereum.org

其他一些工具,如Truffle、Embark、DappTools、Dappsys和Mythril也应该被认为是对你的环境非常有价值的,因为这些工具为你提供了不同类型的框架和测试模块,以便在构建应用程序时应用。最常用的是Truffles,紧随其后的是Embark和DappTools,但只是为了这篇文章的目的,我们将坚持使用Truffles。

请从 https://truffleframework.com 下载 Truffles 框架。我们将在本教程的后续部分使用Truffle。

感谢关注Crashcourse系列Ethereum开发的第二部分。如果您喜欢这篇文章,不要忘记继续关注第3部分,在那里我们将探索智能合约、数据类型、功能、权限和合约部署。

如果你等不及要看更多的内容,请留下点赞与评论,也欢迎批评指正。








—-

编译者/作者:明明很爱你y

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...