web3基本介绍

互联网发展可以划分为web1.0、2.0、3.0…不同的阶段,目前还主要是2.0向3.0过渡的阶段,已经有部分应用在使用web3.0。web1.0是早期单纯通过网络浏览器浏览html网页模式向用户展示信息或广告等,用户的参与很少;web2.0则更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者。web2.0使用户在互联网上的作用越来越大。他们贡献内容,传播内容,而且提供了这些内容之间的链接关系和浏览路径,互联网进入了一个更加开放、交互性更强、有用户决定内容并参与共同 建设的可读写网络阶段。Web2.0的本质就是互动,它让网民更多地参与信息产品的创造、传播和分享,而这个过程是有价值的。web2.0的缺点是没有体现出网民劳动的价值,所以2.0很脆弱,缺乏商业价值。web2.0是脆弱的,纯粹的2.0会在商业模式上遭遇重大挑战,需要跟具体的产业结合起来才会获得巨大的商业价值和商业成功。正是因为更多的人参与到了有价值的创造劳动,那么 “要求互联网价值的的重新分配”将是一种必然趋势,因而必然催成新一代互联网的产生,这就是web3.0。

web3.0是在web2.0的基础上发展起来的能够更好地体现网民的劳动价值,并且能够实现价值均衡分配的一种互联网方式。web3.0到来的三个前提:1、博客技术为代表,围绕网民互动及个性体验的互联网应用技术的完善和发展。2、虚拟货币的普及和普遍,以及虚拟货币的兑换成为现实。3、大家对网络财富的认同,以及网络财务安全的解决方案。

伴随着IPFS、Filecoin、区块链、云计算等新技术的发展,互联网需要解决去中心化、身份信任、隐私保护、公平公开等问题,特别是区块链技术,共识机制、智能合约、分布式记账等技术加持,区块链技术逐渐广泛应用,催生了web3.0的进一步发展。

入门

Web3.js API文档:https://web3.tryblockchain.org

http://cw.hubwiz.com/card/c/web3.js/1/2/1/

web3.js开发环境安装

安装环境的几个组件,如下

testrpc: 在本地使用内存模拟的一个以太坊环境;

Truffle :以太坊开发框架
Ganache CLI:是在本地使用内存模拟的一个以太坊环境,其基于Node.js,以前叫TestRPC在开发过程中使用。

安装nodejs,参考Nodejs入门及技术指南_yan_dk的专栏

npm 安装web3

$ npm install web3 –save

检测是否安装成功

$ node

>require(“web3”)

显示如下:

说明web3.js已经安装成功。

安装testrpc(在本地使用内存模拟的一个以太坊环境)

>npm install ethereumjs-testrpc -g

安装成功后,启动testrpc 区块链节点

>testrpc

安装truffle(编译、部署智能合约的工具)

$ npm install -g truffle

建立项目目录pet-shop-tutorial,构建truffle项目

$truffle unbox pet-shop

编写智能合约

contracts/目录下新建文件Adoption.sol

pragma solidity >=0.4.22 = 0 && petId <= 15);          adopters[petId] = msg.sender;          return petId;    }    // Retrieving the adopters    function getAdopters() public view returns (address[16] memory) {      return adopters;    }}

编译智能合约

$ truffle compile

安装ganache-cli

$npm install -g ganache-cli

部署智能合约

truffle-config.js所在目录执行

$ truffle dev

也可以让启动在后台运行:$ truffle dev &

启动一条区块链,默认会生成10个账户,每个账户里有100个以太坊。默认监听localhost:8545)

/migrations目录下新建一个文件2_deploy_contracts.js,接下来就是测试区块链的正确性,以及与其交互的工作了。

测试合约

$ truffle test

在启动区块链localhost:8545的环境时,执行部署合约如下

$ truffle(develop)> truffle migrate

说明我们已经成功将智能合约部署到了测试用的区块链中。

至此,我们已经搭建好区块链、账号、合约等环境,就可以进行区块链的相关开发了。