Posts by Topic: blockchain
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链
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 - 07/03/2024
共识算法 主要研究四个共识算法包含拜占庭容错共识、工作量证明共识、权益证明共识和Raft共识。 拜占庭容错共识(PBFT) 工作量证明共识(PoW) 权益证明共识(PoS) 权益证明共识(DPoS) Raft共识 ...
智能合约
Li Guangqiao - 07/03/2024
智能合约 主要以Fisco Bcos 和Hyperleger Fabric为主进行合约的学习和研究。 Fisco Bcos合约 Solidity合约 revert错误处理 revert指令的作用是回滚合约。 合约的交易回执中,若状态码为0x16,状态信息为RevertInstruction,表示执行了回滚指令revert。 地址传递 状态变量修改函数的地址传递 例如: 现有合约TestAdd.sol、Test.sol,Test 导入了TestAdd并调用了它的test方法。 已知部署Test 的用户地址为0xe2d3a5f33454452081eb2e4ba0f99f97e40fc840。 合约地址为0x7d26aec47df6c3702c91898b05fec3a2efd0fd2f。 用户调用合约的parent方法,当前合约的msg.sender地址是用户地址0xe2d3a5f33454452081eb2e4ba0f99f97e40fc840。 那么调用test的msg.sender应该是合约地址还是发起交易用户地址? 其中用到了两个solidity的官方api,包含msg.sender当前消息发送者、tx.origin交易原始调用者。 使用错误处理回滚apirevert打印结果显示为合约地址:0x7d26aec47df6c3702c91898b05fec3a2efd0fd2f。 msg.sender的地址具有传递性,并非调用链上和原始调用者保持一致,而是遵循调用关系,比如说,用户调用合约A方法则合约A中的msg.sender为用户公钥地址,合约A方法调用了合约B方法,则合约B中的msg.sender为合约A的地址,依此类推。 tx.origin在整个调用链上始终保持一致,表示为最终发起交易的用户地址。 Test //Test.sol pragma solidity ^0.4.25; import "./TestUtil.sol"; //字符串存储数据结构 contract Test { TestUtil t = new TestUtil(); event print(address,address); function parent() public{ emit print(tx.origin,msg.sender); t.test(); ...