DAPP系统,DAPP系统开发,DAPP开发成品源码部署

简介:  去中心化应用(DApp)是一种大部分或完全分散化的应用。考虑一个应用程序是否是去中心化的应用主要方面包括:前端软件、后端软件(应用逻辑)、数据存储、命名解析、信息通信等。其中每一个都可以有些集中化,也可以有些分散化。例如,前端可以开发成在集中式服务器上运行的网络应用,或者开发成在设备上运行的移动应用。后端和存储可以是在私人服务器和专有数据库上,或者是智能合约和P2P存储。

  去中心化应用(DApp)是一种大部分或完全分散化的应用。考虑一个应用程序是否是去中心化的应用主要方面包括:前端软件、后端软件(应用逻辑)、数据存储、命名解析、信息通信等。其中每一个都可以有些集中化,也可以有些分散化。例如,前端可以开发成在集中式服务器上运行的网络应用,或者开发成在设备上运行的移动应用。后端和存储可以是在私人服务器和专有数据库上,或者是智能合约和P2P存储。

  dApp组件

  dApp的组件会有三个不同的类型:智能合约,前端逻辑(UI)和数据存储。

  智能合约

  智能合约存储了dApp的业务逻辑和当前的状态,这个是dApp和传统网络应用的最大区别,也正是因为这一点让dApp具备了以上提到过的优势。

  前端/UI

  尽管后端逻辑需要开发者完成智能合约代码,并把它部署在区块链上,但是在前端,开发者还是使用标准的网络技术,比如HTML和javascript,因此开发者可以使用自己熟悉的工具,库和框架。客户端的UI通常通过Web3.js「https://web3js.readthedocs.io/en/v1.7.4/」和Ether.js「https://docs.ethers.io/v5/」与智能合约交互。像是对信息进行签名并且发送给智能合约这些操作,通常是通过浏览器的Web3钱包MetaMask完成。

  第一步:创建智能合约:DAPP链上合约交互平台系统开发搭建:I35开发7O98案例O7I8

  我们dApp中的智能合约是一个简单的例子,它可以查看数据并且反应出区块链上的变化。在这个例子中,我们会通过Chainlink ETH/USD喂价对查看ETH/USD的价格,然后将结果永久存储在智能合约上。

  第一步是打开Chainlink的文档,然后导航到Using Data Feeds页面。从这里将源代码复制进你的IDE中的一个新的文件里(比如Visual Code),或者你可以点击“Open In Remix”按钮,然后使用在线IDE Remix。

  在这个例子中,我们会使用Visual Studio Code和Hardhat(一个EVM开发框架)。

  首先,为我们的dApp创建一个新的文件夹,并在这个文件夹中创建一个后端文件夹,用来存储智能合约代码:

  mkdir chainlink-dapp-example

  cd chainlink-dapp-example

  mkdir backend

  cd backend

  接下来,我通过VS Code打开创建好的文件夹,然后安装Hardhat:

  npm init-y

  npm install--save-dev hardhat

  npx hardhat

  (choose create javascript project,choose default parameters)

  当安装完成之后,在“contracts”文件夹中删掉Touch.sol,然后在这个文件夹中创建一个叫做PriceConsumerV3.sol的文件。在这个文件将存储我们的合约,所以将Chainlink文档中的代码复制到这个文件中,然后保存。

  在样例代码中,你会看到demo合约已经有一个叫做getLatestPrice的功能来通过Rinkeby上的ETH/USD喂价对查看Ethereum的当前价格。

  function getLatestPrice()public view returns(int){

  (

  /uint80 roundID/,

  int price,

  /uint startedAt/,

  /uint timeStamp/,

  /uint80 answeredInRound/

  )=priceFeed.latestRoundData();

  return price;

  创建一个新的变量和函数,在智能合约上储存这个值。

  int public storedPrice;

  然后,创建一个新的函数,它会被dApp的前端调用。这个函数会通过调用getLatestPrice函数查看Ethereum的最新价格,然后将这个值存储在storedPrice这个参数中:

  function storeLatestPrice()external{

  storedPrice=getLatestPrice();

  }

  你的新的合约应该和下面的一样:

  //SPDX-License-Identifier:MIT

  pragma solidity^0.8.7;

  import"chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

  contract PriceConsumerV3{

  AggregatorV3Interface internal priceFeed;

  int public storedPrice;

  /**

  *Network:Rinkeby

  *Aggregator:ETH/USD

  *Address:0x8A753747A1Fa494EC906cE90E9f37563A8AF630e

  */

  constructor(){

  priceFeed=

  AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e);

  }

  /**

  *Returns the latest price

  */

  function getLatestPrice()public view returns(int){

  (

  /uint80 roundID/,

  int price,

  /uint startedAt/,

  /uint timeStamp/,

  /uint80 answeredInRound/

  )=priceFeed.latestRoundData();

  return price;

  }

  function storeLatestPrice()external{

  storedPrice=getLatestPrice();

  }

  }

  第二步:部署智能合约

  现在你已经可以在Rinkeby测试网中编译和部署你的合约了,如果没有测试网的通证的话,可以在Chainlink faucet获得一些。

  如果你使用的是Remix的话,你可以通过Remix编译和部署你的合约。如果你使用的是像是Visual Studio Code这样的IDE的话,我们推荐使用Hardhat来管理你的合约。

  在部署合约之前,第一步是安装Hardhat工具包,Chainlink合约库和dotenv库。dotenv可以将存储密码和敏感信息存储在一个单独的.env文件中:

  npm install--save-dev nomicfoundation/hardhat-toolbox

  npm install chainlink/contracts--save

  npm install dotenv

  然后,将hardhat-config.js文件中的内容换成下面的内容:

  require("nomicfoundation/hardhat-toolbox");

  //require("nomiclabs/hardhat-ethers")

  require('dotenv').config()

  const RINKEBY_RPC_URL=process.env.RINKEBY_RPC_URL||

  "https://eth-rinkeby.alchemyapi.io/v2/your-api-key"

  const PRIVATE_KEY=process.env.PRIVATE_KEY||"abcdef"

  module.exports={

  defaultNetwork:"rinkeby",

  networks:{

  hardhat:{

  ////If you want to do some forking,uncomment this

  //forking:{

  //url:MAINNET_RPC_URL

  //}

  },

  localhost:{

  },

  rinkeby:{

  url:RINKEBY_RPC_URL,

  accounts:[PRIVATE_KEY],

  saveDeployments:true,

  },

  },

  solidity:"0.8.9",

  };

  第三步:创建前端应用

  dApp的前端逻辑和UI可以通过各种框架完成。

  React「https://reactjs.org/」是最受欢迎的Javascript代码库之一,它可以用来开发功能丰富的网页,因此也被许多Web3 dApp所使用。除此之外,Ether.js是一个Javascript库,它是用来和EVM区块链连接和交互的。当你把这两者结合起来,就可以开始开发你的dApp的前端的了。

  在这部分,我们将使用create-react-app「https://create-react-app.dev/」创建一个新的React应用。然后我会介绍如何通过Ether.js来将UI和已经部署的智能合约连接起来,完成一个end-to-end的dApp。

  创建React应用

  开发前端代码之前,需要先安装和初始化一个cerate-react-app项目,然后修改它以满足我们的dApp。第一步将这个库安装到“frontend”文件夹:

  cd..

  npx create-react-app frontend

相关文章
|
6月前
|
算法 大数据 分布式数据库
DAPP质押模式系统开发项目方案|DAPP合约开发案例
区块链技术是一种分布式数据库技术,它是由多个节点构成的去中心化网络
|
区块链 测试技术
DAPP链游开发稳定版丨链游dapp/nft游戏系统开发成熟技术方案及源码详情
随着区块链技术的不断发展,智能合约农场在链游行业中扮演着越来越重要的角色。智能合约农场是一种基于区块链技术的应用程序,它可以帮助链游开发商快速、安全地上线定制游戏软件。本文将介绍智能合约农场在链游行业中的作用以及如何通过智能合约农场快速上线定制游戏软件。
|
12月前
|
存储 算法 区块链
DAPP合约公排系统开发案例|DAPP互助系统开发
去中心化就是指网络中各个节点的地位相等,传输内容和交易数据不再需要通过某个中心节点进行
|
存储 算法 安全
DAPP互助公排系统开发源码|DAPP互助系统开发方案与指南
“去中心化”是区块链的典型特征之一,其使用分布式储存与算力
|
存储 前端开发 安全
DAPP区块链商城系统开发(方案逻辑)丨区块链DAPP商城系统开发(案例设计)/开发项目/源码部署
 区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。从本质上看,区块链是通过去中心化和去信任化,集体维护、分布式存储的可靠数据库。
|
算法 安全 数据管理
DAPP流动池兑换模式系统开发|DAPP技术开发
区块链技术作为一种分布式数据库技术,去中心化是其非常重要的特点之一
|
存储 安全 测试技术
如何通过智能合约实现dapp开发[过程部署详解]
如何通过智能合约实现dapp开发[过程部署详解]
|
安全 区块链
DAPP智能合约链游系统开发源码部署示例
  //SPDX-License-Identifier:MIT   pragma solidity^0.8.0;   contract Game{   //游戏合约的名称   string public name;   //游戏玩家的地址   mapping(address=>bool)public players;   //玩家的分数
摩顿Mortonn(DAPP)项目系统开发技术方案
摩顿Mortonn(DAPP)项目系统开发技术方案
|
存储 人工智能 安全
Opsea NFT智能合约平台系统开发方案介绍/功能详解/源码说明/项目案例
  DAPP是去中心化应用程序(Decentralized Application),它是建立在区块练技术之上的应用程序,具有去中心化、开放性、透明性、安全性等特点,DAPP可以实现各种功能,例如数字货币钱包、去中心化交易所、去中心化社交网络等。O