主页 > 最新imtoken官网下载 > 以太坊智能合约编程介绍(一)

以太坊智能合约编程介绍(一)

最新imtoken官网下载 2023-01-17 10:35:05

原文地址:@ConsenSys/a-101-noob-intro-to-programming-smart-contracts-on-ethereum-695d15c1dab4

多少dapp应用建立在以太坊去_以太坊dapp_sitebitett.com 以太坊dapp

1-ABBewYWJfdIFhgwBt8mfGQ.png

有人说以太坊太难用了,我现在写一篇入门教程,讲讲如何使用以太坊搭建智能合约和应用。

第一部分简介

如果你是加密货币行业的新手,对比特币知之甚少,更不用说它是如何运作的,那么你应该先阅读 Andreas Antonopoulos 撰写的关于比特币的书来熟悉这个行业。 然后看以太坊白皮书。

如果您已经熟悉加密货币以太坊dapp,请继续阅读。 您无需了解加密经济学的所有计算机科学知识,也无需了解有关以太坊如何改进比特币的论文,即可开始使用。

开始的例子

sitebitett.com 以太坊dapp_以太坊dapp_多少dapp应用建立在以太坊去

以太坊官方网站 ethereum.org 上有一些示例。 和官方文档。 还有一个学习智能合约的好地方:dappsforbeginners,虽然这个站点可能已经过时了。

这篇文章的目的是补充这些例子,然后介绍一些有用的开发工具,帮助你更轻松地使用以太坊、智能合约和开发dapps。 这篇文章只是从我个人的角度,借助ConsenSys的解释。

基本概念

让我们先看一些术语:

公钥密码学。 假设 Alice 有公钥和私钥。 她可以用她的私钥创建一个数字签名,然后鲍勃可以用爱丽丝的公钥来验证签名是否真的是用爱丽丝的私钥签发的,是否真的是爱丽丝签发的。 当你创建以太坊或比特币钱包时,一长串“0xdf...5f”地址是公钥,私钥存储在别处。 像 coinbase 这样的比特币钱包服务提供商会为你保管你钱包的私钥。 当然,你也可以自己保管私钥。 如果您丢失了某个钱包的私钥,那么该钱包中的所有资金将永远丢失,所以您最好备份好您的私钥。 我曾经丢失过私钥,感觉很糟糕。

点对点网络。 和bittorrent一样,以太坊的所有节点都是分布式网络上的点,以太坊上没有中央服务器。 【未来以太坊上会有一个混合的半中心服务器,方便用户和开发者,后面再说】

sitebitett.com 以太坊dapp_多少dapp应用建立在以太坊去_以太坊dapp

区块链。 区块链就像记录所有交易的公共分类帐或数据库。

以太坊虚拟机。 使用以太坊虚拟机,您可以在以太坊上开发比在比特币上更强大的程序。

节点。 你可以运行一个节点,然后通过这个节点,使用以太坊虚拟机,你可以读取以太坊区块链上的数据,或者将数据写入以太坊网络。 全节点需要下载整个区块链。

矿工。 网络上节点的工作是挖掘,处理区块链上的块。 您可以在以下地址查看当前活跃的以太坊矿工的部分列表:stats.ethdev.com。

工作证明。 矿工需要竞争来完成一些数学题。 第一个找出数学问题答案的矿工(区块链中的下一个区块)将赢得奖励:一些以太币。 然后每个节点更新到那个块。 每个矿工都想赢得下一个区块,这就激励他们不断更新,然后大家维护一个真正的区块链,全网达成共识。 【以太坊计划从pow切换到pow和pos的混合机制,但这不在本文讨论范围内】

醚。 或者简称eth。 它是一种真正的数字货币,您可以用它来购买东西。 在此,您可以进行交易。

多少dapp应用建立在以太坊去_sitebitett.com 以太坊dapp_以太坊dapp

气体。 在以太坊网络上运行和存储数据需要一定数量的 ETH。 通过这种方式,以太坊可以变得高效。

去中心化应用程序。 使用智能合约的去中心化应用程序。 dapp 的目标是(应该)拥有一个漂亮的智能合约界面,以及任何额外的功能,如 ipfs(一种在去中心化网络上存储和服务的方式,尽管不是由以太坊创建的)。 dapps 也可以在中央服务器上运行以太坊dapp,如果该服务器可以与以太坊节点通信,它们也可以在本地以太坊节点上运行。 [与常规网络应用程序不同,dapps 可能不会托管在服务器上。 他们可以使用区块链提交交易然后检索数据,而不是通过集中式数据库。 用户使用钱包地址并在本地存储数据,而不是使用典型的用户登录系统。 该体系结构的许多方面与当前的 Web 不同]。

对于上面的概念,可以看看这篇不错的文章:

以太坊客户端,智能合约语言

在不运行以太坊节点的情况下开发和部署智能合约。 可以在下面查看。 但是,如果您正在学习如何运行以太坊节点,那么了解基础知识并不太难。

运行以太坊节点的客户端

多少dapp应用建立在以太坊去_以太坊dapp_sitebitett.com 以太坊dapp

以太坊有多种不同的客户端实现(意味着您可以通过多种方式与以太坊网络交互),包括 c++、go、python、java、haskell 等。 为什么有这么多实现? 因为不同的语言是针对不同的人的。 它还扩展了以太坊网络的安全性和生态系统。 还有一个基于图形用户界面的客户端,alethzero。

在写这篇文章的时候,我一直使用go语言版本的geth,有时也会使用一个叫testrpc的工具,它使用的是python版本的客户端pyethereum。 现在我们使用的是新工具ethersim,它使用ethereumjs。 ethereumjs是一个javascript客户端,不支持真正的区块链挖矿,所以不是一个完整的客户端,但是在开发测试的时候可以模拟挖矿。 下面的示例将使用这些工具。

交互式控制台。 一旦你使用这些客户端并拥有一个节点,你就可以与区块链同步、创建钱包以及发送和接收 eth。 在 geth 上,您可以使用 . 或者通过 json rpc(远程处理调用),使用 cURL 等命令通过 url 获取数据。 不过本文的目的不涉及dapp开发,所以这个问题就不多说了。 但是,这些工具在调试、配置节点和使用命令行使用钱包时很有用。

在测试网络上运行一个节点。 如果您安装像 geth 这样的客户端并在实时网络上运行它,它需要一段时间才能下载整个区块链并将其与网络同步。 (你可以在stats.ethdev.com上查看最新的区块信息,然后与你的客户端节点日志进行对比,看是否完全同步)

但是要在真实网络上运行智能合约,你需要花费一些 ETH。 但是,您可以在本地测试网上免费运行客户端。 这也不需要下载整个区块链,并创建以太坊网络的私有实例,因此开发速度更快。

测试rpc。 您可以使用 geth 来运行测试网,但还有其他快速方法,例如使用 testrpc。 testrpc 将为您创建一批预存资金的账户。 而且它也非常快,并且更容易开发和测试。 你可以先从 testrpc 开始,然后等到你的合约看起来不错,再使用 geth。 要开始使用geth,你只需要指定一个networkid:geth-----netwokid "12345"。 后面会在例子中介绍testrpc的用法。 [现在 testrpc 的开发人员正在专注于 ethersim 作为 testrpc 的替代品,我将更新此示例以最终使用 ethersim。 如果你愿意,你也可以从一开始就使用 ethersim]。

以太坊dapp_sitebitett.com 以太坊dapp_多少dapp应用建立在以太坊去

让我们谈谈编程语言,然后进入真正的编程。

智能合约编程语言

使用坚固性。 开发智能合约的语言有几种:solidity,有点像javascript; serpernt,一种类似 python 的语言; 和 LLL,一种基于 lisp 的语言。 Serpent之前流行过一段时间,现在最流行的是solidity,solidity更健壮,所以我们用solidity。 你喜欢蟒蛇吗? 那仍然使用坚固性。

solc 编译器。 solidity写好智能合约后,用solc编译。 可以在这里安装。 如果要使用solc,也可以使用一些投机取巧的浏览器编译器,比如solidiy实时编译器或者cosmo,但是下面的编程例子都是使用solc编译的。

web3.js API。 编译智能合约并将其发送到网络后,您可以通过以太坊调用它并创建与这些合约交互的网络应用程序。

这些是在以太坊上开发智能合约和构建 dapp 的基本工具。

未完待续。 . . . .

给区块链初学者推荐一个以太坊DApp开发教程: