智能合约能否升级/修改? CPU挖矿是否值得?这里回答了这些热门问题...........

  在本文中,我将解答人们在了解以太坊(Ethereum)的过程中所遇到的几个最重要的问题。它们大多来自网站ethereum.stackexchange.com。这篇文章的目的就是要整理出一份条理清晰、易于查看的清单,以便可以随时参考,以满足你学习以太坊的兴趣需求。

1

  如果你有任何其他问题可随时通知我,我会将它们添加到列表中,期望对大家有所帮助。现在让我们开始吧。

以下是问题列表,你只需向下滚动即可找到相应的问题:

1. 我如何检查以太坊(Ethereum)地址是否有效?
2. CPU挖矿是否值得?
3. 所消耗的以太币(ether)/燃气(gas)去了哪里?
4. 如何用美元(USD)购买以太坊(Ethereum)?
5. 交易和调用(call)有什么区别?
6. 智能合约能否升级/修改?
7. 如果把以太坊(ETH)的以太币发送到以太坊经典(ETC)地址,那还能取回这些以太币吗?
8. 权益证明(proof of stake)和工作量证明(proof of work)有什么不同?
9. 为什么以太坊计划转用权益证明?
10. 以太坊中至少确认多少次算是安全的?
补充问题:如何在Ethereum上从头开始创建去中心化应用程序(Dapp)?

1.我如何检查以太坊地址是否有效?

有效的以太坊地址具有以下属性:
- 它必须有42个字符,包括最开始的“0x”。
- 它只能含有以下字母:a,b,c,d,e和f。这意味着带有“h”字母的以太坊地址无效。
- 它可以有从0到9的任何数字。
- 如果它具有所有上述的这些属性,而且是全部小型大写或者全部大写,那么它就是有效的地址。
- 否则,如果地址是大写字母与小写字母的组合,则必须检查该地址的校验和。你可以用js库web3.js 1.0做到这一点,只需执行工具函数web3.utils.isAddress(“这里是你要查看的地址”),如果有效,则返回真,无效则返回假。

如果你只想检查一个地址是否有效,而不关心它是如何工作的,那你可以在这个网站进行操作:https://tokenmarket.net/ethereum-address-validator

2. CPU挖矿是否值得?

  如果你用你的CPU处理器进行挖矿,会得到约0.25 MH / s的散列率,假设你的电力是100%免费,那么你每天会得到约0.0184美元。而对比GPU挖矿,你可以获得大约35 MH / s,这相当于在免费电力的情况下,每天能获得2.5美元,因此答案是显然的。你可以在这个网站计算你所可能获得的值:https://etherscan.io/ether-mining-calculator

  CPU挖矿同样也会给你的计算机硬件带来额外的负担,因此最好采用GPU进行挖掘,这会给你带来约35 MH / s或者每天2.5美元的收益。

3.消耗的以太币(ether)/燃气(gas)去了哪里?

  你在以太坊执行交易时所支付的gas被发放给了矿工,他们使用各自的算力通过挖矿来处理区块链上的交易。

  你要支付多少由你自己决定,具体可按以下公式进行计算:
  交易所需的然气 * 你设定的然气价格 = 总价

  你可以使用库web3.js中的函数myContract.methods.myMetho(param1,...).estimateGas(options,callback)对一笔交易所需的燃气(gas)进行计算评估。

4.如何用美元购买以太坊?

  1. 在Gemini、coinbase、kraken、gdax或任何其他允许使用法定货币的交易平台上创建账户。

  2. 验证该帐户。为了证实你的身份,他们会要求你上传一堆个人文件,并与监管银行联系。尽管按照他们所说的去做。

  3. 把钱汇到交易所。如果你使用的是kraken,按照这个步骤进行:筹集资金 - >转换成 USD - >用SEPA银行转帐汇款。钱到达交易所一般需要几天的时间。如果你使用的是coinbase,直接通过信用卡就可以购买了。不过银行转账因为收费较少,所以它总是一个更好的选择。

  4. 汇款到达后就可直接购买以太币。你可以在YouTube上搜索在特定的交易所具体要如何操作。在coinbase中,你只需直接使用信用卡购买,以太币(Ether)会即刻存入你的账户。

5.交易和调用(call)有什么区别?

  调用(call)只是从区块链中读取信息。比如,当你用metamask插件连接以太坊节点并进行一次调用(call)时,实际上你所做的只是在与metamask连接的区块链中搜索数据,以找出call中需求的信息。

  鉴于这个原因,事实上它不会花费任何燃气(gas)/以太币,因为你并没有向任何人发送信息,也没有将信息添加到区块链中,同时也没有人对该call实施挖矿,所以矿工们并没有得到任何支付,因为他们没有参与call的执行。不过你只能调用那些具有常量公共变量属性的函数,因为它们具有从智能合约中获取值的恒定功能。

  交易是一种用新信息来更新区块链的方式。当你生成交易时,你也在向所有的以太节坊节点发送信息,以便他们可以更新区块链。矿工获得信息并更新各自的区块链,这是一个写操作。

  举例说明一下。如果你将以太币发送给另一用户,你实际上正在生成一笔交易,即增加用户B的余额,同时减少用户A的余额,该信息被写到区块链中,那么你就必须为此次挖矿支付燃气(gas)费用。

6.智能合约能否升级/修改?

  能但也可以说不能。部署在区块链上的合约是不可更改的,这意味着智能合约的地址和代码无法修改,因为它被永久地写在了区块链上。

  不过仍有办法使用新的合约来替代原有的那份,这很像是对合约进行升级。其中的一种更新代码的方法是创建一份中间智能合约,它拥有与活动智能合约同样的地址。对中间合约的所有调用(call)和交易都可通过函数delegatecall重定向到活动版本的合约。这样,尽管使用的合约地址相同,但最终执行的却是不同的智能合约代码,它是一份已经升级了的合约代码。

  需要注意的是,在授权calls时存在重要的安全风险,因此在设计升级的智能合约时要格外当心。

  另一种方法是只需从旧有的合约中抽取所有的信息并将其插入到新的版本,然后将地址更新并让你的用户看到即可。

  你可以创造性地找出自己特有的方式来升级智能合约。

7.如果将以太坊(ETH)的以太币(ether)发送到ETC(以太坊经典)地址,那还能取回以太币吗?

  如果你将以太币(ether)发送到以太坊经典(ETC)地址,那么你是否能取回你的以太币主要取决于你是否在使用智能合约。

  私钥对以太坊的两条链同等有效。这意味着如果你发送10个ETH到ETC地址,那么对等的ETH地址也将收到10个ETH,因为同一个帐户存在于两个链中。因此,如果你直接向ETC帐户发送ETH,那么只要两个链上的接收地址相同,就不会失去以太币。

  不过,现在智能合约对于每个链都是独一无二的,因为它们不是由私钥生成的。因此,这时你要向ETC智能合约地址发送10个ETH的话,就会失去这些以太币,除非你创建的智能合约拥有与以太坊经典区块链上恰恰同样的地址。鉴于可能的地址数量非常之大,这种情况几乎不可能出现。

  如果你是从交易所汇出资金,则取决于交易所是使用智能合约来管理钱包还是使用基于私钥的帐户来管理,同时还要考虑他们是否使用了自动重放交易的功能(比如,如果你将此交易发送给poloniex数字交易平台,tx将被重播,那么你发送的即使是ETC存款地址,最后也同样会被记入ETH)。所以确实没什么办法可以知道能否取回以太币,除非可以联系到交易所,而且他们也恰好正在处理这笔交易。

8.权益证明(Proof of Stake)和工作证量证明(Proof of Work)有什么不同?

  权益证明(Proof of Stake)和工作量证明(Proof of Work)都是区块链上达成共识的算法。任何人都可以创建一个区块,然而我们只想要一个独特的链,因此我们需要一种方法来确定我们将要信任哪个块。

  公有链(public blockchain)网络中共识算法的目标就是让许多不同的用户就当前区块链的状态达成一致,即使他们互相并不信任或者不相信任何中心权威。

  工作量证明(Proof of Work)有着优良的特性,你可以使用贝叶斯定理和热力学定律来证明给定的区块确实需要一定的工作量才能挖掘出来。这样,用户只需选择具有最大工作量的有效链也即最长链作为正确的链就可以了。不过从能量的角度来看,这意味着该算法的效率极低,因而也就变得极其昂贵,这使得矿工们必须将他们的哈希算力集中起来才得以继续。   而另一方面,权益证明(Proof of Stake)则不需要挖矿,它只需要验证。实际上,在这种情况下,区块仍需要有人创建,而由谁来创建下一区块则取决于具体的权益证明算法,只是选择过程必须具有某种随机性,或者至少能够分散投票权益。 相比而言,权益证明更为环保,因为你无需再做大量的计算,只是在挖矿或处理交易时你必须禁售你的持币/代币。

  综上所述,工作量证明是一种通过大量且昂贵的计算操作来验证交易的过程,而权益证明则是通过向区块链上你所拥有的权益进行投票或下注来进行验证的一种方式。

9.为什么以太坊(Ethereum)计划转用权益证明?

  以太坊开发人员正在开发名为Casper的新版区块链,从而将工作量证明(Proof of Stake)算法更新为权益证明(Stake of Stake)算法,用以解决以下几个问题:

  • 安全性:以太坊开发者及研究人员认为,相比工作量证明,权益证明共识算法能够为给定的资源成本提供更高程度的安全性,而相应的网络对各种攻击也会更为牢固安全。

  • 运营成本:无需消耗大量的电力以维护区块链的安全(比如,据估算,无论是比特币还是以太坊每天都会因共识机制耗费掉超过100万美元的电力和硬件成本)。哈希计算的能量消耗差不多相当于整个冰岛的能量消耗。这样的运营成本迫使用户要为每笔交易支付大量的然气(gas)费用。而采用权益证明可大大降低燃气(gas)成本,因为这种情况下矿工不再是不可或缺的。

  • 更少的持币:由于不需要大量的电力消耗,也就没必要再发行更多的新币来激励参与者继续参与。

  • 更为强健:相比工作量证明的共识算法,权益证明采用经济惩罚的方式使得各种形式的51%攻击变得更加昂贵 - 用Vlad Zamfir的话来说:“那就像是,如果你参与了51%攻击,那你的专用集成电路(ASIC)块就会被烧毁”。

10.以太坊中至少确认多少次算是安全的?

  Vitalik Buterin在Ethereum博客中表示:为了缩小差距,只需在较快的链上进行少量的额外确认(准确地说,大约两到五次)。同一概率模型下,比特币10分钟的区块链需要6次确认(~1小时),而以太坊中17秒的区块链可能需要10次确认(约3分钟)才能达到类似程度的安全性。。

  尽管现在对需要确认的次数还没有一个统一的标准,但总的来说可认为是5次左右。

补充问题:如何在Ethereum上从头开始创建去中心化应用程序(Dapp)?

  如果你想成为以太坊/智能合约开发者,你需要遵循以下简单的步骤:

  1. 阅读基本概念。以太坊白皮书会是一个好的开始:https://github.com/ethereum/wiki/wiki/White-Paper。然后可以阅读以太坊常见问题(FAQ)以获得有关以太坊生态系统的精彩介绍:https://github.com/ethereum/wiki/wiki/Ethereum-introduction

  2. 根据下面的这些教程,即刻试着编写智能合约。开始越早,也会变得越快越好:
    - 在Ethereum中创建和部署完全去中心化应用程序(Dapp)的完整教程
    - 全栈Hello World投票应用以太坊应用程序(Dapp)编写教程
    - 以太坊迎宾员
    - 用Solidity语言建立你的第一个以太坊智能合约

  3. 可在网站ethereum.stackexchange.com提出你的任何疑问,并保持每天都能够创建出自己的小项目以获得进步。

  感谢你阅读整篇文章! 希望你找到了对你个人发展有用的信息。 如果你有任何的更改或改进建议可随时提出,我会查阅所有的评论。

  另外请务必支持这篇文章。要查看以太坊发展的更多文章,请继续关注medium以及www.linkedin.com/in/merunasgrincalaitis的linkedin平台。

  如果你有任何其他问题可随时告知于我,我会将它们添加到此列表中,期望对大家有所帮助。

  如果你希望我帮你处理初始货币发行(ICO)、去中心化应用程序(dapp)、ethereum项目、代码审计或代币这些方面的问题,请将邮件发送至我的个人电子邮箱merunasgrincalaitis@gmail.com,以便详细讨论它们。 祝你拥有美好的一天!