什么是Dapp?带你从零开始搭建一个Dapp
什么是Dapp?零基础带你搭建一个Dapp
前言:Dapp就是去中心化应用,它和我们平时使用的App(微信,支付宝等)只差了一个去中心化,如何理解这一去中心化?从体验层面来说:Dapp中并没有管理者,大家都是平等的,互相监督;而从技术层面来说:传统的App和部署在服务器的后端产生交互,而Dapp则是和部署在区块链上的智能合约产生交互。
本篇文章带大家实现一个简单Dapp的搭建,通过实战让你进一步了解Dapp,跟着做就行了!
1.DApp实现之合约编写
- 打开Remix编辑器
- 新建
InfoContract.sol
文件,并将下面合约内容Copy上去
编写InfoContract
合约
// SPDX-License-Identifier: GPL-3.0pragma solidity 0.8.0;contract InfoContract{string name;uint256 age;function setInfo(string memory _name,uint256 _age) public {name = _name;age = _age;}function getInfo() public view returns(string memory,uint){return (name,age);}
}
2.DApp实现之前端编写
2.1创建一个新文件夹Dapp
并用VScode或者Atom打开该文件夹(选择你自己使用的编辑器即可)
2.2Dapp
中创建index.html
和index.css
index.html
<html><head><title>Dapp Demo</title><link rel="stylesheet" type="text/css" href="index.css">
</head><body><div class="container"><h1>First Dapp</h1><h2 id="info"></h2><label>姓名:</label><input id="name" type="text"><label>年龄:</label><input id="age" type="text"></body></html>
index.css
body {background-color: #f0f0f0;padding: 2em;font-family: 'Raleway','Source Sans Pro','Arial';}.container{width: 40%;margin: 0 auto;
}label{display: block;margin-bottom:10px;
}input{padding: 10px;width: 50%;margin-bottom: 1em;
}button{margin: 2em 0;padding: 1em 4em;display: block;
}#info{padding: 1em;background-color: #fff;margin: 1em 0;border: 1px solid;
}
2.3效果图预览
3. DApp实现之Web3与合约交互
3.1安装web3库
推荐使用第三种方法,因为不用安装任何环境
- Node
npm install web3
- Yarn
yarn add web3
- CDN
由于以太坊舍弃了web3的脚本使用方法,所以这里我们临时使用替代脚本
<!-- The legacy-web3 script must run BEFORE your other scripts. --><script src="https://unpkg.com/@metamask/legacy-web3@latest/dist/metamask.web3.min.js"></script><!-- 或者用 --><script src="https://unpkg.com/@metamask/legacy-web3@latest/dist/metamask.web3.js"></script>
Tip: 若web3难以安装,建议参考这篇文章解决npm安装web3模块失败问题
3.2 Web3调用合约
参考文档:web3.eth.contract
3.2.1获取合约的abi
什么是abi?
可以去复习之前的课程
- 回到Remix编辑器的编译器界面
- 点击右下角的
Compilation Details
按钮
- 复制abi内容
3.2.2部署合约
需要保证你的小狐狸钱包里有bnb余额
- 选择
Injected Web3
环境,点击Deploy
部署
- 在小狐狸钱包中点击确认,交上部署合约的gas费
- 部署成功!
- 在左侧已部署合约中Copy合约地址
我的合约地址是0x528f48F5EbCbf25061e8814328A0073294ED58Cb
3.2.3编写Script脚本
<script>console.log(web3)web3.setProvider('ws://localhost:8545');//获取介绍内容const introduction = document.getElementById('info')//通过abi初始化合约var infoContract = web3.eth.contract([{"inputs": [],"name": "getInfo","outputs": [{"internalType": "string","name": "","type": "string"},{"internalType": "uint256","name": "","type": "uint256"}],"stateMutability": "view","type": "function"},{"inputs": [{"internalType": "string","name": "_name","type": "string"},{"internalType": "uint256","name": "_age","type": "uint256"}],"name": "setInfo","outputs": [],"stateMutability": "nonpayable","type": "function"}]);//通过地址实例化合约var info = infoContract.at('0x528f48F5EbCbf25061e8814328A0073294ED58Cb')//从合约获取消息info.getInfo(function (error, result) {if (!error) {//修改介绍内容introduction.innerHTML = result[0] + '(' + result[1] + 'years old)'}})</script>
3.2.4 更改合约信息
注意仍要在injected web3
环境下更改,并且这将会收取一定的gas费用,小狐狸钱包上点击确认即可!
更改成功!
3.2.5前端显示
恭喜你!至此你已经实现了人生中第一次与智能合约的交互!
什么是Dapp?带你从零开始搭建一个Dapp相关推荐
- 【微前端】手把手带你从零开始搭建一个qiankun+vue微前端应用
前言 小伙伴们大家好.上一篇文章中我们分享了qiankun的一些概念和特性,以及基于qiankun实现有一个微前端应用的大概步骤,最后以qiankun加vue2.0为例给出了快速搭建qiankun微前 ...
- 从零开始搭建一个GIS开发小框架(一)——基本框架
目录 1.概述 1.1 项目背景 1.2 传送门 2.技术选型:GMap.NET 3.底图功能实现 2.1 方式一:在线地图(以高德为例) 2.2 greatmaps生成底图(瓦片地图) 3.搭建主程 ...
- spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器
spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器 一.Mybatis plus代码自动生成器 1.引入配置 2.创建Controller 3.执行m ...
- spring boot:从零开始搭建一个项目 - day 4 控制台输出日志美化 + swagger2
spring boot:从零开始搭建一个项目 - day 4 控制台输出日志美化 + swagger2 一.logback.xml配置日志美化 二.集成swagger2 1.引入依赖 2.编写配置文件 ...
- 从零开始搭建一个语音对话机器人
点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] ♪ 点击上方绿标 收听从零开始搭建一个语音对话机器人 从零开始搭建一个语音对话机器人 目录 01-初心缘由 01-准备工作 02-语音机器 ...
- espeak 中文语音包_从零开始搭建一个语音对话机器人
点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] ♪ 点击上方绿标 收听从零开始搭建一个语音对话机器人 从零开始搭建一个语音对话机器人 目录 01-初心缘由 01-准备工作 02-语音机器 ...
- 从零开始搭建一个管理系统-vue3.0项目创建-----1
从零开始搭建一个管理系统-vue3.0项目创建-----1 讲在前面 webpack构建项目 代码编辑器 依赖修改 码云代码地址 讲在前面 假设你已了解关于 HTML.CSS. JavaScript ...
- 从零开始搭建一个react项目
Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ...
- 从零开始搭建一个vue项目 -- vue-cli/cooking-cli(一)
从零开始搭建一个vue项目 -- vue-cli/cooking-cli(一) 1.vue-cli搭建一个可靠成熟的项目 1.介绍 vue-cli 我是去年六月份接触的vue1.0,当时还是个菜逼,当 ...
最新文章
- 预告:Javascript全栈开发的系列文章
- 一步步学习 Spring Data 系列之JPA(一)
- 缺乏运动 七种病早早光临
- python怎么绘制渐变图_用Python画colorbar渐变图+修改刻度大小+修改渐变颜色
- Ubuntu16.04 Caffe 编译安装步骤记录
- 【selenium 小练手 抓取某大厂TP】
- 此项目需要迁移_AndroidX 迁移,看完它应该就够了
- java构造器构造方法_Java构造器(构造方法/constructor)
- http awstats安装
- cc2530设计性实验代码七
- pyecharts世界地图map,geo可视化优化调整
- python就业班完整视频_('传智 Python基础班+就业班 最新完整视频教程',)
- python两个表格相同数据筛选的方法_浅谈pandas筛选出表中满足另一个表所有条件的数据方法...
- 带有Lowe’s算法的SURF特征提取和匹配
- [转]飞鸟集 Stray Bird
- 股票学习-量柱和k线-第二天
- 分布式系列_MQ_01_MQ简介
- 《Python Excel 教程》
- fr4速度 微带线_微带线和带状线(microstrip and stripline)
- win7美化_极致美化 | 我们如何把 Windows「改造」成 mac OS
热门文章
- java swing是什么意思英语_swing是什么意思_swing的翻译_音标_读音_用法_例句_爱词霸在线词典...
- java中pack()
- linux中find命令列举,Linux find命令常见用法汇总
- [蓝桥杯][2013年第四届真题]核桃的数量(最小公倍数巧妙暴力)
- 数字图像处理——直方图累计
- tty初探 — uart驱动框架分析
- SQL通配符——LIKE
- kail linux中的渗透测试工具
- 前向型神经网络之BPNN(附源码)
- python的thinker界面文本框实时删除刷新解决方案
前言 小伙伴们大家好.上一篇文章中我们分享了qiankun的一些概念和特性,以及基于qiankun实现有一个微前端应用的大概步骤,最后以qiankun加vue2.0为例给出了快速搭建qiankun微前 ...
目录 1.概述 1.1 项目背景 1.2 传送门 2.技术选型:GMap.NET 3.底图功能实现 2.1 方式一:在线地图(以高德为例) 2.2 greatmaps生成底图(瓦片地图) 3.搭建主程 ...
spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器 一.Mybatis plus代码自动生成器 1.引入配置 2.创建Controller 3.执行m ...
spring boot:从零开始搭建一个项目 - day 4 控制台输出日志美化 + swagger2 一.logback.xml配置日志美化 二.集成swagger2 1.引入依赖 2.编写配置文件 ...
点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] ♪ 点击上方绿标 收听从零开始搭建一个语音对话机器人 从零开始搭建一个语音对话机器人 目录 01-初心缘由 01-准备工作 02-语音机器 ...
点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] ♪ 点击上方绿标 收听从零开始搭建一个语音对话机器人 从零开始搭建一个语音对话机器人 目录 01-初心缘由 01-准备工作 02-语音机器 ...
从零开始搭建一个管理系统-vue3.0项目创建-----1 讲在前面 webpack构建项目 代码编辑器 依赖修改 码云代码地址 讲在前面 假设你已了解关于 HTML.CSS. JavaScript ...
Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ...
从零开始搭建一个vue项目 -- vue-cli/cooking-cli(一) 1.vue-cli搭建一个可靠成熟的项目 1.介绍 vue-cli 我是去年六月份接触的vue1.0,当时还是个菜逼,当 ...