我只想要个链,干嘛非让我搞个全家桶?

以下内容来自使用用户:

在用cita搭链过程中整理了一些问题,希望能得到解答

1、https://docs.nervos.org/cita/#/chain/getting_started 快速搭链写的有点懵逼,我一开始以为直接拉个 docker 镜像下来里面所有cita程序都在了,后来发现并不是这样,看了下 dockerfile 文件,这个镜像里面只是一些python 等环境的配置,实际上是把本地的编译好的 cita 目录给映射进去执行。。。 不知道为啥不做成一个更加『开箱即用』的镜像,包括像 re-birth、cita-cli、microscope 等我觉得都可以整合进去让用户一键部署,现在都是各自要拉源码或者下 release 版本的模式。这点我觉得 PingCAP 的 TiDB 系列产品做的不错,基本上一行命令就把 TiDB、TiKV、monitor 等等都启动了,非常方便,建议可以参考下;

2、目前这个文档主要是指导用户根据给定的脚本确实可以快速搭出一条跑在本地的测试链,但是如果是分开多台机器(真实生产部署场景),具体该怎么配置,还是有点懵,希望能对这种场景有补充。比如说4台节点分别对应4台 ip 不同的机器,那每台分别应该执行 create 脚本吗?好像又不对,create 就产生新的链了;

3、https://docs.nervos.org/cita/#/chain/config_tool 『链的配置』这个页面,contract_arguments 这个参数的值太多了,我觉得既然可以生成init_data.yml 配置文件,那是不是可以考虑增加个类型 contract_config_file=/path/to/config.yml 这样的参数可以一次性导入整个配置文件,这样在配置文件里面去改管理配置会更直观;另外就是SysConfig中有些配置项的解释太简单了,还是不懂具体有什么作用。我建议结合具体的使用场景,可以提供几份默认的配置可供选择。

4、https://docs.nervos.org/cita/#/chain/service_config 微服务配置 中,仅介绍了每个配置中参数的含义,但是具体到多节点部署时怎么改配置,没有专门的描述;

5、jsonrpc 接口列表中,有些接口的使用场景也不清晰,比如 getTransactionProof 接口,看意思似乎是得到某种交易证明,但是具体有什么用呢?文档中说『 A proof include transaction, receipt, receipt merkle tree proof, block header. There will be a tool to verify the proof and extract some info.』,这个 tool 在哪呢?

6、最后,结合我们的场景,我们希望做到如下限制:

a、限制接入的节点(即未经批准的节点无法连入区块链网络中);

b、限制访问链上数据的账号(目前默认是随便生成个键值对,凭自己的地址就能往链上做交易了,我们希望能限制写数据的账号,如果可以的话希望读数据的账号也能限制,比如不能让任何人都能发送个 jsonrpc 请求查某个交易数据);

c、四个节点配置在四台不同的机器上,甚至可能不在同个机房,但出于安全性考虑,这些机器不会直接向公网暴露,所以这里可能涉及到列一下开哪些防火墙端口的配置;

 不知这样的限制该如何体现在配置上?

好像有点啰嗦,期盼得到答复,谢谢!

3赞

添加新节点这个操作是统一由当时初始化节点的管理员操作的,他要把新生成的新的节点的配置文件(配置文件会包含已有节点通讯地址信息),分发给新节点的维护者,由新节点维护者把配置上传到部署节点的服务器上,再按文档要求启动节点,新节点就会加入之前的CITA网络了

参考文档:
添加普通节点:
https://docs.nervos.org/cita/#/system_management/node?id=添加普通节点(以下以-4-号节点举例)

如果是要增加共识节点,还需要操作:
https://docs.nervos.org/cita/#/system_management/node?id=增加共识节点

其他的我就了解不太透彻了 :joy:

感谢使用CITA并提出宝贵的意见。
产品文档一般偏工具书性质,为了便于查找,也不好在里面长篇大论说为什么要这么设计。刚好借这个帖子,把一些设计或者说约定的东西说一下。

  1. cita不适合直接做成docker镜像。因为cita组成的网络是一个对等网络。一个节点既要作为客户端连其他节点,同时也做服务器供其他节点链接。因此对网络连通性有要求,放到docker里面需要额外的配置,比较麻烦。另外节点会依赖本地文件系统,是一个有状态的服务,不能随意迁移或者增加实例。因此,做成docker镜像没有太大的好处,反而使用起来更麻烦。
    正如你所说,cita的docker镜像是单纯为了解决依赖问题。cita用到了不少系统库,依赖比较复杂。在不同的linux发行版上,安装需要的依赖比较麻烦,而且容易出问题。用docker一来屏蔽不同发行版的差异,二来简化依赖安装,也不会跟用户本地其他应用的依赖产生冲突。基本上我们是把docker当成python的virtual env来用的。这也是为什么那个脚本叫env.sh。
    我们是希望用户可以直接忽略docker镜像的事情。因为第一次执行env.sh脚本的时候,会自动下载对应版本的镜像。所以cita是开箱即用的,但不是指docker镜像,而是指cita的二进制。从用户操作角度来说,只要下载cita的二进制就可以了,依赖(docker镜像)是自动下载的。
    我们之所以在文档里面列出docker相关的信息。一是需要运行cita的服务器上事先安装docker。虽然大部分发行版都默认安装了docker,但是还是有些特殊的场景没有,需要明确说明一下;二是有些场景,服务器在内网,无法自动下载docker镜像。所以我们给出了docker镜像仓库的地址,可以由网络管理员下载然后拷贝到需要的服务器上。
  2. cita是一个许可链平台。许可链相比以太坊这样的公链,最大的区别就是许可链的共识节点是事先确定的。本质上是一个委员会式的民主投票系统,要先明确选出委员会的成员,然后才能运作。
    这个事先选委员会的过程,更通俗的比喻就像打牌,打游戏,首先得有个组局的人,把局组起来,就是cita里面的create config的过程。这个动作只要一个人做,也只能做一次。然后就会生成所有节点的配置文件。
    配置文件里面跟运维关系最密切的就是各个节点的ip地址。把不同节点的配置文件放到对应ip的服务器上启动节点即可。cita是一个对等网络,所以四个节点不管是跑在一台服务器上,还是跑在四台服务器上,甚至是跑在两台服务器上,对cita来说都没有区别。只要把ip和端口配置对就行。
    对于测试链来说,你就是那个组局的人,你得对每个参与的人的情况(每个节点的ip,端口等信息)了如指掌。
  3. config tool不只是生成init_data.yml,还会生成微服务的配置文件。
    参数多主要是考虑到了不同的场景下的不同需求,也是逐渐加上来的。但是大部分参数都不是必须的,必须的参数只有–nodes 节点的ip和端口列表,以及–superadmin 超级管理员的地址。
    SysConfig中的配置项也类似,也是在cita发展过程中,客户提出需求,逐渐增加起来的,很多都是比较特殊的场景。我的建议是,不明白某个配置项的作用,直接忽略就好了。
  4. 前面讲过了,多节点部署只要network里面的ip和端口配置对了就可以了。微服务的配置都可以修改,而且四个节点不一样都没关系。就像电驴下载(也是对等网络),软件/协议肯定不能改,但是我本地开多少个连接,或者我根据自己的网络情况限个速,这个都是自己随便调整的,不需要整个网络的所有节点保持一致。
    但是还是同样的原则,不明白的配置项,直接忽略就可以了。
  5. getTransactionProof 用于侧链,文档里有提到。更详细的用法在文档的跨链章节,但是跨链功能目前还不完善,因此没有特别详细的介绍。
  6. 这些都是很基本的功能。
    a. 如前面所述,cita的节点是事先确定的(先不考虑动态增删节点的情况)。而且cita在网络层是白名单模式,需要明确的把所有节点的网络ip和端口列出来。所以未经批准的节点根本就连不上这个网络。
    b. 如果需要限制写权限(即发交易权限),可以用我们的权限管理功能。读数据cita本身无法限制,因为除了链上的账户(公私钥对),没有额外的账户系统。这个只能在cita的jsonrpc前面再加一层用户登录系统,可以复用你们已有的用户登录系统,或者直接用现成的开源解决方案。
    c. cita需要防火墙开的端口只有网络端口和jsonrpc端口。如果如上面所述,不想把jsonrpc端口直接暴露出去,那就只有网络端口。
    但是这种场景下,一开始生成链的配置的时候,需要指定所有节点的ip和端口号。这里的ip需要是公网ip,也就是其他节点访问本节点的时候要connect的那个ip。如果这个公网ip会变的话,可以配主机名,注意是指hosts里面配置的主机名,cita目前不支持dns域名解析。
5赞

引用 参考文档:
添加普通节点:
https://docs.nervos.org/cita/#/system_management/node?id=添加普通节点(以下以-4-号节点举例)
如果是要增加共识节点,还需要操作:
https://docs.nervos.org/cita/#/system_management/node?id=增加共识节点

链接 404

文档网站迁移到:https://docs.citahub.com/

相关的链接是: