第一:CITA-2(开发环境)
1.安装 node,npm,yarn -v10.x
删除旧的node
sudo apt-get remove -y nodejs
sudo apt autoremove yarn
sudo add-apt-repository -y -r ppa:chris-lea/node.js
sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list
sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list.save
https://github.com/nodesource/distributions
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install gcc g++ make
sudo apt-get install -y nodejs
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
node --version
npm --version
nvm --version
yarn --version
2.安装cita-ide
git clone https://github.com/ethereum/remix-ide.git
git clone https://github.com/ethereum/remix.git # 只有当您计划链接remix和remix-ide存储库并在其上进行开发时才会这样做。
cd remix-ide
npm install
npm run setupremix # 只有当您计划链接remix和remix-ide存储库并在其上进行开发时才会这样做。
npm run build
npm start
3.first-forever-demo
npm urn deploy
npm start
第一:CITA链部署
- 说明
- 1、用户与组的设计
- 生成超管员帐号
- 生成管理员帐号
- 生成普通用户帐号
- 创建管理员组
- 授权管理员组权限(发交易、创建合约)
- 把管理员帐号加入管理员组
- 用管理员帐号创建一个合约a
- 创建一个合约a的合约权限
- 创建有合约a权限的组
- 把普通用户帐号加入到合约a权限的组
- 普通用户帐号可以调用合约a
- 2、存证业务
- 发送交易
- 发送元数据
- 加密元数据
- 返回交易TxHash
- 查询数据
- 提交TxHash
- 返回密文数据
- 解密(有需要时)
- 节点部署说明
1、部署节点:cita_secp256k1_sha3
2、编写合约:Solidity
3、部署合约:系统合约接口
4、编写客户端:JSON-RPC交互
1.部署节点:cita_secp256k1_sha3
1、下载cita-cli 客户端
2、下载cita开源链
3、安装docker
step-1:CITA 客户端工具
//创建目录
$ mkdir -p /data/cita
//切换目录
$ cd /data/cita/
//下载 CITA-CLI 安装包
$ wget https://github.com/citahub/cita-cli/releases/download/20.2.2/cita-cli-x86_64-musl-tls-20.2.2.tar.gz
//解压程序
$ tar zxvf cita-cli-x86_64-musl-tls-20.2.2.tar.gz
//复制 CITA-CLI 到 系统可执行文件目录下
$ sudo cp -rp cita-cli /usr/local/bin/
step-2:下载 CITA
//切换目录
$ cd /data/cita/
//下载 CITA 安装包
$ wget https://github.com/citahub/cita/releases/download/v20.2.0/cita_secp256k1_sha3.tar.gz
//解压 CITA 程序
$ tar zxvf cita_secp256k1_sha3.tar.gz
step-2:安装docker-ce版本(centos)
- 官网文档:https://yeasy.gitbook.io/docker_practice/
- 删除旧版本
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
- 执行下面的命令添加 yum 软件源:
# 安装 yum-utils工具
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 配置docker-ce安装源地址
$ sudo yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 修改docker-ce 中国源地址
$ sudo sed -i 's/download.docker.com/mirrors.ustc.edu.cn\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
# 官方源
# $ sudo yum-config-manager \
# --add-repo \
# https://download.docker.com/linux/centos/docker-ce.repo
- 更新 yum 软件源缓存,并安装 docker-ce
$ sudo yum makecache fast
$ sudo yum install docker-ce
- 启动 Docker CE
$ sudo systemctl enable docker
$ sudo systemctl start docker
- 建立 docker 用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
//建立 docker 组:
$ sudo groupadd docker
//将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER
//退出当前终端并重新登录,进行如下测试
$ docker run hello-world
- 配置 docker-hub 源改为 华为源镜像
#创建目录
$ mkdir -p /etc/docker
#配置 源地址
$ tee /etc/docker/daemon.json <<- 'EOF'
{
"registry-mirrors": ["https://06863c85c3f14595a8557e7f2d8b1587.mirror.swr.myhuaweicloud.com"]
}
EOF
# 使配置生效
$ systemctl daemon-reload
# 重启docker-ce
$ systemctl restart docker
*step-3:生成两个帐户
- 生成一个帐户、把这个帐户做为超级管理员:super_admin
$ cita-cli key create
//返回一组address、private、public 这个地用来做 超管员
{
"address": "0xda062b9f2005eb52c8d4434d4a54bb7caed9ab28",
"private": "0xf5281a9d5c92ec040ae92551b93b0eb33f0dc71295f17f1bbb27b60bb714290c",
"public": "0xce2f66b5131edf259bc11d067fbba72c73835bc330d983b81e5b0fc077814403ec7d2f02c3169d90cdfeff931c89dd6563439d622c5c33c53dd0164592c983ec"
}
#再执行 cita-cli key create 再生成一个帐户用来做普通管理员
---- admin 管理员
{
"address": "0x1bab9f9d55a781ed02424522fd001f0dd261058c",
"private": "0x5e7241097bfd5909a88f7629dde1e3b96c8776efdccf101140309f1a07a555d7",
"public": "0x3662c57af8ff9a7d1e8239fb05363ed6ce2cfa3e579103b3716339865fca19f09ef695482d2c8d9991930fe35a399b4567c8c33729193fea43c139158fbc6558"
}
--- 普通用户:
{
"address": "0xa70fa03be43146e0e5a428b38040ab388d888faa",
"private": "0x4356a704ee765a416b4294d04798089927df64389b2dcc800e2ca3ec7c39b55c",
"public": "0x87ba823c64d0e817643e96e5db350f22830e210d2580d40d48b6ccc574060980b8398ecb8aceb225b34becba9c95702b61a97f16592795115b7f15c37178afb7"
}
*step-4:创建新链的节点
链的名称: meelinked-01
超级管理员: “0xda062b9f2005eb52c8d4434d4a54bb7caed9ab28”
两个节点:127.0.0.1:4000 , 127.0.0.1:4001
开启合约调用的权限检查:SysConfig.checkCallPermission=true
开启发送交易的权限检查:SysConfig.checkSendTxPermission=true
开启创建合约的权限检查:SysConfig.checkCreateContractPermission=true
//切换目录
$ cd /data/cita/cita_secp256k1_sha3
//生成链
$ bin/cita create \
--super_admin "0xda062b9f2005eb52c8d4434d4a54bb7caed9ab28" \
--nodes "127.0.0.1:4000,127.0.0.1:4001" \
--contract_arguments "SysConfig.checkCallPermission=true" \
--contract_arguments "SysConfig.checkSendTxPermission=true" \
--contract_arguments "SysConfig.checkCreateContractPermission=true" \
--chain_name "meelinked-01"
链生成生会在/data/cita/cita_secp256k1_sha3目录下创建一个meelinked-01文件夹,这个就是meelinked-01节点服务器
step-5:启动节点
# 节点 0
$ cd /data/cita/cita_secp256k1_sha3
$ bin/cita setup test-chain/0 //初始化节点0
$ bin/cita start test-chain/0 //启动节点0
#节点1
$ bin/cita setup test-chain/1 //初始化节点1
$ bin/cita start test-chain/1 //启动节点1
//查看节点启动情况
$ bin/cita top