区块链

Hyperledger Fabric
Hyperledger Fabric

Li Guangqiao - 11/05/2024

超级账本 专业术语和概念 Assets— Asset definitions enable the exchange of almost anything with monetary value over the network, from whole foods to antique cars to currency futures. ​ 灵活的资产定义,从食物、汽车甚至未来货币,这些定义的资产可以在网络中流通。 **详细描述:**资产可以是实体的(如房地产和硬件)也可以是无形的(如合同和知识产权)。Hyperledger Fabric 提供了使用链码(chaincode)交易修改资产的能力。 ​ 在 Hyperledger Fabric 中,资产被表示为一组键值对的集合,状态变化被记录在通道账本(Channel ledger)上的交易中。资产可以以二进制和/或 JSON 形式表示。 Chaincode — Chaincode execution is partitioned from transaction ordering, limiting the required levels of trust and verification across node...

Fisco Bcos链
Fisco Bcos链

Li Guangqiao - 08/03/2024

Fisco Bcos 国密链部署 新机构接入已有链 新节点接入所需要的文件: 证书机构颁发的国密证书(需要从外部获取) 证书机构生成的链证书(需要从外部获取) 群组创世文件(需要从已有的区块链网路节点中取)group.1.genesis 群组1节点地址{ip:port} generator二进制文件 fisco-bcos2.8.0版本二进制文件 conf配置目录 模板目录tpl(用完可以删掉) . ├── applicationContext.xml ├── config.ini ├── config.ini.gm ├── download_console.sh ├── group.i.genesis ├── group.i.ini ├── load_new_groups.sh ├── reload_whitelist.sh ├── start_all.sh ├── start.sh ├── stop_all.sh └── stop.sh pys 脚本目录 log日志目录 脚本执行步骤: 将已有链的证书拷贝到新机构的目录下,这里分别将非国密证书和国密证书文件夹命名为chain_ca 、chain_ca_gm。 利用链证书生成新机构的国密证书和私钥以及链证书。 ./generator --generate_agency_certificate ./agency_ca ./chain_ca kingdom ./generator --generate_agency_certificate ./agency_ca_gm ./chain_ca_gm kingdom -g agency_ca/ └── kingdom ├── agency.crt 机构非国密证书 ├── agency.key 机构私钥 └── ca.crt 链证书 1 directory, 3 files agency_ca_gm/ └── kingdom ...

初识长安链
初识长安链

Li Guangqiao - 07/03/2024

长安链(chainmaker) 四节点docker离线部署 环境准备 我的实验环境是麒麟服务器外加一台可联网的机器(没有arm架构机器可以考虑使用qemu-static-user,安装之后允许本地跑arm架构的镜像,虽然会报警告,但没有影响运行) 要求联网可以通过ssh远程访问服务器。 目标是在服务器上部署四节点的CERT证书模式的长安链。 1 服务器docker 和docker-compose 离线安装 参考麒麟系统(arm64/aarch64)离线安装docker和docker-compose_docker-compose-linux-aarch64-CSDN博客 2 准备好长安链的arm64镜像。 联网环境: docker pull chainmakerofficial/chainmaker:v2.3.2_arm docker save -o chainmaker.tar chainmakerofficial/chainmaker:v2.3.2_arm 可以得到一个chainmaker.tar本地镜像包,并拷贝到服务器中(这里我是使用scp命令) 服务器: docker load -i chainmaker.tar 3 准备长安链的配置文件 详细参考官方文档,只需要准备到2.1.2.4. 账户生成 注意:国密版本需要修改配置模板参考官方文档 2. 通过命令行体验链 — chainmaker-docs v2.3.2 documentation # 查看生成好的节点密钥和配置 $ tree -L 3 ../build/ ../build/ ├── config │ ├── node1 │ │ ├── admin │ │ ├── chainconfig │ │ ...

区块链的理解(阅读收集)
区块链的理解(阅读收集)

Li Guangqiao - 10/10/2023

什么是区块链? ...

拜占庭问题
拜占庭问题

Li Guangqiao - 30/05/2023

简述 这种情况可以抽象地表达为一群拜占庭军队的将军和他们的军队驻扎在敌人的城市周围。因此,在一个叛徒面前,没有解决三个将军的办法,将军们只能通过信使交流,必须商定一个共同的作战计划。然而,其中一个或多个可能是叛徒,他们会试图混淆其他人。问题是找到一种算法来确保忠诚的将军们达成一致。研究表明,仅使用口头信息,这个问题是可以解决的,当且仅当超过三分之二的将军是忠诚的;所以一个叛徒可以迷惑两个忠诚的将军。有了不可伪造的文字信息,这个问题对任何数量的将军和可能的叛徒来说都是可以解决的。然后讨论了这些解决方案在可靠计算机系统中的应用。 解决目标问题 可靠的计算机系统必须处理故障部件,这些部件向系统的不同部分提供相互冲突的信息。 即解决冲突信息,思想仍然是少数服从多数。 目标 找到一种合适的算法确保忠诚的将军能达到意见一致 达到目标的条件 A 所有忠诚的将军都决定同样的行动计划。 B 一小撮叛徒不能使忠诚的将军们采纳一个坏计划。 描述:条件B很难形式化,因为它要求准确地说出什么是糟糕的计划,而我们并不打算这样做。相反,我们考虑将军们如何做出决定。每个将军都观察敌人,并把他的观察结果传达给其他人。设v(i)为第i个将军传达的信息。每个一般使用一些方法来组合值v (1) .....V (n)变成一个单独的行动计划,其中n是将军的数目。条件A是通过让所有将军使用相同的方法来组合信息来实现的,条件B是通过使用一种鲁棒方法来实现的。例如,如果要做的唯一决定是进攻还是撤退,那么v(i)就是i将军的意见,即哪个选择是最好的,而最终的决定可以基于他们中的大多数人的投票。只有当忠诚的将军们在两种可能性中几乎平分,少数卖国贼才能影响决策,在这种情况下,任何一个决定都不能被称为坏决定。虽然这种方法可能不是满足条件A和B的唯一方法,但它是我们所知道的唯一方法。它采用了一种方法,将军们通过这种方法互相交流他们的价值观v (i)。显而易见的方法是第i个将军通过信使发送v (i)给对方将军。但是,这是行不通的,因为满足条件A要求每个忠诚的将军获得相同的值v(1) .....V (n),一个叛国的将军可能会给不同的将军发送不同的值。要满足条件A,下列条件必须成立 每个忠诚的将军必须获得相同的信息v (1) ....v (n)。 条件1意味着将军不能使用直接从第i将军获得的值v(i),因为叛变的第i将军可以将不同的值发送给不同的将军。这意味着,除非我们小心,在满足条件1的情况下,我们可能引入一种可能性,即将军使用的v (i)值与第i个将军发送的值不同——即使第i个将军是忠诚的。如果满足条件B,我们绝不允许这种情况发生。例如,我们不能允许少数卖国贼使洛亚将军以“撤退”的价值作决定,……如果每一个忠诚的将军都派人去“进攻”的话。因此,我们对每个i都有以下要求 如果第i个将军是忠诚的,那么他发送的值必须被每个忠诚的将军用作***v (i)***的值。 我们可以将条件I重写为条件对于每一个I(无论第I个将军是否忠诚):1”.任何两个忠诚的将军使用相同的***v(i)***值。 条件1'和2都是第i个将军发送的单个值的条件。因此,我们可以把我们的考虑限制在一个将军如何将他的价值传递给其他将军的问题上。我们用一个指挥将军向他的副官们发出命令的方式来描述这个问题。 最终拜占庭将军的问题变成下面这样一个命题 一个将军必须向他的n - 1个中将发出这样的命令 对于命令的要求: IC1 所有忠诚的中尉都服从同一命令 IC2 如果指挥官是忠诚的,那么每个忠诚的中尉都会服从他的命令。 条件IC1和IC2称为交互一致性条件。注意,如果指挥官是忠诚的,IC1就会跟着IC2。然而,指挥官不需要忠诚。为了解决我们最初的问题,第i个将军通过使用拜占庭将军问题的解发送他的***v(i)值命令“使用v(i)***作为我的值”,其他将军作为副手。 不可能的结果 拜占庭将军问题看似简单。令人惊讶的事实表明,如果将军们只能发出口头信息,那么除非超过三分之二的将军是忠诚的,否则任何解决方案都不会奏效。特别是,在只有三个将军的情况下,在一个叛徒面前,任何解决方案都不可能奏效。口头信息的内容完全在发送者的控制之下,所以一个叛逆的发送者可以传递任何可能的信息。**这样的消息与计算机通常相互发送的消息类型相对应。在第4节中,我们考虑了签名的、书面的消息,但这是不正确的。(Such a message corresponds to the type of message that computers normally send to one another. In Section 4 we consider signed, written messages, for which this is not true....