以太坊 day(8)

一、以太坊私有链搭建

1.1 安装geth

https://geth.ethereum.org/downloads/

1.3 新建文件夹

  • mkdir private-coin
  • 进入文件夹

1.2 新建genesis.json文件

{
    
    
"config": {
    
    
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x40000",
"extraData" : "",
"gasLimit" : "0xffffffff",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc": {
    
     }
}

1.3 在文件夹中,geth --datadir “./” init genesis.json

在这里插入图片描述

1.4 启动私有链节点

  • geth --datadir “./node1” --port “30303” --networkid 10000 console --dev.period 1

1.5 查看当前账户

  • eth.accounts为空

1.6 创建新账户

personal.newAccount('1111')

1.7 开始挖矿

  • miner.start()

1.8 停止挖矿

  • miner.stop()

1.9 查看账户余额

eth.getBalance(eth.accounts[0])

1.10 设置挖矿的节点

  • 私链重启,挖矿人会恢复成默认的
miner.setEtherbase(eth.accounts[0])

1.11 查看节点高度

eth.blockNumber

1.12 查看节点有多少人链接

admin.peers

二、创建新的节点

2.1创建新节点

geth --datadir './node2' init genesis.json

2.2 启动第二个节点

geth --datadir './node2' --networkid 10000 --port 30300 console

2.3 查看节点信息

  • admin.nodeInfo

结果:

  enode: "enode://d179dca6419a82fa0c06301d5d80545ca10ce99749bcba4dd3ecbef51ad825ca9869f9f70db081553f43b11e0a26bb31250455a94a8abcfb23a4c42e71d304a7@172.19.88.2:30300",
  enr: "enr:-Ka4QL4pR5R8OzDTSYfVpXH4PCO07iXez_Hy_dvC1ATzKhBoIzp6jD9jFSCSIL1zWhF0vYeDWoOXxPB_PoEwHf2LcHGGAX0J1MtKg2V0aMrJhPxk7ASDEYwwgmlkgnY0gmlwhKwTWAKJc2VjcDI1NmsxoQPRedymQZqC-gwGMB1d
gFRcoQzpl0m8uk3T7L71GtglyoRzbmFwwIN0Y3CCdlyDdWRwgnZc",
  id: "c70728f13a3889b3f5591c4b8c87bb00a195320c1f5282260f85f601ba77fc18",
  ip: "172.19.88.2",
  listenAddr: "[::]:30300",
  name: "Geth/v1.10.9-stable-eae3b194/windows-amd64/go1.17",
  ports: {
    
    
    discovery: 30300,
    listener: 30300
  },
  protocols: {
    
    
    eth: {
    
    
      config: {
    
    
        berlinBlock: 12244000,
        byzantiumBlock: 4370000,
        chainId: 1,
        constantinopleBlock: 7280000,
        daoForkBlock: 1920000,
        daoForkSupport: true,
        eip150Block: 2463000,
        eip150Hash: "0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0",
        eip155Block: 2675000,
        eip158Block: 2675000,
        ethash: {
    
    },
        homesteadBlock: 1150000,
        istanbulBlock: 9069000,
        londonBlock: 12965000,
        muirGlacierBlock: 9200000,
        petersburgBlock: 7280000
      },
      difficulty: 17179869184,
      genesis: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
      head: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
      network: 10000
    },
    snap: {
    
    }
  }
}

2.4 在node1节点中添加node2节点

admin.addPeer("enode://f78a79d132590ed02e94c056423242bf768f1f09bf9bb9020a53a4e1a24fa4f53de20763a2cf498746a6542611da6d94e5112df3cff72c5f3c036a0b0177b03b@172.19.88.2:30300")

2.5 账户交易

eth.sendTransaction({
    
    from:eth.accounts[0],to:eth.accounts(1),value:web3.toWei(1,ether)})

2.6解锁账户

personal.unlockAccount(eth.accounts[0])

三、ipfs文件系统

3.1 简介

量际文件系统IPFS (interPlanetary File System)是一个面向全球的,点对点的分布式版本文件系统,目标是为了补充(甚至是取代)目朝统治互联网的趣文本传输协议(HTTP) .将所有具有相同文件系统的计算设备连接在一
起。使数据访问的速度更快、更安全、更健壮、更持久。由juan Benet在2014年5月份发起-句话概括: IPFS是一 种点对点的超媒体文件存储。 索引。交换协议。

3.2 特点

●内容可寻址(区别于位置寻址:通过文件的哈制)通过文件的哈希值搜索
●版本管理功能(水远告别404, 只要上传过,就- 定会存在)
●点对点超媒体(P2P)

3.3 安装ipfs

ifps下载

3.3 初始化本地仓库

ipfs init

3.4 修改ipfs的仓库目录

  • 添加环境变量IPFS_PATH,仓库目录就是这个字段对应的目录。
  • 默认的仓库目录: C:\Users\Administrator.ipfs
  • 删除原来的仓库 del C:\Users\Administrator.ipfs

3.5 给本地ipfs仓库中添加文件

 ipfs add ./heelo.doc

3.6 查看上面的文件

ipfs cat QmVM81DEjW5pUYwmZQBhZkboqbBTcUWzfALR4WeKtrwsa6 

3.7 启动ipfs的服务后台

ipfs daemon

3.8 使用web但是不想和网络交互

ipfs daemon --offline

3.9 查看文件夹

ipfs ls 文件夹的hash
  • 查看文件夹中的文件
ipfs cat 文件夹的hash/a.txt

3.10 refs

  • 添加文件夹
$ ipfs add -r ./ipfs/
added QmcmtbjVSKy8wiEcnXGin6be8ESgouWmdMmBxU6tMekQG1 ipfs/ack.txt
added Qmdh741S19rU9TaB4S1Cz4XpqY7Vj3igC1wHE4BBRcWjoW ipfs/helo.txt
added QmPgKM7xEREK6k6GQBVNRnFuUgw7AiSf2QYz8fs2v5C73L ipfs
 23 B / 23 B  100.00%

  • 可以通过文件夹的哈希去找到里面文件的哈希
$ ipfs refs  QmPgKM7xEREK6k6GQBVNRnFuUgw7AiSf2QYz8fs2v5C73L
QmcmtbjVSKy8wiEcnXGin6be8ESgouWmdMmBxU6tMekQG1
Qmdh741S19rU9TaB4S1Cz4XpqY7Vj3igC1wHE4BBRcWjoW

3.11 查看文件夹中文件的内容

```go
$ ipfs cat QmPgKM7xEREK6k6GQBVNRnFuUgw7AiSf2QYz8fs2v5C73L/ack.txt
hello my word

3.12 浏览器中查看数据

  • ipfs deamon
  • localhost:8080/ipfs/文件的哈希
    在这里插入图片描述

3.13 localhost:5001/webui

在这里插入图片描述

四、与文件交互的命令

1.1 查看ipfs中已经添加的文件

  • ipfs files ls

1.2 创建文件夹及文件

ipfs files mkdir /box
ipfs files write --write /box/a.txt

1.3 读取文件

ipfs files read /box/a.txt

五、ipfs-api的使用

5.1安装ipfs-http-client

  • npm install ipfs-http-client

5.2 ipfs-http-client的简单使用

const {
    
    create} = require('ipfs-http-client')
const client = create('http://127.0.0.1:5002')
#const client = create({
    
     host: '127.0.0.1', port: '5001', protocol: 'http' })
console.log(client)

5.3 添加新的文件

const {
    
    create} = require('ipfs-http-client')
const client = create({
    
     host: '127.0.0.1', port: '5001', protocol: 'http' })
let path = "C:\\Users\\Administrator\\Pictures\\picture\\a.jpg"
//console.log(client)
client.add("hello word").then(result =>{
    
    
    console.log(result)
})

5.4 下载上面上传的文件

ipfs get Qmdh741S19rU9TaB4S1Cz4XpqY7Vj3igC1wHE4BBRcWjoW -o a.txt

猜你喜欢

转载自blog.csdn.net/qq_42306803/article/details/121215777
今日推荐