主页 > 下载imtoken钱包app中国版 > 基于以太坊的DAPP实现

基于以太坊的DAPP实现

下载imtoken钱包app中国版 2023-02-03 07:43:04

基于以太坊的DAPP实现系统采用vm下的ubuntu16.04 1. 以太坊简介

以太坊是一个具有智能合约功能的开源公共区块链平台。 通过其专用的加密货币 Ether,它提供了一个分散的虚拟机(“以太坊虚拟机”)来处理点对点合同。

与比特币的区别:以太坊是一个公链平台,而比特币是一个电子货币系统。 以太坊提供存储和智能合约功能,包括合约账户和外部账户。

二、开发工具介绍

(1)以太坊客户端:Geth(go语言实现)、testrpc(Node.js语言实现)

Geth 和 testrpc 都可以用来搭建测试网络,但是 Geth 是一个更真实的网络,而 testrpc 只是在内存中模拟

(2) 开发框架Truffle:Truffle是世界一流的以太坊开发环境、测试框架和资产管理通道,旨在让以太坊开发更简单。 它的本质是Dapp开发框架,可以帮我们处理很多不相关的小东西,让我们可以快速的开始编写代码-编译-部署-测试-打包DApp的流程。

(3) web3.js:Ethereum JavaScript API,web3.js 是一组库,允许您使用 HTTP 或 IPC 连接与本地或远程以太坊节点进行交互。 (用于调用合约)

(4) React:React 是一个用于构建用户界面的 JAVASCRIPT 库。 React 主要用于构建 UI。 React 具有高性能和非常简单的代码逻辑。 越来越多的人开始关注和使用它。

(5)Solidity语言:Solidity是一种面向合约的高级语言,其语法类似于JavaScript。 是在以太坊虚拟机中运行的代码。 Solidity 是一种静态类型的编程语言,其数据类型在编译期间被检查。 支持继承、类和复杂的用户定义类型。

(6)IDE:REMIX—Solidity web IDE,可用于开发和测试

(7)以太坊测试网:Kovan(PoA共识算法,Proof of Authority以太坊节点是什么意思,权威证明)

三、私链搭建 1、安装Geth,安装nodejs、npm、truffle (一)安装Geth

sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
geth --help 查看是否安装成功

(2) 安装nodejs、npm、truffle

第八次以太坊硬分叉啥意思_以太坊节点是什么意思_以太坊节点赚钱吗

cd  /opt
//下载到opt目录下
wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz
tar -xvf node-v6.10.2-linux-x64.tar.xz -C /usr/local/
mv –f /usr/local/node-v6.10.2-linux-x64 /usr/local/node 
sudo ln -s /usr/local/node/bin/node /usr/bin/node
sudo ln -s /usr/local/node/lib/node /usr/lib/node
sudo ln -s /usr/local/node/bin/npm /usr/bin/npm
sudo npm install -g truffle 
sudo npm install -g ethereumjs-testrpc
sudo ln -s /usr/local/node/bin/testrpc /usr/bin/testrpc
sudo ln -s /usr/local/node/bin/truffle /usr/bin/truffle
//检查是否安装成功

以太坊节点赚钱吗_以太坊节点是什么意思_第八次以太坊硬分叉啥意思

truffle –version testrpc

2. 搭建以太坊私链并启动节点互联 (1) 创建存储目录

cd /opt
mkdir private-geth
cd /opt/private-geth

(2) 创建创世区块文件

//建立创世纪区块文件,是一个json格式的文件:
sudo gedit genesis.json
{
    "config": {
        "chainId": 7,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0

以太坊节点是什么意思_以太坊节点赚钱吗_第八次以太坊硬分叉啥意思

}, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x40000", "extraData" : "", "gasLimit" : "0xffffffff", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00", "alloc": { } }

(3)初始化Genesis节点,设置数据目录

注意:后面根据需要启动多少个节点以太坊节点是什么意思,将00修改为01、02...

sudo geth --datadir ./data/00 init genesis.json

(4)启动第一个节点(指定端口)

sudo geth --datadir ./data/00 --networkid 7 --port 30303 --rpc --rpcaddr "localhost" --rpcport 8200 	 -- "db,eth,net,web3,personal,admin,miner" console

以太坊节点赚钱吗_第八次以太坊硬分叉啥意思_以太坊节点是什么意思

(5)继续输入以下命令获取节点实例的enode url:

admin.nodeInfo.enode

(6)启动第二个节点(除修改端口号外,与启动第一个节点相同)

sudo geth --datadir ./data/00 --networkid 7 --port 30304 --rpc --rpcaddr "localhost" --rpcport 8201 	 -- "db,eth,net,web3,personal,admin,miner" console

(7) 连接第一个节点

admin.addPeer(enode url)

(8) 各节点检查

admin.peers
net.peerCount

3、基于Truffle框架的开发流程和请求调用流程

开发流程:
(1)cd 到工作目录,创建dir
(2)cd 到dir中创建项目

第八次以太坊硬分叉啥意思_以太坊节点赚钱吗_以太坊节点是什么意思

truffle unbox react create-react-app my-app(项目名称,这个可以不用创建dir,它会自己创建) (3)下载ipfs-api(如果要用到) npm install –save ipfs-api (4)写入合约 (5)cd 到项目dir,编译合约 //进入truffle控制台 truffle develop //编译项目下合约 compile (6)利用web-IDE将合约部署到Kovan测试链上,这里要复制好合约地址,app.js里面会用到 (7)cd 到项目dir,启动ipfs daemon (8)配置ipfs跨域 (9)修改App.js,引入要的内容 (10)cd 到项目dir,利用npm start启动项目 请求调用流程: User——>UI APP->Web3.js->Dapps->P2P Network

4.代码实现

我主要实现了基于区块链的ip\域名注册、存储、变更。 现在切换到SDN,原来的代码在旧电脑的虚拟机里,所以不确定虚拟机有没有删掉,有的话就贴上去。