主页 > imtoken下载正版 > 科普 | KPCB Edge:我们对以太坊的一些看法

科普 | KPCB Edge:我们对以太坊的一些看法

imtoken下载正版 2023-01-18 12:28:54

以太坊百科_sitehqz.com 以太坊和以太坊贸易的关系_sitejianshu.com 以太坊经典百科

自几个月前开发者预览版发布以来,作为专注于区块链的投资者,我们已经看到不少公司建立在以太坊生态系统之上。 对于那些不熟悉它的人来说,以太坊是一个“运行智能合约的去中心化平台”。 您可以在以太坊官方网站上了解更多关于以太坊的信息,维基百科上有其最重要功能的摘要。

我们希望以我们最了解的方式让每个人熟悉以太坊平台——通过制作一些演示并了解我们可以在平台上做什么。 在这里,我们将分享一些关于如何开始使用以太坊的简要说明,并解释为什么我们对此感到兴奋。 我们还建立了一些更复杂的合约,我们将在几周后讨论这些合约。

尽管以太坊仍处于早期开发阶段,但我们对它所带来的各种应用程序感到特别兴奋,我们也很高兴看到开发人员在最近几个月开始使用以太坊。 我们认为以太坊是区块链开发工具链的强大补充以太坊百科,使用户能够访问分布式计算资源和可变存储,这些资源是抗审查和防篡改的。

这些项目还激励我们在其他区块链(例如 Rootstock 或 Counterparty)上构建以太坊虚拟机 (EVM) 的替代实现。 我们认为这些是趋同于 EVM 字节码作为合约编程通用低级语言的早期迹象,但只有时间才能证明 EVM 字节码是否会成为主要的合约语言,也只有时间才能证明以太坊是否会成为最常用的实现EVM。 从我们的角度来看,像这样的项目的存在降低了项目创始人在以太坊上构建产品时面临的平台风险。

最让我们兴奋的仍然是一小部分公司,他们故意以最终用户看不到的方式使用区块链作为其堆栈中的架构选择。 从用户的角度来看,我们相信这些服务将比以往任何时候都更便宜、更快、更安全(详情可以在我们为区块链技术投资论文发布的介绍性博客中找到)。 我们将以太坊视为一个软件平台,可以显着增加区块链技术在应用程序技术堆栈中的潜在用途。

如果您是使用区块链技术的公司的创始人,我们很乐意与您交谈。

建立以太坊

注意:这些演示操作是在装有 OS X 的机器上编写/执行的,但相同的指令无需修改即可在 Linux 系统上运行,而在 Windows 系统上稍作调整即可运行。 这些说明要求用户对什么是以太坊、区块链如何工作以及软件工程有基本的了解。

按照以下说明安装 Ethereum go 客户端即可开始使用以太坊平台。 安装以太坊平台后,您应该通过直接在不带参数的 shell 中运行 geth 命令来开始将以太坊区块链同步到您的机器(即,作为守护进程运行以太坊百科,但对于本地测试,我发现在一个交互式 shell 也可以正常工作)。 同步区块链需要相当长的时间; 您可以通过查看每个日志消息末尾的守护程序块值并将该值与此以太坊仪表板上的总块值进行比较来判断。检查您的同步进度。 本演示的其余部分假设您正在运行一个守护程序,因此只需在后台保持 shell 打开即可。

sitejianshu.com 以太坊经典百科_以太坊百科_sitehqz.com 以太坊和以太坊贸易的关系

同步区块链时,您可以在本地创建和设置以太坊帐户。 您需要将一些以太币(以太坊的基础支持货币)本地存储在您的钱包中,以便能够部署合约。 以太币是以太坊的计算货币,用于以“gas”为单位的合约部署/交互,它具有由网络设定的动态价格。 可以通过查看上面提到的以太坊仪表板来检查当前的 gas 价格。

在第二个shell中,运行命令geth account new,为你的账户设置密码,并记录输出返回的以太坊地址。 在以太坊官方文档中有更多关于帐户创建/管理的信息。

sitehqz.com 以太坊和以太坊贸易的关系_sitejianshu.com 以太坊经典百科_以太坊百科

现在您将需要使用像 Poloniex 或 Kraken 这样的交易所购买一些以太币(或者如果您已经有一些比特币,则发送到这些交易所并交换以太币),或者通过以太坊网站上描述的其他方法其中一个获得一些以太币并发送它到您的本地帐户地址。 我们只需要有少量的 ETH 就可以开始使用以太坊——下面的演示操作可以用 0.1 个 ETH 轻松完成。 写这篇博​​客的时候,比较一下ETH和美元的汇率。 几乎是 0.1 美元。

一旦你的区块链完成同步,你可以通过上面给出的以太坊仪表板链接检查你的块数,并且你的新帐户中存储了一些以太币,你可以开始部署你的第一个合同已经启动。 您可以通过打开以太坊控制台查看您的余额; 在新的 shell 中输入 geth attach,然后运行 ​​web3.fromWei(eth.getBalance("ACCOUNT_ADDRESS"), "ether"); 其中 ACCOUNT_ADDRESS 是您之前创建的帐户获取地址。

sitejianshu.com 以太坊经典百科_以太坊百科_sitehqz.com 以太坊和以太坊贸易的关系

geth attach 是你进入以太坊 JavaScript 控制台的入口点,它提供了一些基本的 JavaScript 执行环境,包括一些以太坊扩展。 您可以在 Ethereum wiki 上找到完整的命令参考。

部署你的第一个合约

为了帮助您熟悉合约部署过程,我建议您从广泛使用的以太坊合约教程中部署一个简单的 Hello World 合约:

contract mortal {
  /* Define variable owner of the type address*/
  address owner;  /* this function is executed at initialization and sets the owner of the contract */
  function mortal() { owner = msg.sender; }  /* Function to recover the funds on the contract */
  function kill() { if (msg.sender == owner) suicide(owner); }
}contract greeter is mortal {
  /* define variable greeting of the type string */
  string greeting;  /* this runs when the contract is executed */
  function greeter(string _greeting) public {
    greeting = _greeting;
  }  /* main function */
  function greet() constant returns (string) {
    return greeting;
  }
}

该合约是用 Solidity 编程语言编写的,这是一种类似于 Javascript 的编程语言,可以编译为可以在以太坊虚拟机上运行的字节码。 Greeter 合约所能做的就是返回我们提供的字符串,在上面的例子中是“Hello, world!” 或类似的东西。 当我们使用完合同后,“凡人”类型为我们提供了一种终止合同的直接方法,它将在合同创建时创建的任何初始资金返回到最初创建合同时提供的以太坊地址。 凡人合约可以用作您编写的任何其他合约的基础——因为 Solidity 语言支持完整的合约继承模型。

为了部署这个合约,你需要将它编译成以太坊虚拟机字节码。 您应该构建一个本机编译器来安全地执行此操作,因为在线编译器可能会损坏并生成与您期望的不匹配的字节码。 但对于演示程序,使用基于 Web 的 Solidity 编译器应该就足够了。

假设您使用的是基于 Web 的编译器,您需要做的就是将您的 Greeter 代码粘贴到编译器中并编译以在右侧获得编译后的字节码。 更方便的是,右侧窗格还包含一个名为“Web3 Deployment”的 Javascript 代码片段,可以在 Ethereum JS 控制台中运行。 请注意,您需要在此代码段的顶部填写问候语才能在以太坊控制台中运行,稍后您可能需要此“界面”代码段。

sitehqz.com 以太坊和以太坊贸易的关系_sitejianshu.com 以太坊经典百科_以太坊百科

现在,通过在新 shell 中运行 geth attach 打开一个新的 Ethereum JS 控制台,并粘贴 Web3 部署片段。 几分钟后,您会看到一条消息“合约已成功开采!” 以及合约现在所在的地址。 您刚刚部署了您的第一个以太坊合约 - 恭喜!

以太坊百科_sitehqz.com 以太坊和以太坊贸易的关系_sitejianshu.com 以太坊经典百科

您可以在公共区块浏览器(例如)上搜索交易哈希来查找您的合约,甚至可以查看已部署的代码。 记下这个哈希地址,因为您将很快使用它与合约进行交互。

要与合约交互,请运行 greeter.greet(); 在同一个控制台中,您应该取回之前输入的字符串。 由于获取问候语不需要在区块链上运行任何代码,因此此操作消耗 0 单位 gas。 当您粘贴到 Web3 部署片段中时,“欢迎”对象会被实例化,但这也可以独立设置,因此任何人都可以运行合约而无需源代码的本地副本。

为了展示其他节点如何在其本地以太坊节点上运行相同的 Greeter 合约,我们可以在全新的控制台环境中运行相同的合约。 通过运行 exit 关闭您的以太坊控制台,然后再次运行 geth attach 以重新打开它。 要验证您是否处于干净的控制台环境中,请运行 greeter.greet() 并且您应该会收到显示名称未定义的引用错误。 现在,通过运行 var greeter = eth.contract(ABI).at("Address"); 来实例化一个新实例; 其中 ABI 是上述 Solidity 编译器的“接口”片段,Address 是合约,即挖矿后的地址。 现在您可以运行“greeter.greet()”来获取与之前相同的消息。

以太坊百科_sitejianshu.com 以太坊经典百科_sitehqz.com 以太坊和以太坊贸易的关系

这里需要注意的是,您指定的字符串现在存储在块中,任何人都可以访问; 您甚至可以创建一个功能,只允许您作为合同所有者更改它。

我在地址

在“0xb55f89461a273f8dbde74a92cdc752d86427476b”上还有另一个迎宾合约,它使用 Solidity 的网络编译器为您的迎宾合约提供的相同“接口”片段。 只是给你多一点提示,你可以通过运行 greet 函数看到我在合约中写的消息。

虽然这看起来毫无用处,但从开发人员的角度来看确实如此; 您正在运行一个非常简单的 hello world 程序,它会产生您期望的输出。 这里真正有趣的是,这段代码现在位于以太坊区块中,并且可以访问高度分布式、防审查和防篡改的存储和计算资源,而不需要您作为开发人员构建自己的分布式基础设施。

要终止您的合约,请运行 greeter.kill.sendTransaction({from: "ACCOUNT_ADDRESS"}),其中 ACCOUNT_ADDRESS 是您之前创建帐户时返回的地址。 之后你的迎宾合同就不能再运行了。

sitehqz.com 以太坊和以太坊贸易的关系_以太坊百科_sitejianshu.com 以太坊经典百科

我在这里省略了一些细节,但希望这些演示足以激励您探索更多。 我无法在这篇文章中介绍我们创建的一些项目,因此我们将在几周内发布后续博客。

原文链接:@kpcb_edge/our-thoughts-on-ethereum-31520b164e00