一、以太坊私有链搭建
1.1 安装geth
https://geth.ethereum.org/downloads/
1.3 新建文件夹
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 查看当前账户
1.6 创建新账户
personal.newAccount('1111')
1.7 开始挖矿
1.8 停止挖矿
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 查看节点信息
结果:
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中已经添加的文件
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"
client.add("hello word").then(result =>{
console.log(result)
})
5.4 下载上面上传的文件
ipfs get Qmdh741S19rU9TaB4S1Cz4XpqY7Vj3igC1wHE4BBRcWjoW -o a.txt
|