天天看点

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

什么是以太坊

以太坊是一个分散的计算机/节点网络; 网络中的每个节点执行一些字节码(即智能合同)并将结果状态存储在区块链中。 由于区块链代表应用程序状态的属性,这导致“应用程序完全按照编程运行,没有任何停机,审查,欺诈或第三方干扰的可能性”。

以太坊与比特币相似吗?

好。 有点,但也不是真的。 相似之处在于它们都使用区块链,但这就是它结束的地方。 由于以太坊不仅仅是一种数字货币,它还提供了一个开发基于区块链的应用程序的平台,这些应用程序包含智能合约,以太坊虚拟机(EVM),并使用其名为ether的货币用于点对点合同。

什么是智能合约

智能合约是在区块链上运行的计算机代码,其中包含一组规则,在该规则下该智能合约的各方同意彼此交互。 如果满足预定义规则,协议将自动执行。 执行该代码的平台为这段代码提供了一些属性,例如:不变性,确定性操作,分布式和可验证状态等。由此代码管理的状态存储在区块链中,不可变,任何人都可以再次检查当前状态是正确的,通过重放从链开始的所有事务。

EVM - 以太坊虚拟机

EVM(或以太坊虚拟机)是以太坊智能合约字节码执行环境。 网络中的每个节点都运行EVM。 所有节点使用EVM执行所有指向智能合约的事务,因此每个节点都执行相同的计算并存储相同的值。 此外,EVM确保程序无法访问彼此的状态,确保通信可以在没有任何潜在干扰的情况下建立。

Web3&技术堆栈

众所周知,在90年代初,万维网(WWW)彻底改变了信息。 从那时起,互联网变得更加成熟和可编程,我们看到所谓的Web2的兴起,它带给我们社交媒体和电子商务平台,彻底改变了社交互动,使信息,商品和服务的生产者和消费者更加接近,并让我们在全球范围内享受P2P互动。 但总是有一个中间人:一个平台充当A和B之间不信任或相互信任的可信中介。 尽管这些平台在创建P2P经济方面做得非常出色,并且拥有更加复杂的内容发现层,但他们也规定了交易的所有规则,而这些平台拥有我们所有的数据。

在这种情况下,区块链似乎是下一代互联网,分散式网络或Web3的驱动力,并引发了分散式网络堆栈。

与构建普通网络或移动应用程序类似,创建dApp(分散式应用程序)通常需要几件事情:计算,文件存储,外部数据,货币化和付款,如下所述。

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

Web 3.0抽象堆栈

随着我们向分散式系统的发展,这并不意味着我们将完全摆脱集中式系统。 看起来从客户端 - 服务器互联网向分散网络的过渡将是渐进的而不是激进的。 随着分散式网络栈的不断成熟,转型似乎正在从集中式转向部分分散式转变为完全分散式转变。

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

从集中式转移到完全分散式应用

开发一个DApp。 如何访问以太坊。

试图从开发人员的角度解释以太坊。

当前客户端服务器webapp架构处于非常高的水平

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

当前的客户端服务器应用程

Web应用程序托管在托管服务提供商(如AWS,Heroku或任何其他VPS)上。 客户端与这一个中央应用程序交互。 客户端可以是浏览器,小部件,curl命令或其他api消费服务。 当客户端通过Web浏览器向服务器发出请求时,实现的服务器代码与CRUD操作的数据库和/或缓存进行交互并为客户端提供服务。

这就是以太坊戴普在高层的表现:

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

未来派分散式应用架构

如果观察每个客户端(浏览器)与它自己的应用程序实例通信。 没有所有客户端连接到的中央服务器。 这意味着,每个想要与dapp(分散式应用程序)交互的人都需要在其计算机/电话上运行的区块链的完整副本等。这意味着,在您使用应用程序之前,您必须下载整个区块链并然后开始使用该应用程序。 这听起来可能起初很荒谬,但它的优势在于不依赖于明天可能会消失的单个中央服务器。

入门

我们需要的基本工具 -

节点包管理器(npm) - NPM是Node.js包或模块的包管理器。

TestRPC - TestRPC是一个基于Node.js的Ethereum客户端,用于测试和开发。 它在本地运行100%,模拟完整的以太坊客户端,但速度要快得多,非常适合测试和开发。

松露 - 松露是以太坊的开发环境,测试框架和资产管道。 基本上,它可以帮助您将合同部署到区块链中,为新的合同交换旧合同(称为迁移),并将您的前端连接到已部署的合同

MetaMask - MetaMask是一个以太坊轻客户端和Chrome扩展程序,可让用户与区块链进行交互,而无需下载整个区块链。 换句话说,它允许您在普通的Chrome浏览器中与dApp进行交互

首先,我们需要安装我们的工具。 让我们先安装npm,如果你没有。 这里是如何安装它的说明。

一旦安装了npm,我们就可以使用它来安装testrpc,这是一个模仿真实以太坊节点的Node.js以太坊客户端。

接下来我们需要安装松露

和最后一个MetaMask Chrome插件,你可以在这里找到。

启动TestRPC

这将启动客户端并生成10个账户供您使用,每个账户有100个ETH。 你应该看到这样的东西:

第一个列表是每个帐户的公开地址,第二个列表是与每个帐户关联的私人密钥。

安装Metamask

现在让我们设置MetaMask来使用我们的TestRPC作为它的网络。 打开MetaMask并按照初始设置步骤操作。

一旦设置了MetaMask,请选择左上角的网络菜单。 然后选择“Localhost 8545”作为您的网络,如下所示。

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

接下来,通过转到☰ - >导入帐户,然后在启动TestRPC时从终端中打印出的列表中复制一个私钥来添加几个帐户到MetaMask。 在我的情况下,它是 - 3e1a4466eadbb368835c5d57126c73ddc251dc490dd68c412d8c0ad76ee13789。

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1
【译】Getting Started With Ethereum and Building Basic Dapp — Part 1
【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

如上所示,我们可以看到账户(作为运行testrpc之后在终端中显示的第一个账户)。

我们的环境现在已经建立,我们准备好创建和部署我们的dApp。 首先创建一个新的项目目录,并使用集成的Webpack初始化默认的Truffle dApp。 我打算打电话给我的EthereumDapp项目,但你可以随心所欲地打电话给你。

初始化松露

部署合同并运行dApp

要将您的合同部署到TestRPC,请运行以下命令:

迁移完成后,我们可以运行我们的dApp

打开http:// localhost:8080 / 在浏览器中

您应该看到您的dApp正在运行并准备好使用! 如果您将当前的MetaMask账户切换到由TestRPC生成的第一个账户并刷新页面,您应该看到您的余额为10,000 META。 您可以使用dApp界面将META发送到其他帐户。

要在本地检查事务,我们可以安装etherparty explorer

安装etherparty

因为我们已经安装了nodejs和npm,所以只需要安装git。 以下是安装它的步骤。 一旦安装了git,打开一个终端并键入以下内容

这会将etherparty资源管理器克隆到本地目录资源管理器。 转到这个目录

现在让我们开始探索

导航到http:// localhost:8000 /。 你会看到下面的东西。

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

现在让我们将一些Metacoin(10 Metacoin)从testrpc账户转移到metamask账户,并在explorer中验证事务,如下所示。 一旦我们转移了10个Metacoins,我们可以在Etherparty Block Explorer(块#6)中检查交易,

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1
【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

我们也可以检查帐户的余额,如下所示(帐户2有9990 META,帐户1有10个META)

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1
【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

要确认交易,请检查在终端上运行testrpc和在Etherparty块浏览器上散列的交易。

【译】Getting Started With Ethereum and Building Basic Dapp — Part 1

在第2部分中 ,我创建了一个简单的公证智能合约,并展示了如何使用带有Test RPC和Truffle的web3js库和TestRPC部署它。

https://medium.com/@itsromiljain/getting-started-with-ethereum-and-building-basic-dapp-ebb681fb3748

继续阅读