# BTS-10 TEC合约 **Repository Path**: btsi/tec ## Basic Information - **Project Name**: BTS-10 TEC合约 - **Description**: 可信存证智能合约,简称TEC合约,代号BTS-10,适用于各类数据的区块链可信存证。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2023-01-06 - **Last Updated**: 2025-02-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 存证合约 存证合约, 允许以去中心化、安全和透明的方式进行存证及检索存证。它由5个智能合约组成,负责实现访问控制、存证逻辑以及合约升级机制。 ## 目录 - [快速开始](#快速开始) - [版本要求](#版本要求) - [合约测试](#合约测试) - [合约部署](#合约部署) - [合约调用](#合约调用) - [合约升级](#合约升级) - [贡献代码](#贡献代码) - [使用安全](#使用安全) - [项目支持](#项目支持) - [未来改进](#未来改进) - [开源许可](#开源许可) ## 快速开始 clone仓库到本地并安装所需依赖。 ```bash git clone https://gitee.com/scba-open-source-plan/certificate evidence cd evidence npm install ``` ## 版本要求 - Node.js (v14.17.0 或更高版本) - npm (v6.14.13 或更高版本) ## 合约测试 要测试智能合约,请运行以下命令: ```bash npx hardhat test ``` 这将执行位于 `test` 目录中的测试脚本, 此测试脚本将在本地Hardhat网络执行。 ## 合约部署 ### 部署到FISCO BCOS v3 #### 使用FiscoBcos控制台手动部署 1. 拷贝智能合约文件到FiscoBcos的console/contracts/solidity目录下 ```bash mkdir -p console/contracts/solidity/evidence cp -rf evidence/contract/*.sol console/contracts/solidity/evidence cp -rf evidence/node_modules/@openzeppelin console/contracts/solidity/evidence ``` 2. 启动FiscoBcos console, 进入控制台 ```bash bash console/start.sh ``` 3. 部署合约: 部署EvidenceController合约 ```console deploy evidence/EvidenceController ``` 部署EvProxyAdmin合约 ```console deploy evidence/EvProxyAdmin ``` 部署EvProxy合约 ** 国密版本 ** > 0xea605f3d为国密版本下initialize()函数的方法签名 ```console deploy evidence/EvProxy 0xea605f3d ``` ** 非国密版本 ** > 0x8129fc1c为非国密版本下initialize()函数的方法签名 ```console deploy evidence/EvProxy 0x8129fc1c ``` 4. 部署完成 ## 合约调用 对存证合约的所有调用应直接使用EvProxy合约地址来进行, 注意:若合约部署在FiscoBcos网络, 由于FiscoBcos console的call命令执行时,对合约abi进行了检查, 且无法使用attach操作, 因此不能直接在console直接使用call命令调用合约,请直接使用FiscoBcos SDK来对合约进行调用 ## 合约升级 该系统使用 OpenZeppelin 的 `TransparentUpgradeableProxy` 模式进行可升级性。要升级智能合约,请按照以下步骤操作: 1. 创建具有所需更改的智能合约新版本。 2. 编译更新后的智能合约: 3. 部署新的EvidenceController合约: 4. 更新 `EvProxy` 合约以指向新的逻辑合约, 这将升级代理合约以使用新的逻辑,同时保留现有的存证记录。 ## 贡献代码 我们欢迎对此项目进行代码贡献。如果您想做出贡献,请遵循以下步骤: 1. Fork 仓库。 2. 创建一个带有描述性名称的新分支。 3. 将您的更改提交到新分支。 4. 向主仓库提交Pull Request。 请确保您的代码记录完整且包含适当的测试。我们的维护者将审查Pull Request并提供反馈或合并更改。 如有关于此项目的问题或讨论,请随时提出问题。 ## 使用安全 在使用此存证合约时,请考虑以下方面: 1. **角色管理**:确保谨慎管理角色分配(`DEFAULT_ADMIN_ROLE`,`APPROVER_ROLE`,`EVIDENCE_ROLE`)。将具有 `DEFAULT_ADMIN_ROLE` 和 `APPROVER_ROLE` 的用户数量限制在最低,以降低未经授权访问的风险。 2. **合约升级**:在升级智能合约时,请确保新的逻辑不会引入漏洞或回归。最好的做法是让独立的安全专家对更新的合约进行审计。 3. **数据验证**:存证依赖于Hash的证据数据。确保将要提交给系统的数据使用安全且广泛认可的哈希算法(如sm3或sha256)进行哈希处理。 4. **访问控制**:在授予或撤销角色时要谨慎,尤其是 `APPROVER_ROLE`,因为它可以向其他用户授予或撤销 `EVIDENCE_ROLE`。 5. **隐私**:存储在区块链上的数据是透明且不可更改的。确保不在存证记录中包含敏感或私人信息。 ## 项目支持 如果您在使用此存证系统时遇到任何问题或需要协助,请随时提交Issues。我们的团队将非常乐意帮助您。 ## 未来改进 我们将持续改进这个存证系统。计划中的改进包括: 1. 增加合约到FiscoBcos的部署脚本。 2. AccessController中的管理的地址与区块链身份系统相关联 我们欢迎社区对新功能和改进提供反馈和建议。请随时提出问题或提交带有您的想法的Pull Request。 ## 开源许可 本项目使用MIT License授权。