DAPP开发丨DAPP系统开发技术详细丨DAPP智能合约系统开发案例及源码

简介: DappTools最初是用Haskell语言编写。然而最近,Paradigm团队采用了DappTools并用Rust重写了它,并称他们的新创造为Foundry。两者的工作方式相似,因为它们都以命令行为中心,高效,并且常常会涉及编写带有大量模糊测试的Solidity测试代码。

  dApp的主要特点

  •开源:代码是公开的,任何人都可以查看、复制和审核。(这会随着新的dApps而改变,稍后会详细介绍)。

  •智能合约[1]:它们自动在dApp上执行某些规则。

  •公开:所有数据和记录,包括历史交易,都必须公开。

  •去中心化:没有人可以阻止用户使用该应用程序,因此没有人完全负责。

  DappTools是什么?DAPP系统开发详情:I35系统7O98开发O7I8

  DappTools是一个类似于Hardhat和Brownie的框架,可以帮助智能合约开发者测试、部署和维护他们的代码。如果部署一个合约,你会将编译后的字节码存储在哪里?如何跟踪它的去向?重新部署新代码的难度如何?这些都是可以通过使用智能合约开发框架来解决的问题。

  DappTools最初是用Haskell语言编写。然而最近,Paradigm团队采用了DappTools并用Rust重写了它,并称他们的新创造为Foundry。两者的工作方式相似,因为它们都以命令行为中心,高效,并且常常会涉及编写带有大量模糊测试的Solidity测试代码。

  DappTools是许多业内领先协议的流行选择。

  开始

  一旦我们安装了这些工具,我们就可以克隆入门工具包仓库并开始使用它。

  sh

  git clone https://github.com/smartcontractkit/dapptools-starter-kit

  cd dapptools-starter-kit

  make#This installs the project's dependencies.

  make test

  现在你有了这些文件,我们来看看所有的东西是做什么的:

  Makefile:放置脚本的文件。DappTools是基于命令行的,makefile能帮助我们运行只需要输入几个字符的大型命令。

  lib:此文件夹用于存放外部依赖项,例如OpenZeppelin或ds-test。

  out:编译代码的去向。类似于Brownie中的build文件夹或Hardhat中的artifacts文件夹。

  src:这是智能合约文件所在的位置。类似于Brownie和Hardhat中的contracts文件夹。

  测试

  现在我们做一些测试!要进行测试,我们可以运行make test或dapp test。

  来自DappTools的所有命令都可用于此仓库,包括dapp build、ethsign和dapp test等。

  导入外部依赖

  假设我们想使用OpenZeppelin标准创建一个NFT。要安装外部合约或包,我们可以使用dapp install命令。我们需要指定GitHub仓库的组织和要安装的仓库名称。

  首先,我们需要提交到目前为止的更改。DappTools将外部包作为git子模块引入,因此我们需要先提交。

  运行:

  git add.

  git commit-m‘initial commit’

  然后,我们可以安装我们的外部包。例如,对于OpenZeppelin,我们将使用:

  dapp install OpenZeppelin/openzeppelin-contracts

  现在应该可以在lib文件夹中看到一个标有openzeppelin-contracts的新文件夹,因为它是从GitHub下载的。这个仓库已经包含OpenZeppelin合约,所以会有一些重复,但我们仍然需要了解它是如何工作的。

  部署

  要进行部署,首先需要设置ethsign和.env文件。

  设置你的帐户/ethsign

  要将你的私钥导入DappTools,可以使用keystore或ethsign。ethsign附带dapptools的安装。对于ethsign,运行以下命令:

  bash

  ethsign import

  现在将提示你输入私钥和密码。你可以从MetaMask等钱包中获取私钥。成功后,将私钥的地址添加到.env文件中的ETH_FROM变量下。有关示例,请参见.env.example文件。

  可查看Makefile了解有关其背后工作原理相关的上下文。

  如果你要部署到测试网,请确保你的钱包中有测试网ETH和LINK。你可以从Chainlink水龙头(https://faucets.chain.link/)中获取测试网LINK。

  设置.env文件

  你可以在.env.example中看到.env应该是什么样子的示例(部署到真实网络)。

  ALCHEMY_API_KEY:可以通过获取Alchemy(https://www.alchemy.com/)帐户获取。

  ETH_FROM:发送交易的钱包地址。你必须将要使用的地址的私钥加载到ethsign中,可参考上文。

  ETHERSCAN_API_KEY:用于在Etherscan验证合约(可选)。

  ETH_RPC_URL:用于在使用make deploy时有一个默认的部署网络(可选)。

  测试网和主网部署

  在.env文件中设置ETH_RPC_URL或ALCHEMY_API_KEY,然后运行以下命令中的一个:

  计数器合约(Keeper兼容合约):

  bash

  make deploy CONTRACT=Counter

  Price Feeds合约:

  bash

  make deploy CONTRACT=PriceFeedConsumer

  Chainlink VRF消费者合约:

  bash

  make deploy CONTRACT=VRFConsumer

  你可以在scripts文件夹中各自的deploy文件中改变其部署参数。所有的构造器参数都在./src/helper-config.sh文件夹中创建。在这里你可以为不同网络分配不同的构造器参数。

  本地测试网

  #在一个终端上

  dapp testnet

  将你的ETH_RPC_URL改为http://127.0.0.1:8545

  然后运行你的部署脚本。

  在Etherscan上进行验证

  部署完合约后,你可以在Etherscan上对该合约进行验证:

  ETHERSCAN_API_KEY=<api-key>dappverify-contract<contract_directory>/<contract>:<contract_name><contract_address>

  例如:

  ETHERSCAN_API_KEY=123456765 dapp verify-contract./src/Counter.sol:Counter 0x23456534212536435424

  可查看DappTools文档以了解如何通过DappTools完成验证合约。

相关文章
|
存储 算法 区块链
DAPP合约公排系统开发案例|DAPP互助系统开发
去中心化就是指网络中各个节点的地位相等,传输内容和交易数据不再需要通过某个中心节点进行
|
区块链 存储
DAPP智能合约系统开发详细技术及方案项目
区块的作用就是将不同时间阶段内的交易数据按照一定的格式和数量,打包成结构化数据,方便存储和管理。
|
JavaScript 前端开发 Go
区块链Dapp智能合约系统开发(开发功能)丨dapp/defi代币合约项目系统开发成熟案例版及源码部署
The following are important technical points in the development process of smart contract DApp:
|
前端开发 测试技术 区块链
什么是SolaRoad索拉迪智能合约系统开发丨索拉迪SolaRoad系统开发(开发案例)及源码项目
部署智能合约,使用平台提供的工具将编写好的智能合约发布到区块链上;
|
存储 Oracle 关系型数据库
|
JSON 前端开发 编译器
链上DAPP系统开发|DApp智能合约开发搭建技术
合约可以调用其他合约,只需知道地址和ABI,我们就可以在合约内部调用其他合约,需要注意的是,调用合约也是事务性操作,因此,你不需要通过手动管理异步操作的方式来等待返回结果。在合约内部调用其他合约需要消耗额外的Gas费用。
链上DAPP系统开发|DApp智能合约开发搭建技术
|
JSON 区块链 数据格式
Forsage/MetaForce佛萨奇2.0智能合约系统开发(详细案例),Forsage/MetaForce佛萨奇2.0智能合约开发成熟技术及源码
  数字经济是以数据资源为关键要素,以数字科技为支撑的经济形态。数字产业化和产业数字化是数字经济中的重点内容,数字产业化主要是推动数字科技形成规模化产业,
|
安全 区块链 数据安全/隐私保护
佛萨奇智能合约系统开发2.0搭建技术
能钱包可以实现账户恢复(Argent,MYKEY)、交易金额限制(Argent,Monolith)、批量交易合并(MYKEY多target)等多种特性,切实帮助用户解决问题
佛萨奇智能合约系统开发2.0搭建技术
|
JSON 前端开发 API
DAPP智能合约互助公排开发案例版丨DAPP智能合约互助公排系统开发(详细及开发)丨DAPP智能合约互助系统源码方案
“DApp”代表去中心化应用程序。与传统应用程序一样,去中心化应用程序也有前端(客户端)和后端(服务器端)。DApp的用户界面可以用任何语言编写(就像传统应用程序一样),并且可以调用其后端。那么,Dapps与传统应用程序有何不同?DApp的后端代码运行在分散的对等网络(即区块链)上。您可能听说过BitTorrent、Tor、Popcorn Time——它们是在点对点网络上运行但不在区块链上运行的DApp。
|
区块链 开发工具
关于智能合约dapp开发逻辑丨细谈智能合约DAPP系统开发技术方案
关于智能合约dapp开发逻辑丨细谈智能合约DAPP系统开发技术方案