本文正在参加「金石计划」
前言
最近在做 web3 相关的开发(DApp),顺便梳理一下相关的知识点,本系列会分为理论篇与实战篇两部分,希望对有兴趣入坑 web3 的同学有所帮助
什么是 DApp ?
DApp 是去中心化的应用,没有第三方的服务器与数据库,存在于机制透明的区块链中,而用户,会拥有自己资产的所有权限
架构理论
初识 web3.0
Web 发展的阶段,以及每个阶段形态的特点
- Web1.0 —— 用户只能浏览内容
- Web2.0 —— 用户可交互,但用户数据,内容中心化
- Web3.0 —— 可交互,去中心化,用户拥有个人数据的所有权限
个人认为,如何将去中心化的优点,在商业中落地应用,是目前 web3 发展面临的最大问题
潜在应用场景
以下是了解到的一些方向,也欢迎评论区同学分享
- 区块链的透明溯源
见过有些工厂加工材料进出标识使用了区块链的应用,进行耗材溯源(供应链相关)
- 稳定币和中央银行数字货币
数字货币算是比较常见的应用场景,但是由于局限于政策,很难预估发展前景
- 创造者经济
也就是互联网用户可以依靠 web3 体系获得自己创造数字产品的所有权,目前已有很多相关应用
- 链游
基于区块链的游戏体系,个人感觉其实和创造者经济属于同一类应用,都强调了所有权,只是形式不同
认识区块链
- 什么是区块链
区块链是一种去中心化的、不可篡改、安全性极高的分布式账本技术,它记录了数字交易和交互数据的整个历史,每个新的交易都被加密和链接到之前的交易形成一个称为区块的集合。这些区块通过密码学验证并链接在一起形成一个线性的连续数据结构,避免了篡改或删除以前记录的交易的可能性。
在应用层面,我们可以把区块链理解成 网络 + 数据库 + 计算机
- 区块链的应用
因为区块链技术具有去中心化,安全性高,匿名性等优点,很多人开始看到其潜力,它可以应用于数字货币,智能合约,物联网,供应链管理以及社交网络等多个领域。
以太坊介绍(EVM)
以太坊(ethereum)是一种基于区块链技术的开源平台,它使得任何人都可以创建和使用自己的智能合约和去中心化应用程序(dapps)。相对于比特币等其他加密货币而言,以太坊更像一个全球性的计算机,它具有自己的编程语言solidity、自己的虚拟机evm、自己的底层加密货币eth,以及丰富的开发工具和库。
- 以太坊是一个开源有智能合约功能的公共区块链平台
- 我们可以在上面部署我们智能合约的应用(要钱币)
- 以太币是市值第二高的加密货币,仅次于比特币
相关技术
区块链
以太坊网络可以存储大量的交易数据,并使用共识机制保证数据的一致性和可靠性
智能合约
智能合约是以太坊网络的特色功能,它允许开发者编写代表数字资产、金融衍生品、身份信息等多样化的代码,并在代码被满足特定条件时自动执行
去中心化的应用需要依赖于智能合约,部署到区块链中
Solidity
Solidity 是一种智能合约的高级语言,运行在虚拟机(EVM)之上
它的语法接近于 javascript ,是一种面向对象的语言,但作为一种运行在网络上的去中心合约,它又有很多的不同,后续我们在开发应用时会详细介绍
Web3.js
Web3.js 是一个库,有很多的函数,使用它可以在以太坊生态系统中通过 http 或 ipc 与本地或者以太坊远程节点交互,如查看链上信息等
各种高级语言编写的程序可以使用 web3 interface 来与 EVM 交互,在此过程用到的是 JSON-RPC(无状态且轻量级的传输协议)
你可以使用 web3.js 来读取和写入以太坊区块链,而不是使用 ajax 从 Web 服务器读取和写入数据
安装的话只需要 npm 引入就可以,很方便
// 安装
npm install web3
// 实例化
var web3 = new Web3(Web3.givenProvider || "ws://localhost:8545");
learnblockchain.cn/docs/web3.j…
DApp(去中心化应用)
DApp是分布式应用程序(decentralized application)的缩写,是基于区块链技术构建的应用程序。DApp的优势在于去除了传统中心化应用程序中的单点故障,同时实现了去中心化、数据不可篡改和智能合约等特性。
DApp 的部分或者全部逻辑是被存储在去中心化的网络中的,而这个去中心化的网络在区块链的世界里叫公有链。
本系列就会带大家一起开发一个自己的 DApp
在进入开发章节前,先带大家认识和使用我们后续会用到的一些工具
MetaMask
MetaMask 是一个浏览器插件,它的核心作用是作为以太坊钱包:通过安装它,您可以访问一个独特的以太坊钱包地址,你可以使用它发送和接收以太币
为我们的网页授权账号体系,管理我们的个人帐号(创建账号)
- 需要科学上网,谷歌插件市场搜索安装即可
- 然后就是按照提示创建属于你自己的个人帐号,按提示一步一步往下走就可以
注意:助记词一定要妥善保管好,它是你能否找回账号的唯一依据
Ganache
Ganache 是一个用于本地开发的区块链,用于在以太坊区块链上开发去中心化的应用。
Ganache模拟了以太坊网络,你可以在发布到生产环境之前看到你的DApp 将如何执行,我们可以通过它来构建我们的测试环境
- 安装环境
所以我们需要通过ganache来帮助我们模拟一个以太坊的节点。测试通过后,可以直接切换使用真实的以太坊的帐号和区块节点就可以了
cnpm i ganache -g
安装完成后,执行命令,就可以看到效果了
ganache
这里会给我们提供测试账号以及本地区块链的各种信息,有了它,我们就可以结合上面的 MetaMask 钱包来配置我们的测试环境账号
导入帐号
- 打开我们的 MetaMask
- 输入 Ganache 生成的密钥,导入账户
配置网络
- 选择添加网络
- 将控制台里的相关信息配置好
- 点击保存,这里就可以看到我们导入的两个账号,整个测试环境的配置就完成了
测试转账
本节最后,我们来测试下给我们的测试账号进行交易
- 点击发送转账
- 我们要把币转给谁,就将他的公钥复制出来
- 在发送目标里填上公钥,就会显示对方账号的信息,输入金额点击下一步(每笔交易都会收取燃料费)
- 当计算完成后,就算交易成功了
- 我们也可以在活动界面中,查看详细的交易信息
到这,我们对 web3 和 DApp 的简单介绍就告一段落了,后续,我们就要通过代码,去实现交易,资产转移等相关功能,然后部署到我们模拟的区块链上,有兴趣的同学请多多关注