diff --git a/README.md b/README.md index 084c0334aa83a9b0e6e3ff8fe34faab4f515c124..70be1b92be53784c6dc7146cea146444bd1798fc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# 数字资产存证合约 +# 数据资源存证合约 - 数字资产存证合约, 允许以去中心化、安全和透明的方式进行存证及检索存证。它由5个智能合约组成,负责实现访问控制、存证逻辑以及合约升级机制。 + 数据资源存证合约, 允许以去中心化、安全和透明的方式进行存证及检索存证。它由7个智能合约组成,负责实现访问控制、存证逻辑以及合约升级机制。 ## 目录 @@ -22,8 +22,8 @@ clone仓库到本地并安装所需依赖。 ```bash -git clone git@github.com:2CLabs/DA-contract-standard.git daevidence -cd daevidence +git clone git@github.com:2CLabs/DA-contract-standard.git drevidence +cd drevidence npm install ``` @@ -50,9 +50,9 @@ npx hardhat test 1. 拷贝智能合约文件到FiscoBcos的console/contracts/solidity目录下 ```bash - mkdir -p console/contracts/solidity/daevidence - cp -rf daevidence/contracts/*.sol console/contracts/solidity/daevidence - cp -rf daevidence/node_modules/@openzeppelin console/contracts/solidity/daevidence + mkdir -p console/contracts/solidity/drevidence + cp -rf drevidence/contracts/*.sol console/contracts/solidity/drevidence + cp -rf drevidence/node_modules/@openzeppelin console/contracts/solidity/drevidence ``` 2. 启动FiscoBcos console, 进入控制台 @@ -63,47 +63,143 @@ npx hardhat test 3. 部署合约: - 部署DAEvidenceController合约 + 部署DREvidenceAdminController合约 ```console - deploy daevidence/DAEvidenceController + deploy drevidence/DREvidenceAdminController ``` - 部署DAEvProxyAdmin合约 + 部署DREvidenceUserController合约 + + ```console + deploy drevidence/DREvidenceUserController + ``` + + 部署DREvidenceRightController合约 + + ```console + deploy drevidence/DREvidenceRightController + ``` + + 部署DREvidenceReviewController合约 + ```console - deploy daevidence/DAEvProxyAdmin + deploy drevidence/DREvidenceReviewController ``` - 部署DAEvProxy合约 + 部署DREvProxyAdmin合约 + + ```console + deploy drevidence/DREvProxyAdmin + ``` + + 部署DREvProxy合约 ** 国密版本 ** > 0xea605f3d为国密版本下initialize()函数的方法签名 ```console - deploy daevidence/DAEvProxy 0xea605f3d + deploy drevidence/DREvProxy 0xea605f3d ``` ** 非国密版本 ** > 0x8129fc1c为非国密版本下initialize()函数的方法签名 ```console - deploy daevidence/DAEvProxy 0x8129fc1c + deploy drevidence/DREvProxy 0x8129fc1c ``` 4. 部署完成 ## 合约调用 -对数字资产存证合约的所有调用应直接使用DAEvProxy合约地址来进行, 注意:若合约部署在FiscoBcos网络, 由于FiscoBcos console的call命令执行时,对合约abi进行了检查, 且无法使用attach操作, 因此不能直接在console直接使用call命令调用合约,请直接使用FiscoBcos SDK来对合约进行调用.具体调用请参考https://github.com/2CLabs/DA-java-test.git 。 +对数字资产存证合约的所有调用应直接使用DREvProxy合约地址来进行, 注意:若合约部署在FiscoBcos网络, 由于FiscoBcos console的call命令执行时,对合约abi进行了检查, 且无法使用attach操作, 因此不能直接在console直接使用call命令调用合约,请直接使用FiscoBcos SDK来对合约进行调用.具体调用请参考https://github.com/2CLabs/DRC-java-test.git 。 ## 合约设置 - 数字资产存证合约部署后, 合约管理员需调用如下接口对合约进行设置,合约才能正常工作。具体调用请参考https://github.com/2CLabs/DA-java-test.git 。 + 数据资源存证合约部署后, 合约管理员需调用如下接口对合约进行设置,合约才能正常工作。具体调用请参考https://github.com/2CLabs/DRC-java-test.git 。 + +#### 1 设置各个controller逻辑合约的方法签名 + +```bash +setSelectors(IDREvidenceLogicMan proxy, bytes4[] memory selectors, address[] memory logicAddresses) +``` + +该接口需通过DREvProxyAdmin调用,目前支持的controller逻辑合约有 DREvidenceAdminController,DREvidenceUserController,DREvidenceRightController,DREvidenceReviewController. + +其中参数proxy为DREvProxy的地址。 + +logicAddress为各方法签名对应的controller逻辑合约地址。 + +其中DREvidenceAdminController对应的方法签名如下表所示: + +| 合约名称 | 对应的函数名称 | 非国密版本签名 | 国密版本签名 | +| ------------------------- | ------------------------------------- | -------------- | ------------ | +| DREvidenceAdminController | disableAccessControl | 0x760B04DD | 0xAA2AB25A | +| | enableAccessControl | 0x36F5F45E | 0x45135492 | +| | getDataRightCategory | 0x8A9019B3 | 0xE24DF4FA | +| | getSupportVariableDataFields | 0xE6A310BA | 0x1673BBEE | +| | grantUserManagePermission | 0x3DD296B5 | 0xB70B2FBC | +| | hasUserManageRole | 0x4CEA35A6 | 0xB5AED06F | +| | initialize | 0x8129FC1C | 0xEA605F3D | +| | setChainName | 0xC0C41F22 | 0xC52A7B12 | +| | setDataRightCategory | 0x936628C1 | 0x7C6DD587 | +| | setDataRightSupportVariableDataFields | 0x47791208 | 0x7F4D27B6 | +| | setTextMaxLen | 0x50E12A46 | 0x4C9A1821 | +| | getChainName | 0xD722B0BC | 0x2B668B87 | +| | getTextMaxLen | 0xCE3FB8AC | 0x5EA854EF | +| | getstrArrayMaxLen | 0x35F6A661 | 0x728DA5B3 | +| | getAccessControl | 0xFC1DAD81 | 0x7181C35C | + + + +其中DREvidenceUserController对应的方法签名如下表所示: + +| 合约名称 | 对应的函数名称 | 非国密版本签名 | 国密版本签名 | +| ------------------------ | -------------------------- | -------------- | ------------ | +| DREvidenceUserController | addUser | 0xC115B334 | 0xD9AD467B | +| | getUserRoles | 0x996B4F65 | 0x5E84B511 | +| | grantUserRoles | 0x8A6C5203 | 0x06DECF4C | +| | revokeUserRoles | 0x236419AE | 0x8766C78C | +| | getDataCount | 0x30A76B38 | 0xB4385765 | +| | getDataList | 0x948F88A4 | 0x6AF9402E | +| | queryUserRole | 0x114003C0 | 0x71F7025C | +| | revokeUserManagePermission | 0xFC4EB482 | 0xA4FF64C2 | + + + +其中DREvidenceRightController对应的方法签名如下表所示: + +| 合约名称 | 对应的函数名称 | 非国密版本签名 | 国密版本签名 | +| ------------------------- | ------------------------- | -------------- | ------------ | +| DREvidenceRightController | addDataRightEvidence | 0x9D121B95 | 0xD7FCB791 | +| | appendVariableData | 0x7F762875 | 0x4D97DA50 | +| | getRegisteredData | 0x0C6A3981 | 0xEAA4244D | +| | getUdriByDatahash | 0x25C5A118 | 0xDE1E5C90 | +| | getUserDataRight | 0x41E0737D | 0x474768BD | +| | withdrawDataRightRegister | 0x8E93D0AD | 0x4653E3A8 | +| | withdrawUserDataRight | 0xFB0A9583 | 0xA8666327 | +| | grantUserDataRight | 0xC234F913 | 0xC82AB813 | + + + +其中DREvidenceReviewController对应的方法签名如下表所示: + +| 合约名称 | 对应的函数名称 | 非国密版本签名 | 国密版本签名 | +| -------------------------- | --------------------------- | -------------- | ------------ | +| DREvidenceReviewController | addReviewEvidence | 0xEFDDD7F8 | 0x2DB3C636 | +| | getReviewCount | 0x588F695D | 0x4F4A0222 | +| | getReviewCountOfReviewer | 0xE6947731 | 0xA87808D8 | +| | getVerifyEvidence | 0x6E963A59 | 0xF216DFF3 | +| | getVerifyEvidenceOfReviewer | 0x5EDEA296 | 0xD1243968 | +| | withdrawReviewEvidence | 0x378D85FA | 0x84E38262 | + + -#### 1 设置数据权限类别 +#### 2 设置数据权限类别 ```bash function setDataRightCategory(string[] memory fields) ``` -目前支持的数据权限类别有 hold,process,operate三类. +该接口需通过DREvProxy调用,目前支持的数据权限类别有 hold,process,operate三类. -#### 2 设置某种存证类别的 variableData 支持的字段 +#### 3 设置某种存证类别的 variableData 支持的字段 ```bash function setDataRightSupportVariableDataFields(string memory category, string[] memory fields) @@ -111,17 +207,17 @@ function setDataRightSupportVariableDataFields(string memory category, string[] 目前支持的存证类别有right,review两类. -目前支持的variableData字段暂定有extendDataHash, extendDataUrl. +该接口需通过DREvProxy调用,目前支持的variableData字段暂定有extendDataHash, extendDataUrl. ## 合约升级 -该系统使用 OpenZeppelin 的 `TransparentUpgradeableProxy` 模式进行可升级性。要升级智能合约,请按照以下步骤操作: +该系统扩展了 OpenZeppelin 的 `TransparentUpgradeableProxy` 模式进行可升级性。要升级智能合约,请按照以下步骤操作: -1. 创建具有所需更改的智能合约新版本。 +1. 创建具有所需更改的Controller逻辑合约新版本(目前支持DREvidenceAdminController,DREvidenceUserController,DREvidenceRightController,DREvidenceReviewController)。 2. 编译更新后的智能合约: -3. 部署新的DAEvidenceController合约: -4. 更新 `DAEvProxy` 合约以指向新的逻辑合约, 这将升级代理合约以使用新的逻辑,同时保留现有的存证记录。 +3. 部署新的Controller逻辑合约: +4. 通过DREvProxyAdmin的setSelectors来更新 `DREvProxy` 合约以指向新的逻辑合约, 这将升级代理合约以使用新的逻辑,同时保留现有的存证记录。 ## 贡献代码 diff --git a/contracts/DAEvProxy.sol b/contracts/DAEvProxy.sol deleted file mode 100644 index 52b09a86844a2f6f0744583446adc7173841d418..0000000000000000000000000000000000000000 --- a/contracts/DAEvProxy.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - -contract DAEvProxy is TransparentUpgradeableProxy { - constructor(address _logic, address admin_, bytes memory _data) TransparentUpgradeableProxy(_logic, admin_, _data) {} -} \ No newline at end of file diff --git a/contracts/DAEvProxyAdmin.sol b/contracts/DAEvProxyAdmin.sol deleted file mode 100644 index 7d7992e016349094241c6cf2cbe855bf9993f820..0000000000000000000000000000000000000000 --- a/contracts/DAEvProxyAdmin.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; - -contract DAEvProxyAdmin is ProxyAdmin { - constructor() {} -} \ No newline at end of file diff --git a/contracts/DAEvidenceController.sol b/contracts/DAEvidenceController.sol deleted file mode 100644 index fad3608c1342a44a8d6597df8e876f8b8bc0f4ba..0000000000000000000000000000000000000000 --- a/contracts/DAEvidenceController.sol +++ /dev/null @@ -1,375 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "./utils/DAEvidenceString.sol"; -import "./utils/DAEvidenceMap.sol"; -import "./DAAccessController.sol"; -import "./storage/DAEvidenceStorage.sol"; -import "./storage/DAEvidenceStorageLib.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; - -contract DAEvidenceController is Initializable, DAAccessController, DAEvidenceStorage { - - using DAEvidenceMap for DAEvidenceMap.DAMappingString; - using DAEvidenceMap for DAEvidenceMap.DAMappingUint32; - using DAEvidenceMap for DAEvidenceMap.DAMappingStringArray; - using DAEvidenceMap for DAEvidenceMap.DAMappingBytes32; - using Strings for uint32; - using DAEvidenceString for string; - using DAEvidenceString for bytes32; - using DAEvidenceString for uint256; - // using DAEvidenceString for uint32; - - using DAEvidenceStorageLib for DAEvidenceStorageLib.DAEStorage; - - - - - /******************************************** 变量 **************************************************/ - string private _chainName; - uint32 private _textMaxLen; - uint32 private _strArrayMaxLen; - bool private _isAccessControlEnabled; - - function initialize() public initializer { - _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); - // _setRoleAdmin(DAEVIDENCE_ROLE, APPROVER_ROLE); - grantUserManagePermission("bid:0", msg.sender); - _chainName = "ShuXin"; - _textMaxLen = 5000; - _strArrayMaxLen = 1000; - _isAccessControlEnabled = false; - } - - function setChainName(string memory name) public onlyRole(DEFAULT_ADMIN_ROLE) { - _chainName = name; - } - - function setTextMaxLen(uint32 len) public onlyRole(DEFAULT_ADMIN_ROLE) { - _textMaxLen = len; - } - - function setstrArrayMaxLen(uint32 len) public onlyRole(DEFAULT_ADMIN_ROLE) { - _strArrayMaxLen = len; - } - - //set isAccessControlEnabled to true to enable access control - function enableAccessControl() public onlyRole(DEFAULT_ADMIN_ROLE) { - _isAccessControlEnabled = true; - } - - //set isAccessControlEnabled to false to disable access control - function disableAccessControl() public onlyRole(DEFAULT_ADMIN_ROLE) { - _isAccessControlEnabled = false; - } - - /* - 可以以后添加该接口 - eid: it is outer Eid - category: "" - fixData: ["urid", "", "bid", "", "dataHash_1": "", "dataHash_2": "", ""] - */ - // function getDAEvidenceById(string memory eid) public view returns (string memory category, string[] memory fixData, string[] memory metaData, string[] memory variableData, uint256 timestamp) { - // // TODO - // bytes32 innerEid = dataStorage._GetInnerEidFromOuterEid(eid.hash()); - // DAEvidenceStorageLib.CommEvidence storage evidence = dataStorage._getCommEvidence(innerEid); - // category = evidence.category; - // metaData = evidence.metaData; - // variableData = evidence.variableData; - // timestamp = evidence.timestamp; - - // // TODO: 不同类型的存证, fixData 数据字段不一样 - // } - - /******************************************** 内部接口 **************************************************/ - - - // 获取当前某种存证支持的 variableData 字段 - function getSupportVariableDataFields(string memory category) public view returns (string[] memory fileds) { - return dataStorage.getSupportVariableDataFields(category); - } - - // 设置某种存证 variableData 支持的字段,实现逻辑是:先将之前的所有fields都清除,再重新设置,原则上是只能在原有基础上新加字段,减少字段会导致之前保存的字段不能获取到 - function setDataRightSupportVariableDataFields(string memory category, string[] memory fields) public onlyRole(DEFAULT_ADMIN_ROLE) { - // TODO: 可以设置成开关,支持验证或则不验证这些字段 - dataStorage.setDataRightSupportVariableDataFields(category, fields); - } - - // 数据权限管理--- 设置分类 (1.数据资源持有权; 2.数据加工使用权; 3.数据产品经营权。) - function setDataRightCategory(string[] memory fields) public onlyRole(DEFAULT_ADMIN_ROLE) { - // Clean current - bytes32 vbKey = keccak256(bytes("data_right_category:")); - string[] memory variableDataFields = dataStorage.commData.byte32ToStringArrary.get(vbKey); - for (uint32 i = 0; i < variableDataFields.length; i++) { - string memory vbFieldKeyStr = "data_right_category:key="; - bytes32 key = keccak256(bytes(vbFieldKeyStr.concat(fields[i]))); - dataStorage.commData.byte32ToUint32.update(key, 0); - } - // Set - for (uint32 i = 0; i < fields.length; i++) { - string memory vbFieldKeyStr = "data_right_category:key="; - bytes32 key = keccak256(bytes(vbFieldKeyStr.concat(fields[i]))); - dataStorage.commData.byte32ToUint32.update(key, 1); - } - dataStorage.commData.byte32ToStringArrary.update(vbKey, fields); - } - - // 数据权限管理--- 获取分类 - function getDataRightCategory() public view returns(string[] memory fields) { - return dataStorage.getDataRightCategory(); - } - - function _hasDAUserManageRole() internal view returns(bool) { - (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); - require(isExist == true, "Sender is not registered."); - return hasDAUserManageRole(bid); - } - - function _isDataRightEvidenceOwner(string memory udri) internal view returns(bool) { - bytes32 innerEid = keccak256( - bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri)) - ); - (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); - require(isExist == true, "Sender is not registered."); - - DAEvidenceStorageLib.CommEvidence storage evidence = dataStorage._getCommEvidence(innerEid); - require(evidence.timestamp != 0, "evidence is not exist."); - - string memory bidInEvidence = dataStorage._getCommEvidenceIndefiniteString(innerEid, "bid"); - - return bid.equal(bidInEvidence); - } - - // 检查sender是 存证 owner - function _requireDataRightEvidenceOwnerByUrid(string memory udri) internal view{ - require(_isDataRightEvidenceOwner(udri) == true, "Sender is not evidence owner."); - } - - // 检查sender是否是某个角色 - function _checkUserRole(string memory role) internal view{ - (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); - require(isExist == true, "Sender is not registered."); - DAEvidenceStorageLib.UserInfoV1 storage user = dataStorage._getUseStoragerByBid(bid); - require((user.indefiniteString.get(DAEvidenceStorageLib.USER_ROLE_PREFIX.concat(role).hash()).equal("exist")) == true, "User without corresponding role permissions."); - } - - /******************************************** 用户 **************************************************/ - function queryUserRole() public view returns (string[] memory) { - return DAEvidenceStorageLib.queryUserRole(); - } - - // 3.1 配置管理权限 - /* - 3.1.1 配置管理权限 - - 功能定位 - 由运营方(合约所有者)在链上给某个机构帐号地址赋予用户管理权限。 - - 调用限制 - 该接口只有运营方(合约所有者)能调用。 - - DAAccessController 中已经定义 - */ - // function grantUserManagePermission(string memory bid, address account) public { - // } - - /* - 3.1.2 回收管理权限 - 由运营方(合约所有者)在链上收回某个机构帐号地址的用户管理权限。 - - 调用限制 - 该接口只有运营方(合约所有者)能调用。 - - DAAccessController 中已经定义 - */ - // function revokeUserManagePermission(string memory bid) public { - // } - - /* - 3.2 用户角色管理 - 3.2.1 添加用户 - 由用户管理员在链上添加用户信息,同时可以绑定用户角色。 - */ - function addUser(string memory bid, string memory usci, string memory name,address account, string[] memory roles) public onlyRole(USERMANAGE_ROLE) { - dataStorage.addUser(bid, usci, name, account, roles); - _emitNewUser(bid, usci); - } - - /* - 3.2.2 查询用户 - 根据用户bid查询当前用户信息及其绑定的角色。 - */ - function getUserRoles(string memory bid) public view returns(string memory usci, string memory name, string[] memory roles) { - return dataStorage.getUserRoles(bid); - } - - /* - 3.2.3 添加用户角色 - 为用户添加新的角色。 - */ - function grantUserRoles(string memory bid, string[] memory roles) public onlyRole(USERMANAGE_ROLE) { - dataStorage.grantUserRoles(bid, roles); - _emitUserRoleChanged(bid); - } - - /* - 3.2.4 回收用户角色 - 由用户管理员回收用户的一或多个角色。 - */ - function revokeUserRoles(string memory bid, string[] memory roles) public onlyRole(USERMANAGE_ROLE) { - dataStorage.revokeUserRoles(bid, roles); - _emitUserRoleChanged(bid); - } - - /* 4.3 登记存证(二阶段)*/ - - /* 5. 查询相关接口 */ - /* 5.1 查询用户数据信息 */ - /* 5.1.1 查询用户数据数量 */ - function getDataCount(string calldata bid) public view returns (uint256 dataCount) { - return dataStorage.getDataCount(bid); - } - - /* 5.1.2 查询用户数据列表 */ - function getDataList(string memory bid, uint256 start, uint256 count) public view returns (string[] memory udriArray) { - return dataStorage.getDataList(bid, start, count); - } - - /******************************************** 审查存证 **************************************************/ - /* 4.2 审查存证 */ - /* 4.2.1 新增审查存证 */ - function addReviewEvidence(string memory udri, string memory reviewerBid, string[] memory reviewDataHash, string[] memory metaData, string[] memory variableData) public { - _checkUserRole(DAEvidenceStorageLib.USER_ROLE_REVIEWER); - dataStorage.addReviewEvidence(udri, reviewerBid, reviewDataHash, metaData, variableData); - // (, string memory outerEid) = DAEvidenceStorageLib.genEidViaUrdi(udri, _chainName, DAEvidenceStorageLib.EVIDENCE_CATEGORY_REVIEW); - uint32 count = dataStorage.getEvidenceReviewCount(udri); - // _emitNewRightEvidence(outerEid); - _emitNewReviewEvidence(udri, count - 1); - } - - /* 4.2.2 撤回审查存证 */ - function withdrawReviewEvidence(string memory udri, string memory reviewerBid) public { - _checkUserRole(DAEvidenceStorageLib.USER_ROLE_REVIEWER); - dataStorage.withdrawReviewEvidence(udri, reviewerBid); - } - - /* 5.3 查询审查存证信息 */ - /* 5.3.1 查询审查存证数量 */ - function getReviewCount(string calldata udri) public view returns (uint256 reviewCount) { - // TODO: 修改文档那边,方法定义不一致 - return dataStorage.getReviewCount(udri); - } - - /* 5.3.2 查询审查存证信息 */ - function getVerifyDAEvidence(string calldata udri, uint32 index) public view returns (bool isWithdraw, string memory reviewerBid, string[] memory metaData, string[] memory variableData) { - // TODO: 添加了isWithdraw 需要在文档中也修改 - return dataStorage.getVerifyDAEvidence(udri, index); - } - - // 获取某个审核机构对某个数据存证的 审核次数 - function getReviewCountOfReviewer(string calldata udri, string calldata reviewerBid) public view returns (uint256 count) { - // TODO: 修改文档那边,方法定义不一致 - return dataStorage.getReviewCountOfReviewer(udri, reviewerBid); - } - - // 获取某个审核机构对某个数据存证的 某次审核信息 - function getVerifyDAEvidenceOfReviewer(string calldata udri, string calldata reviewerBid, uint32 index) public view returns (bool isWithdraw, string[] memory metaData, string[] memory variableData) { - return dataStorage.getVerifyDAEvidenceOfReviewer(udri, reviewerBid, index); - } - - /******************************************** 确权存证**************************************************/ - /*4. 存证 */ - /* 4.1.1 新增确权存证 */ - function addDataRightEvidence( - string memory udri, - string memory bid, - string[] memory dataHash, - string[] memory dataRight, - string[] memory metaData, - string[] memory variableData - ) public { - _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); - dataStorage.addDataRightEvidence(udri, bid, dataHash, dataRight, metaData, variableData); - // (, string memory outerEid) = DAEvidenceStorageLib.genEidViaUrdi(udri, _chainName, DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT); - // _emitNewEvidence(outerEid); - _emitNewRightEvidence(udri); - } - - /* 4.1.2 追加可变数据存证 */ - function appendVariableData( - string memory udri, - string[] memory variableData - ) public { - _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); - _requireDataRightEvidenceOwnerByUrid(udri); - dataStorage.appendVariableData(udri, variableData); - } - - /* 4.1.3 撤回确权存证 */ - function withdrawDataRightRegister( - string memory udri, - /*string memory dataRightOwnerBid, */ - string[] memory dataRight - ) public { - // TODO: 接口和文档中不一致,需要确认是否修改成代码这边这种方式。 - _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); - require(_isDataRightEvidenceOwner(udri)== true || _hasDAUserManageRole() == true, "Sender neither the owner nor the authority."); - _requireDataRightEvidenceOwnerByUrid(udri); - dataStorage.withdrawDataRightRegister(udri, dataRight); - } - - /* 4.1.4 新增授权存证 */ - function grantUserDataRight( - string memory udri, - string memory bid, - string[] memory dataRight - ) public { - _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); - _requireDataRightEvidenceOwnerByUrid(udri); - dataStorage.grantUserDataRight(udri, bid, dataRight); - } - - /* 4.1.5 撤回授权存证 */ - function withdrawUserDataRight( - string memory udri, - string memory bid, - string[] memory dataRight - ) public { - _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); - _requireDataRightEvidenceOwnerByUrid(udri); - dataStorage.withdrawUserDataRight(udri, bid, dataRight); - } - - /* 5.2 查询确权存证信息 */ - /* 5.2.1 查询存证数据标识 */ - function getUdriByDatahash(string calldata dataHash) - public - view - returns (string memory udri) - { - return dataStorage.getUdriByDatahash(dataHash); - } - - /* 5.2.2 查询确权存证信息 */ - function getRegisteredData(string memory udri) - public - view - returns ( - string memory dataHashSM, - string memory dataHashSHA, - string[] memory dataRight, - string[] memory metaData, - string[] memory variableData, - bool isWithdraw - ) - { - return dataStorage.getRegisteredData(udri); - } - - /* 5.2.3 查询授权信息 */ - function getUserDataRight(string memory udri, string memory bid) - public - view - returns (string[] memory dataRight) - { - return dataStorage.getUserDataRight(udri, bid); - } -} diff --git a/contracts/DAEvidenceUtils.sol b/contracts/DAEvidenceUtils.sol deleted file mode 100644 index a418d7dcb48bf9716a2ccc1e3a5899cf0f8b08dc..0000000000000000000000000000000000000000 --- a/contracts/DAEvidenceUtils.sol +++ /dev/null @@ -1,77 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -library DAEvidenceUtils { - - // DAMappingString - struct DAMappingString { - mapping(bytes32 => string) _kv; - } - - function contains(DAMappingString storage set, bytes32 key) internal view returns (bool) { - return bytes(set._kv[key]).length != 0; - } - - function add(DAMappingString storage set, bytes32 key, string memory value) internal returns (bool) { - if (!contains(set, key)) { - set._kv[key] = value; - return true; - } else { - return false; - } - } - - function update(DAMappingString storage set, bytes32 key, string memory value) internal returns (bool) { - set._kv[key] = value; - return true; - } - - function get(DAMappingString storage set, bytes32 key) internal view returns (string memory) { - return set._kv[key]; - } - - // DAMappingStringArray - struct DAMappingStringArray { - mapping(bytes32 => string[] ) _kv; - } - - function contains(DAMappingStringArray storage set, bytes32 key) internal view returns (bool) { - return set._kv[key].length != 0; - } - - function add(DAMappingStringArray storage set, bytes32 key, string[] memory value) internal returns (bool) { - if (!contains(set, key)) { - set._kv[key] = value; - return true; - } else { - return false; - } - } - - function update(DAMappingStringArray storage set, bytes32 key, string[] memory value) internal returns (bool) { - set._kv[key] = value; - return true; - } - - function get(DAMappingStringArray storage set, bytes32 key) internal view returns (string[] memory) { - return set._kv[key]; - } - - // DAMappingUint32 - struct DAMappingUint32 { - mapping(bytes32 => uint32) _kv; - } - - function update(DAMappingUint32 storage set, bytes32 key, uint32 value) internal returns (bool) { - set._kv[key] = value; - return true; - } - - function add(DAMappingUint32 storage set, bytes32 key, uint32 value) internal returns (bool) { - return update(set, key, value); - } - - function get(DAMappingUint32 storage set, bytes32 key) internal view returns (uint32) { - return set._kv[key]; - } -} diff --git a/contracts/DAAccessController.sol b/contracts/DRAccessController.sol similarity index 87% rename from contracts/DAAccessController.sol rename to contracts/DRAccessController.sol index 1f0d98ece6edac1f180d932fad6bacbea0d4bb54..56ca90e81c321dc63d21bb6094c89a1175cc1c68 100644 --- a/contracts/DAAccessController.sol +++ b/contracts/DRAccessController.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; -contract DAAccessController is AccessControlUpgradeable { +contract DRAccessController is AccessControlUpgradeable { bytes32 public constant USERMANAGE_ROLE = keccak256("USERMANAGE_ROLE"); mapping(string => address) private _usermanagers; // bid = address @@ -22,7 +22,7 @@ contract DAAccessController is AccessControlUpgradeable { } } - function hasDAUserManageRole(string memory bid) public view virtual returns (bool) { + function hasUserManageRole(string memory bid) public view virtual returns (bool) { if(_usermanagers[bid]!=address(0)) return hasRole(USERMANAGE_ROLE, _usermanagers[bid]); else diff --git a/contracts/DREvProxy.sol b/contracts/DREvProxy.sol new file mode 100644 index 0000000000000000000000000000000000000000..5ed5bb5da4ed8fa0b525ce239a517274725e79e4 --- /dev/null +++ b/contracts/DREvProxy.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +interface IDREvidenceLogicMan { + function setSelector(bytes4 selector, address logicAddress) external; + function setSelectors(bytes4[] memory selectors, address[] memory logicAddresses) external; +} + +contract DREvProxy is TransparentUpgradeableProxy { + mapping (bytes4 => address) private controllerSlector; + + constructor(address _logic, address admin_, bytes memory _data) TransparentUpgradeableProxy(_logic, admin_, _data) {} + + /** + * @dev Returns the current implementation address. + */ + function _implementation() internal view virtual override returns (address impl) { + return controllerSlector[msg.sig]; + } + + function _dispatchSetSelector() private returns (bytes memory) { + (bytes4 selector, address logicAddress) = abi.decode(msg.data[4:], (bytes4, address)); + controllerSlector[selector] = logicAddress; + return ""; + } + + function _dispatchSetSelectors() private returns (bytes memory) { + (bytes4[] memory selectors, address[] memory logicAddresses) = abi.decode(msg.data[4:], (bytes4[], address[])); + require(selectors.length > 0 && logicAddresses.length > 0, "selectors & logicAddresses length should be > 0"); + require(selectors.length == logicAddresses.length, "selectors length should be equal to logicAddresses length"); + uint32 len = uint32(selectors.length); + for(uint32 i = 0; i < len; i++) { + controllerSlector[selectors[i]] = logicAddresses[i]; + } + return ""; + } + + /** + * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior + */ + function _fallback() internal virtual override { + if (msg.sender == _getAdmin()) { + bytes memory ret; + bytes4 selector = msg.sig; + if (selector == IDREvidenceLogicMan.setSelector.selector) { + ret = _dispatchSetSelector(); + assembly { + return(add(ret, 0x20), mload(ret)) + } + } else if (selector == IDREvidenceLogicMan.setSelectors.selector) { + ret = _dispatchSetSelectors(); + assembly { + return(add(ret, 0x20), mload(ret)) + } + } else { + super._fallback(); + } + } else { + super._fallback(); + } + } +} \ No newline at end of file diff --git a/contracts/DREvProxyAdmin.sol b/contracts/DREvProxyAdmin.sol new file mode 100644 index 0000000000000000000000000000000000000000..f0de37bae44aacec72701a3ce21add2f187a6d48 --- /dev/null +++ b/contracts/DREvProxyAdmin.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +import "./DREvProxy.sol"; + +contract DREvProxyAdmin is ProxyAdmin { + constructor() {} + + /** + * @dev Set contract address to handle function + * + * Requirements: + * + * - This contract must be the current admin of `proxy`. + */ + function setSelector(IDREvidenceLogicMan proxy, bytes4 selector, address logicAddress) public virtual onlyOwner { + proxy.setSelector(selector, logicAddress); + } + + /** + * @dev Set contract address to handle function + * + * Requirements: + * + * - This contract must be the current admin of `proxy`. + */ + function setSelectors(IDREvidenceLogicMan proxy, bytes4[] memory selectors, address[] memory logicAddresses) public virtual onlyOwner { + proxy.setSelectors(selectors, logicAddresses); + } +} \ No newline at end of file diff --git a/contracts/DREvidenceAdminController.sol b/contracts/DREvidenceAdminController.sol new file mode 100644 index 0000000000000000000000000000000000000000..ea1cffd998217b4a03842b5e7c1a24f71a86c129 --- /dev/null +++ b/contracts/DREvidenceAdminController.sol @@ -0,0 +1,131 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "./utils/DREvidenceString.sol"; +import "./utils/DREvidenceMap.sol"; +import "./DRAccessController.sol"; +import "./storage/DREvidenceStorage.sol"; +import "./storage/DREvidenceStorageLib.sol"; +import "./storage/DREvidenceStorageDefine.sol"; +import "./storage/DREvidenceStorageConstant.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts/proxy/Proxy.sol"; + +contract DREvidenceAdminController is Initializable, DRAccessController, DREvidenceStorage { + + using DREvidenceMap for DREvidenceMap.DRMappingString; + using DREvidenceMap for DREvidenceMap.DRMappingUint32; + using DREvidenceMap for DREvidenceMap.DRMappingStringArray; + using DREvidenceMap for DREvidenceMap.DRMappingBytes32; + using DREvidenceMap for DREvidenceMap.DRMappingAddress; + using Strings for uint32; + using DREvidenceString for string; + using DREvidenceString for bytes32; + using DREvidenceString for uint256; + // using DREvidenceString for uint32; + + using DREvidenceStorageLib for DREvidenceStorageDefine.DREStorage; + + + function initialize() public initializer { + _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); + // _setRoleAdmin(DAEVIDENCE_ROLE, APPROVER_ROLE); + grantUserManagePermission("bid:0", msg.sender); + + string memory keyStr = "chain_name="; + dataStorage.commData.byte32ToString.update(keyStr.hash(), "ShuXin"); + + keyStr = "text_max_len="; + dataStorage.commData.byte32ToUint32.update(keyStr.hash(), 5000); + + keyStr = "str_array_max_len="; + dataStorage.commData.byte32ToUint32.update(keyStr.hash(), 1000); + + keyStr = "control_enabled="; + dataStorage.commData.byte32ToUint32.update(keyStr.hash(), 0); + } + + function setChainName(string memory name) public onlyRole(DEFAULT_ADMIN_ROLE) { + string memory keyStr = "chain_name="; + dataStorage.commData.byte32ToString.update(keyStr.hash(), name); + } + + function setTextMaxLen(uint32 len) public onlyRole(DEFAULT_ADMIN_ROLE) { + string memory keyStr = "text_max_len="; + dataStorage.commData.byte32ToUint32.update(keyStr.hash(), len); + } + + function setstrArrayMaxLen(uint32 len) public onlyRole(DEFAULT_ADMIN_ROLE) { + string memory keyStr = "str_array_max_len="; + dataStorage.commData.byte32ToUint32.update(keyStr.hash(), len); + } + + //set isAccessControlEnabled to true to enable access control + function enableAccessControl() public onlyRole(DEFAULT_ADMIN_ROLE) { + string memory keyStr = DREvidenceStorageConstant.ADMIN_PARAM_CONTRACT_ACCESS; + dataStorage.commData.byte32ToUint32.update(keyStr.hash(), 1); + } + + //set isAccessControlEnabled to false to disable access control + function disableAccessControl() public onlyRole(DEFAULT_ADMIN_ROLE) { + string memory keyStr = DREvidenceStorageConstant.ADMIN_PARAM_CONTRACT_ACCESS; + dataStorage.commData.byte32ToUint32.update(keyStr.hash(), 0); + } + + function getChainName() public view returns(string memory name) { + string memory keyStr = "chain_name="; + return dataStorage.commData.byte32ToString.get(keyStr.hash()); + } + + function getTextMaxLen() public view returns(uint32 len) { + string memory keyStr = "text_max_len="; + return dataStorage.commData.byte32ToUint32.get(keyStr.hash()); + } + + function getstrArrayMaxLen() public view returns(uint32 len) { + // _strArrayMaxLen = len; + string memory keyStr = "str_array_max_len="; + return dataStorage.commData.byte32ToUint32.get(keyStr.hash()); + } + + function getAccessControl() public view returns(uint32 status) { + string memory keyStr = DREvidenceStorageConstant.ADMIN_PARAM_CONTRACT_ACCESS; + return dataStorage.commData.byte32ToUint32.get(keyStr.hash()); + } + + // 获取当前某种存证支持的 variableData 字段 + function getSupportVariableDataFields(string memory category) public view returns (string[] memory fileds) { + return dataStorage.getSupportVariableDataFields(category); + } + + // 设置某种存证 variableData 支持的字段,实现逻辑是:先将之前的所有fields都清除,再重新设置,原则上是只能在原有基础上新加字段,减少字段会导致之前保存的字段不能获取到 + function setDataRightSupportVariableDataFields(string memory category, string[] memory fields) public onlyRole(DEFAULT_ADMIN_ROLE) { + // TODO: 可以设置成开关,支持验证或则不验证这些字段 + dataStorage.setDataRightSupportVariableDataFields(category, fields); + } + + // 数据权限管理--- 设置分类 (1.数据资源持有权; 2.数据加工使用权; 3.数据产品经营权。) + function setDataRightCategory(string[] memory fields) public onlyRole(DEFAULT_ADMIN_ROLE) { + // Clean current + bytes32 vbKey = keccak256(bytes("data_right_category:")); + string[] memory variableDataFields = dataStorage.commData.byte32ToStringArrary.get(vbKey); + for (uint32 i = 0; i < variableDataFields.length; i++) { + string memory vbFieldKeyStr = "data_right_category:key="; + bytes32 key = keccak256(bytes(vbFieldKeyStr.concat(fields[i]))); + dataStorage.commData.byte32ToUint32.update(key, 0); + } + // Set + for (uint32 i = 0; i < fields.length; i++) { + string memory vbFieldKeyStr = "data_right_category:key="; + bytes32 key = keccak256(bytes(vbFieldKeyStr.concat(fields[i]))); + dataStorage.commData.byte32ToUint32.update(key, 1); + } + dataStorage.commData.byte32ToStringArrary.update(vbKey, fields); + } + + // 数据权限管理--- 获取分类 + function getDataRightCategory() public view returns(string[] memory fields) { + return dataStorage.getDataRightCategory(); + } +} diff --git a/contracts/DREvidenceReviewController.sol b/contracts/DREvidenceReviewController.sol new file mode 100644 index 0000000000000000000000000000000000000000..7e34c8490caf93b3dd50a6791cdd46ae391c5448 --- /dev/null +++ b/contracts/DREvidenceReviewController.sol @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "./utils/DREvidenceString.sol"; +import "./utils/DREvidenceMap.sol"; +import "./DRAccessController.sol"; +import "./storage/DREvidenceStorage.sol"; +import "./storage/DREvidenceStorageLib.sol"; +import "./storage/DREvidenceStorageDefine.sol"; +import "./storage/DREvidenceStorageConstant.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts/proxy/Proxy.sol"; + +contract DREvidenceReviewController is Initializable, DRAccessController, DREvidenceStorage { + + using DREvidenceMap for DREvidenceMap.DRMappingString; + using DREvidenceMap for DREvidenceMap.DRMappingUint32; + using DREvidenceMap for DREvidenceMap.DRMappingStringArray; + using DREvidenceMap for DREvidenceMap.DRMappingBytes32; + using Strings for uint32; + using DREvidenceString for string; + using DREvidenceString for bytes32; + using DREvidenceString for uint256; + // using DREvidenceString for uint32; + + using DREvidenceStorageLib for DREvidenceStorageDefine.DREStorage; + + + + /******************************************** 内部接口 **************************************************/ + function _hasUserManageRole() internal view returns(bool) { + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + return hasUserManageRole(bid); + } + + function _isDataRightEvidenceOwner(string memory udri) internal view returns(bool) { + bytes32 innerEid = keccak256( + bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri)) + ); + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + + DREvidenceStorageDefine.CommEvidence storage evidence = dataStorage._getCommEvidence(innerEid); + require(evidence.timestamp != 0, "evidence is not exist."); + + string memory bidInEvidence = dataStorage._getCommEvidenceIndefiniteString(innerEid, "bid"); + + return bid.equal(bidInEvidence); + } + + // 检查sender是 存证 owner + function _requireDataRightEvidenceOwnerByUrid(string memory udri) internal view{ + require(_isDataRightEvidenceOwner(udri) == true, "Sender is not evidence owner."); + } + + // 检查sender是否是某个角色 + function _checkUserRole(string memory role) internal view{ + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + DREvidenceStorageDefine.UserInfoV1 storage user = dataStorage._getUseStoragerByBid(bid); + require((user.indefiniteString.get(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(role).hash()).equal("exist")) == true, "User without corresponding role permissions."); + } + + /******************************************** 审查存证 **************************************************/ + /* 4.2 审查存证 */ + /* 4.2.1 新增审查存证 */ + function addReviewEvidence(string memory udri, string memory reviewerBid, string[] memory reviewDataHash, string[] memory metaData, string[] memory variableData) public { + _checkUserRole(DREvidenceStorageConstant.USER_ROLE_REVIEWER); + dataStorage.addReviewEvidence(udri, reviewerBid, reviewDataHash, metaData, variableData); + // (, string memory outerEid) = DREvidenceStorageLib.genEidViaUrdi(udri, _chainName, DREvidenceStorageConstant.EVIDENCE_CATEGORY_REVIEW); + uint32 count = dataStorage.getEvidenceReviewCount(udri); + // _emitNewRightEvidence(outerEid); + _emitNewReviewEvidence(udri, count - 1); + } + + /* 4.2.2 撤回审查存证 */ + function withdrawReviewEvidence(string memory udri, string memory reviewerBid) public { + _checkUserRole(DREvidenceStorageConstant.USER_ROLE_REVIEWER); + dataStorage.withdrawReviewEvidence(udri, reviewerBid); + } + + /* 5.3 查询审查存证信息 */ + /* 5.3.1 查询审查存证数量 */ + function getReviewCount(string calldata udri) public view returns (uint256 reviewCount) { + // TODO: 修改文档那边,方法定义不一致 + return dataStorage.getReviewCount(udri); + } + + /* 5.3.2 查询审查存证信息 */ + function getVerifyEvidence(string calldata udri, uint32 index) public view returns (bool isWithdraw, string memory reviewerBid, string[] memory metaData, string[] memory variableData) { + // TODO: 添加了isWithdraw 需要在文档中也修改 + return dataStorage.getVerifyEvidence(udri, index); + } + + // 获取某个审核机构对某个数据存证的 审核次数 + function getReviewCountOfReviewer(string calldata udri, string calldata reviewerBid) public view returns (uint256 count) { + // TODO: 修改文档那边,方法定义不一致 + return dataStorage.getReviewCountOfReviewer(udri, reviewerBid); + } + + // 获取某个审核机构对某个数据存证的 某次审核信息 + function getVerifyEvidenceOfReviewer(string calldata udri, string calldata reviewerBid, uint32 index) public view returns (bool isWithdraw, string[] memory metaData, string[] memory variableData) { + return dataStorage.getVerifyEvidenceOfReviewer(udri, reviewerBid, index); + } +} diff --git a/contracts/DREvidenceRightController.sol b/contracts/DREvidenceRightController.sol new file mode 100644 index 0000000000000000000000000000000000000000..e0366b84bf757788f3c4b25b7690ce942eb3d427 --- /dev/null +++ b/contracts/DREvidenceRightController.sol @@ -0,0 +1,163 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "./utils/DREvidenceString.sol"; +import "./utils/DREvidenceMap.sol"; +import "./DRAccessController.sol"; +import "./storage/DREvidenceStorage.sol"; +import "./storage/DREvidenceStorageLib.sol"; +import "./storage/DREvidenceStorageDefine.sol"; +import "./storage/DREvidenceStorageConstant.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts/proxy/Proxy.sol"; + +contract DREvidenceRightController is Initializable, DRAccessController, DREvidenceStorage { + + using DREvidenceMap for DREvidenceMap.DRMappingString; + using DREvidenceMap for DREvidenceMap.DRMappingUint32; + using DREvidenceMap for DREvidenceMap.DRMappingStringArray; + using DREvidenceMap for DREvidenceMap.DRMappingBytes32; + using Strings for uint32; + using DREvidenceString for string; + using DREvidenceString for bytes32; + using DREvidenceString for uint256; + // using DREvidenceString for uint32; + + using DREvidenceStorageLib for DREvidenceStorageDefine.DREStorage; + + + + /******************************************** 内部接口 **************************************************/ + function _hasUserManageRole() internal view returns(bool) { + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + return hasUserManageRole(bid); + } + + function _isDataRightEvidenceOwner(string memory udri) internal view returns(bool) { + bytes32 innerEid = keccak256( + bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri)) + ); + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + + DREvidenceStorageDefine.CommEvidence storage evidence = dataStorage._getCommEvidence(innerEid); + require(evidence.timestamp != 0, "evidence is not exist."); + + string memory bidInEvidence = dataStorage._getCommEvidenceIndefiniteString(innerEid, "bid"); + + return bid.equal(bidInEvidence); + } + + // 检查sender是 存证 owner + function _requireDataRightEvidenceOwnerByUrid(string memory udri) internal view{ + require(_isDataRightEvidenceOwner(udri) == true, "Sender is not evidence owner."); + } + + // 检查sender是否是某个角色 + function _checkUserRole(string memory role) internal view{ + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + DREvidenceStorageDefine.UserInfoV1 storage user = dataStorage._getUseStoragerByBid(bid); + require((user.indefiniteString.get(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(role).hash()).equal("exist")) == true, "User without corresponding role permissions."); + } + + /******************************************** 确权存证**************************************************/ + /*4. 存证 */ + /* 4.1.1 新增确权存证 */ + function addDataRightEvidence( + string memory udri, + string memory bid, + string[] memory dataHash, + string[] memory dataRight, + string[] memory metaData, + string[] memory variableData + ) public { + _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); + dataStorage.addDataRightEvidence(udri, bid, dataHash, dataRight, metaData, variableData); + // (, string memory outerEid) = DREvidenceStorageLib.genEidViaUrdi(udri, _chainName, DAEvideDREvidenceStorageConstantnceStorageLib.EVIDENCE_CATEGORY_RIGHT); + // _emitNewEvidence(outerEid); + _emitNewRightEvidence(udri); + } + + /* 4.1.2 追加可变数据存证 */ + function appendVariableData( + string memory udri, + string[] memory variableData + ) public { + _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); + _requireDataRightEvidenceOwnerByUrid(udri); + dataStorage.appendVariableData(udri, variableData); + } + + /* 4.1.3 撤回确权存证 */ + function withdrawDataRightRegister( + string memory udri, + /*string memory dataRightOwnerBid, */ + string[] memory dataRight + ) public { + // TODO: 接口和文档中不一致,需要确认是否修改成代码这边这种方式。 + _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); + require(_isDataRightEvidenceOwner(udri)== true || _hasUserManageRole() == true, "Sender neither the owner nor the authority."); + _requireDataRightEvidenceOwnerByUrid(udri); + dataStorage.withdrawDataRightRegister(udri, dataRight); + } + + /* 4.1.4 新增授权存证 */ + function grantUserDataRight( + string memory udri, + string memory bid, + string[] memory dataRight + ) public { + _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); + _requireDataRightEvidenceOwnerByUrid(udri); + dataStorage.grantUserDataRight(udri, bid, dataRight); + } + + /* 4.1.5 撤回授权存证 */ + function withdrawUserDataRight( + string memory udri, + string memory bid, + string[] memory dataRight + ) public { + _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); + _requireDataRightEvidenceOwnerByUrid(udri); + dataStorage.withdrawUserDataRight(udri, bid, dataRight); + } + + /* 5.2 查询确权存证信息 */ + /* 5.2.1 查询存证数据标识 */ + function getUdriByDatahash(string calldata dataHash) + public + view + returns (string memory udri) + { + return dataStorage.getUdriByDatahash(dataHash); + } + + /* 5.2.2 查询确权存证信息 */ + function getRegisteredData(string memory udri) + public + view + returns ( + string memory dataHashSM, + string memory dataHashSHA, + string[] memory dataRight, + string[] memory metaData, + string[] memory variableData, + bool isWithdraw + ) + { + return dataStorage.getRegisteredData(udri); + } + + /* 5.2.3 查询授权信息 */ + function getUserDataRight(string memory udri, string memory bid) + public + view + returns (string[] memory dataRight) + { + return dataStorage.getUserDataRight(udri, bid); + } +} diff --git a/contracts/DREvidenceUserController.sol b/contracts/DREvidenceUserController.sol new file mode 100644 index 0000000000000000000000000000000000000000..31cf3783746f4a853a539f57da2b29ddc5cc4fb3 --- /dev/null +++ b/contracts/DREvidenceUserController.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "./utils/DREvidenceString.sol"; +import "./utils/DREvidenceMap.sol"; +import "./DRAccessController.sol"; +import "./storage/DREvidenceStorage.sol"; +import "./storage/DREvidenceStorageLib.sol"; +import "./storage/DREvidenceStorageDefine.sol"; +import "./storage/DREvidenceStorageConstant.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts/proxy/Proxy.sol"; + +contract DREvidenceUserController is Initializable, DRAccessController, DREvidenceStorage { + + using DREvidenceMap for DREvidenceMap.DRMappingString; + using DREvidenceMap for DREvidenceMap.DRMappingUint32; + using DREvidenceMap for DREvidenceMap.DRMappingStringArray; + using DREvidenceMap for DREvidenceMap.DRMappingBytes32; + using Strings for uint32; + using DREvidenceString for string; + using DREvidenceString for bytes32; + using DREvidenceString for uint256; + // using DREvidenceString for uint32; + + using DREvidenceStorageLib for DREvidenceStorageDefine.DREStorage; + + + /******************************************** 内部接口 **************************************************/ + function _hasUserManageRole() internal view returns(bool) { + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + return hasUserManageRole(bid); + } + + function _isDataRightEvidenceOwner(string memory udri) internal view returns(bool) { + bytes32 innerEid = keccak256( + bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri)) + ); + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + + DREvidenceStorageDefine.CommEvidence storage evidence = dataStorage._getCommEvidence(innerEid); + require(evidence.timestamp != 0, "evidence is not exist."); + + string memory bidInEvidence = dataStorage._getCommEvidenceIndefiniteString(innerEid, "bid"); + + return bid.equal(bidInEvidence); + } + + // 检查sender是 存证 owner + function _requireDataRightEvidenceOwnerByUrid(string memory udri) internal view{ + require(_isDataRightEvidenceOwner(udri) == true, "Sender is not evidence owner."); + } + + // 检查sender是否是某个角色 + function _checkUserRole(string memory role) internal view{ + (bool isExist, string memory bid) = dataStorage._getUserBidByAccount(msg.sender); + require(isExist == true, "Sender is not registered."); + DREvidenceStorageDefine.UserInfoV1 storage user = dataStorage._getUseStoragerByBid(bid); + require((user.indefiniteString.get(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(role).hash()).equal("exist")) == true, "User without corresponding role permissions."); + } + + /******************************************** 用户 **************************************************/ + function queryUserRole() public view returns (string[] memory) { + return DREvidenceStorageLib.queryUserRole(); + } + + // 3.1 配置管理权限 + /* + 3.1.1 配置管理权限 + - 功能定位 + 由运营方(合约所有者)在链上给某个机构帐号地址赋予用户管理权限。 + - 调用限制 + 该接口只有运营方(合约所有者)能调用。 + + DRAccessController 中已经定义 + */ + // function grantUserManagePermission(string memory bid, address account) public { + // } + + /* + 3.1.2 回收管理权限 + 由运营方(合约所有者)在链上收回某个机构帐号地址的用户管理权限。 + - 调用限制 + 该接口只有运营方(合约所有者)能调用。 + + DRAccessController 中已经定义 + */ + // function revokeUserManagePermission(string memory bid) public { + // } + + /* + 3.2 用户角色管理 + 3.2.1 添加用户 + 由用户管理员在链上添加用户信息,同时可以绑定用户角色。 + */ + function addUser(string memory bid, string memory usci, string memory name,address account, string[] memory roles) public onlyRole(USERMANAGE_ROLE) { + dataStorage.addUser(bid, usci, name, account, roles); + _emitNewUser(bid, usci); + } + + /* + 3.2.2 查询用户 + 根据用户bid查询当前用户信息及其绑定的角色。 + */ + function getUserRoles(string memory bid) public view returns(string memory usci, string memory name, string[] memory roles) { + return dataStorage.getUserRoles(bid); + } + + /* + 3.2.3 添加用户角色 + 为用户添加新的角色。 + */ + function grantUserRoles(string memory bid, string[] memory roles) public onlyRole(USERMANAGE_ROLE) { + dataStorage.grantUserRoles(bid, roles); + _emitUserRoleChanged(bid); + } + + /* + 3.2.4 回收用户角色 + 由用户管理员回收用户的一或多个角色。 + */ + function revokeUserRoles(string memory bid, string[] memory roles) public onlyRole(USERMANAGE_ROLE) { + dataStorage.revokeUserRoles(bid, roles); + _emitUserRoleChanged(bid); + } + + /* 4.3 登记存证(二阶段)*/ + + /* 5. 查询相关接口 */ + /* 5.1 查询用户数据信息 */ + /* 5.1.1 查询用户数据数量 */ + function getDataCount(string calldata bid) public view returns (uint256 dataCount) { + return dataStorage.getDataCount(bid); + } + + /* 5.1.2 查询用户数据列表 */ + function getDataList(string memory bid, uint256 start, uint256 count) public view returns (string[] memory udriArray) { + return dataStorage.getDataList(bid, start, count); + } + + /* 查询用户审核存证数目 */ + function getUserReviewCount(string calldata bid) public view returns (uint256 dataCount) { + return dataStorage.getUserReviewCount(bid); + } + + /* 查询用户审核存证 数据Hash 列表 */ + function getUserReviewList(string memory bid, uint256 start, uint256 count) public view returns (string[] memory hashArray) { + return dataStorage.getUserReviewList(bid, start, count); + } +} diff --git a/contracts/interfaces/IDREvidence.sol b/contracts/interfaces/IDREvidence.sol new file mode 100644 index 0000000000000000000000000000000000000000..980fa940769c423f55a31834f0af22157588234c --- /dev/null +++ b/contracts/interfaces/IDREvidence.sol @@ -0,0 +1,520 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +interface IDREvidence { + /******************************************** Admin **************************************************/ + /* + * 描述:设置链上数据存证的参数 - 名字 + * 参数: + * - name:链上数据存证的名称 + */ + function setChainName(string memory name) external; + + /* + * 描述:设置参数 - 文本最大长度 + * 参数: + * - len:文本最大长度 + */ + function setTextMaxLen(uint32 len) external; + + /* + * 描述:设置参数 - 字符串数组最大长度 + * 参数: + * - len:字符串数组最大长度 + */ + function setstrArrayMaxLen(uint32 len) external; + + /* + * 描述:设置合约可访问 + */ + function enableAccessControl() external; + + /* + 描述:设置合约不可访问 + */ + function disableAccessControl() external; + + /* + * 描述:获取参数 - 名字 + * 返回值: + * - name:链上数据存证的名称 + */ + function getChainName() external view returns (string memory name); + + /* + * 描述:获取参数 - 文本最大长度 + * 返回值: + * - len: 文本最大长度 + */ + function getTextMaxLen() external view returns (uint32 len); + + /* + * 描述:获取参数 - 字符串数组最大长度 + * 返回值: + * - len: 字符串数组最大长度 + */ + function getstrArrayMaxLen() external view returns (uint32 len); + + /* + * 描述:获取参数 - 是否可访问 + * 返回值: + * - status: 1: 可访问; 0: 不可访问 + */ + function getAccessControl() external view returns (uint32 status); + + /* + * 描述:获取当前某种存证支持的 variableData 字段 + * 参数: + * - category:存证类型 + * 返回值: + * - fileds:当前某种存证支持的 variableData 字段 + */ + function getSupportVariableDataFields( + string memory category + ) external view returns (string[] memory fileds); + + /* + * 描述:设置某种存证 variableData 支持的字段,实现逻辑是:先将之前的所有fields都清除,再重新设置, + * 原则上是只能在原有基础上新加字段,减少字段会导致之前保存的字段不能获取到。 + * 参数: + * - category:存证类型 + * - fields:当前某种存证支持的 variableData 字段 + */ + function setDataRightSupportVariableDataFields( + string memory category, + string[] memory fields + ) external; + + /* + * 描述:设置数据权限分类 (目前有:1.数据资源持有权; 2.数据加工使用权; 3.数据产品经营权。) + * 参数: + * - fields:数据权限类型 (比如["hold", "process", "operate"]) + */ + function setDataRightCategory(string[] memory fields) external; + + /* + * 描述:获取数据权限分类 + * 返回值: + * - fields:数据权限分类 + */ + function getDataRightCategory() + external + view + returns (string[] memory fields); + + /******************************************** 用户 **************************************************/ + function queryUserRole() external view returns (string[] memory); + + /* 3.1 配置管理权限 */ + /* 3.1.1 配置管理权限 */ + /* + * 描述: + * - 功能定位 + * 由运营方(合约所有者)在链上给某个机构帐号地址赋予用户管理权限。 + * - 调用限制 + * 该接口只有运营方(合约所有者)能调用。 + * 参数: + * - bid:链上身份ID + * - account:机构帐号地址 + */ + function grantUserManagePermission( + string memory bid, + address account + ) external; + + /* 3.1.2 回收管理权限 */ + /* + * 描述: + * - 功能定位 + * 由运营方(合约所有者)在链上收回某个机构帐号地址的用户管理权限。 + * - 调用限制 + * 该接口只有运营方(合约所有者)能调用。 + * 参数: + * - bid:链上身份ID + */ + function revokeUserManagePermission(string memory bid) external; + + /* + * 描述:检查用户是否有管理权限 + * 参数: + * - bid:链上身份ID + * 返回值: + * - status:true or false + */ + function hasUserManageRole(string memory bid) external view returns (bool); + + /* 3.2 用户角色管理 */ + /* 3.2.1 添加用户 */ + /* + * 描述: + * - 功能定位 由用户管理员在链上添加用户信息,同时可以绑定用户角色。 + * 参数: + * - bid:链上身份ID + * - usci:统一社会信用编号 + * - name:用户名称 + * - account:用户帐号地址 + * - roles:用户角色 + * 返回值: + * 无 + */ + function addUser( + string memory bid, + string memory usci, + string memory name, + address account, + string[] memory roles + ) external; + + /* 3.2.2 查询用户 */ + /* + * 描述: + * - 功能定位 根据用户bid查询当前用户信息及其绑定的角色。 + * 参数: + * - bid:链上身份ID + * - usci:统一社会信用编号 + * 返回值: + * - usci:统一社会信用编号 + * - name:用户名称 + * - roles:用户角色 + */ + function getUserRoles( + string memory bid + ) + external + view + returns (string memory usci, string memory name, string[] memory roles); + + /* 3.2.3 添加用户角色 */ + /* + * 描述: + * - 功能定位 为用户添加新的角色。 + * 参数: + * - bid:链上身份ID + * - usci:统一社会信用编号 + * - roles:用户角色 + * 返回值: + * 无 + */ + function grantUserRoles(string memory bid, string[] memory roles) external; + + /* 3.2.4 回收用户角色 */ + /* + * 描述: + * - 功能定位 由用户管理员回收用户的一或多个角色。 + * 参数: + * - bid:链上身份ID + * - roles:用户角色 + * 返回值: + * 无 + */ + function revokeUserRoles(string memory bid, string[] memory roles) external; + + /* 4.3 登记存证(二阶段)*/ + + /* 5. 查询相关接口 */ + /* 5.1 查询用户数据信息 */ + /* 5.1.1 查询用户数据数量 */ + /* + * 描述: + * - 功能定位 查询某个数据主体名下确权存证数量。 + * 参数: + * - bid:链上身份ID + * 返回值: + * - dataCount:用户确权存证数量。 + */ + function getDataCount( + string calldata bid + ) external view returns (uint256 dataCount); + + /* 5.1.2 查询用户数据列表 */ + /* + * 描述: + * - 功能定位 查询某个数据主体名下存证数据的列表,返回存证数据相应的udri。 + * 参数: + * - bid:链上身份ID + * - start:起始索引 + * - count:查询数量 + * 返回值: + * - udriArray: 统一数据资源标识数组 + */ + function getDataList( + string memory bid, + uint256 start, + uint256 count + ) external view returns (string[] memory udriArray); + + /* + * 描述: + * - 功能定位 查询某个数据主体名下审核存证数量。 + * 参数: + * - bid:链上身份ID + * 返回值: + * - dataCount:用户审核存证数量 + */ + // function getUserReviewCount(string calldata bid) external view returns (uint256 dataCount); + + /* 查询用户审核存证列表 */ + /* + * 描述: + * - 功能定位 查询某个数据主体名下审核存证数据的列表,返回审核存证数据相应的udri。 + * 参数: + * - bid:链上身份ID + * - start:起始索引 + * - count:查询数量 + * 返回值: + * - udriArray: 统一数据资源标识数组 + */ + // function getUserReviewList(string memory bid, uint256 start, uint256 count) external view returns (string[] memory udriArray); + + /******************************************** 审查存证 **************************************************/ + /* 4.2 审查存证 */ + /* 4.2.1 新增审查存证 */ + /* + * 描述: + * - 功能定位 第三方法律服务机构对数据资源或数据产品进行合规性审查,出具审查报告,并将审查结果及审查文件调用该合约接口上链存证。 + * 可以根据需要新增多次审查存证,如面向不同的数据交易机构要求进行多次审查的场景。 + * 参数: + * - udri:统一数据资源标识 + * - reviewerBid:审查机构链上身份ID + * - reviewDataHash:审查数据哈希 + * - metaData:元数据 + * - variableData:可变数据 + */ + function addReviewEvidence( + string memory udri, + string memory reviewerBid, + string[] memory reviewDataHash, + string[] memory metaData, + string[] memory variableData + ) external; + + /* 4.2.2 撤回审查存证 */ + /* + * 描述: + * - 功能定位 第三方法律服务机构撤回自己的审查存证,如果有多次审查存证记录,一并撤回,不支持对单一审查存证记录撤回。 + * 参数: + * - udri:统一数据资源标识 + * - reviewerBid:审查机构链上身份ID + */ + function withdrawReviewEvidence( + string memory udri, + string memory reviewerBid + ) external; + + /* 5.3 查询审查存证信息 */ + /* 5.3.1 查询审查存证数量 */ + /* + * 描述: + * - 功能定位 查询审查存证数量。 + * 参数: + * - udri:统一数据资源标识 + * 返回值: + * - reviewCount:审查存证数量 + */ + function getReviewCount( + string calldata udri + ) external view returns (uint256 reviewCount); + + /* 5.3.2 查询审查存证信息 */ + /* + * 描述: + * - 功能定位 根据udri查询该数据资源的审查存证信息。 + * 参数: + * - udri:统一数据资源标识 + * - index:审查存证索引 + * 返回值: + * - isWithdraw: 是否已经撤销 + * - reviewerBid:审查机构链上身份ID + * - metaData:元数据 + * - variableData:可变数据 + */ + function getVerifyEvidence( + string calldata udri, + uint32 index + ) + external + view + returns ( + bool isWithdraw, + string memory reviewerBid, + string[] memory metaData, + string[] memory variableData + ); + + /* + * 描述: + * - 功能定位 获取某个审核机构对某个数据存证的 审核次数。 + * 参数: + * - udri:统一数据资源标识 + * - reviewerBid:审查机构链上身份ID + * 返回值: + * - count:审核次数 + */ + function getReviewCountOfReviewer( + string calldata udri, + string calldata reviewerBid + ) external view returns (uint256 count); + + /* + * 描述: + * - 功能定位 获取某个审核机构对某个数据存证的 某次审核信息。 + * 参数: + * - udri:统一数据资源标识 + * - reviewerBid:审查机构链上身份ID + * - index:审核存证索引 + * 返回值: + * - isWithdraw: 是否已经撤销 + * - metaData:元数据 + * - variableData:可变数据 + */ + function getVerifyEvidenceOfReviewer( + string calldata udri, + string calldata reviewerBid, + uint32 index + ) + external + view + returns ( + bool isWithdraw, + string[] memory metaData, + string[] memory variableData + ); + + /******************************************** 确权存证**************************************************/ + /*4. 存证 */ + /* 4.1.1 新增确权存证 */ + /* + * 描述: + * - 功能定位 新增确权存证。 + * 参数: + * - udri:统一数据资源标识 + * - bid: 链上身份ID + * - dataHash:数据哈希 + * - dataRight:数据权限 + * - metaData:元数据 + * - variableData:可变数据 + */ + function addDataRightEvidence( + string memory udri, + string memory bid, + string[] memory dataHash, + string[] memory dataRight, + string[] memory metaData, + string[] memory variableData + ) external; + + /* 4.1.2 追加可变数据存证 */ + /* + * 描述: + * - 功能定位 追加存证数据的扩展信息, 追加的扩展信息作为新的记录存在,与原扩展信息同时作为数据的附属数据。 + * 参数: + * - udri:统一数据资源标识 + * - variableData:可变数据 + */ + function appendVariableData( + string memory udri, + string[] memory variableData + ) external; + + /* 4.1.3 撤回确权存证 */ + /* + * 描述: + * - 功能定位 数据的权益主体撤回自己的权益存证。 + * 参数: + * - udri:统一数据资源标识 + * - bid:链上身份ID + */ + function withdrawDataRightRegister( + string memory udri, + /*string memory dataRightOwnerBid, */ + string[] memory dataRight + ) external; + + /* 4.1.4 新增授权存证 */ + /* + * 描述: + * - 功能定位 拥有数据的“数据资源持有权”用户向其他用户授予该数据资源权利。 + * 参数: + * - udri:统一数据资源标识 + * - bid:链上身份ID + * - dataRight:数据权限 + */ + function grantUserDataRight( + string memory udri, + string memory bid, + string[] memory dataRight + ) external; + + /* 4.1.5 撤回授权存证 */ + /* + * 描述: + * - 功能定位 拥有数据的“数据资源持有权”用户撤回向其他用户授予的该数据资源权利。 + * 参数: + * - udri:统一数据资源标识 + * - bid:链上身份ID + * - dataRight:数据权限 + */ + function withdrawUserDataRight( + string memory udri, + string memory bid, + string[] memory dataRight + ) external; + + /* 5.2 查询确权存证信息 */ + /* 5.2.1 查询存证数据标识 */ + /* + * 描述: + * - 功能定位 根据数据块hash,查询存证数据标识。 + * 参数: + * - dataHash:数据哈希 + * 返回值: + * - udri:统一数据资源标识 + */ + function getUdriByDatahash( + string calldata dataHash + ) external view returns (string memory udri); + + /* 5.2.2 查询确权存证信息 */ + /* + * 描述: + * - 功能定位 根据udri查询该数据资源的确权存证信息。 + * 参数: + * - udri:统一数据资源标识 + * 返回值: + * - bid:链上身份ID + * - dataHashSM:数据Hash + * - dataHashSHA:数据Hash + * - dataRight:数据权限 + * - metaData:元数据 + * - variableData:可变数据 + * - isWithdraw:是否已经撤销 + */ + function getRegisteredData( + string memory udri + ) + external + view + returns ( + string memory dataHashSM, + string memory dataHashSHA, + string[] memory dataRight, + string[] memory metaData, + string[] memory variableData, + bool isWithdraw + ); + + /* 5.2.3 查询授权信息 */ + /* + * 描述: + * - 功能定位 获取某个用户对某个“数据资源”的权利。 + * 参数: + * - udri:统一数据资源标识 + * - bid:链上身份ID + * 返回值: + * - dataRight:数据权限 + */ + function getUserDataRight( + string memory udri, + string memory bid + ) external view returns (string[] memory dataRight); +} diff --git a/contracts/storage/DAEvidenceStorage.sol b/contracts/storage/DREvidenceStorage.sol similarity index 80% rename from contracts/storage/DAEvidenceStorage.sol rename to contracts/storage/DREvidenceStorage.sol index 8ae99a98eea96be23201e44199055848ea0b72cd..c16716f5588487c67c38030d96dbc5268ed7ef91 100644 --- a/contracts/storage/DAEvidenceStorage.sol +++ b/contracts/storage/DREvidenceStorage.sol @@ -2,13 +2,14 @@ pragma solidity ^0.8.0; -import "./DAEvidenceStorageLib.sol"; -import "../utils/DAEvidenceMap.sol"; +import "./DREvidenceStorageLib.sol"; +import "../utils/DREvidenceMap.sol"; +import "./DREvidenceStorageDefine.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -contract DAEvidenceStorage is Initializable { +contract DREvidenceStorage is Initializable { - DAEvidenceStorageLib.DAEStorage internal dataStorage; + DREvidenceStorageDefine.DREStorage internal dataStorage; event UserCreated(address indexed sender, string indexed bid, string indexed usci); event UserRoleChanged(address indexed sender, string indexed bid); diff --git a/contracts/storage/DREvidenceStorageConstant.sol b/contracts/storage/DREvidenceStorageConstant.sol new file mode 100644 index 0000000000000000000000000000000000000000..fb169d54bd4ece1f384cd53eb31e00fdfa98c599 --- /dev/null +++ b/contracts/storage/DREvidenceStorageConstant.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +library DREvidenceStorageConstant { + // Admin 参数 + string public constant ADMIN_PARAM_CONTRACT_ACCESS = "control_enabled="; + + // 用户状态 + uint32 public constant USER_STATUS_ACTIVE = 100; + uint32 public constant USER_STATUS_DISABLED = 500; + + string public constant USER_ROLE_PREFIX = "user_role:"; + + // 用户角色 + string public constant USER_ROLE_DATA_HOLDER = "data_holder"; + string public constant USER_ROLE_REVIEWER = "reviewer"; + string public constant USER_ROLE_REGISTRY = "registry"; + string public constant USER_ROLE_ELSE = "platform"; + + // 用户数据 + string public constant USER_REVIEW_COUNT = "user:review:eid:count"; // 该KEY用于查询用户审核存证数目 + + // 存证类型名, 确权存证、审核存证、登记存证 等 + string public constant EVIDENCE_CATEGORY_RIGHT = "right"; + string public constant EVIDENCE_CATEGORY_REVIEW = "review"; + + // 存证状态 + string public constant EVIDENCE_STATUS_ACTIVE = "active"; + string public constant EVIDENCE_STATUS_DISABLED = "disabled"; + + string public constant EVIDENCE_CONTRACT_VERSION_V1 = "V1"; + + string public constant EVIDENCE_UDRI = "udri"; + string public constant EVIDENCE_BID = "bid"; + + // 不同类型存证eid的前缀 + string public constant EVIDENCE_ID_PREFIX_NEW = "eid:new:";// 确权存证 eid 前缀 + string public constant EVIDENCE_ID_PREFIX_REVIEW = "eid:review:";// 审核存证 eid 前缀 + + string public constant EVIDENCE_DATA_REVIEW_COUNT = "review_count="; // 某个确权存证数据,所有审核数据总数 + string public constant EVIDENCE_DATA_USER_REVIEW_COUNT = ":review_count="; // 某个机构对某个确权存证数据,上传的审核次数 `${reviewer_bid}:review_count=` + string public constant EVIDENCE_DATA_USER_REVIEW_INDEX = ":review:index:"; // 该KEY用于查询某个机构对某个确权存证数据第N个审核存证, `${reviewer_bid}:review:index:${index}` + string public constant EVIDENCE_DATA_REVIEW_INDEX = "review:index:"; // 该KEY用于查询某个确权存证数据第N个审核存证, `review:index:${index}` + + // 数据权限前缀,用于构建一个key 映射 某个用户对数据某个操作权限 + string public constant EVIDENCE_DATA_RIGHT_PREFIX = "data_right:";// 数据权限前缀,`data_right:${bid}${right_name}` + + // 用于用户数据 + string public constant EVIDENCE_USER_ = "e:index:"; // 该KEY用于查询用户第N个存证 `e:index:${index}` + + // 用于公共数据 + string public constant EVIDENCE_RIGHT_EID_WITH_INDEX = "e_right:index:"; // 该KEY用于查询用户第N个确权存证 `e_right:index:${index}` + string public constant EVIDENCE_REVIEW_EID_WITH_INDEX = "e_review:index:"; // 该KEY用于查询用户第N个审核存证 `e_review:index:${index}` + string public constant EVIDENCE_RIGHT_VARIABLE_DATA_KEY = "e_right:variable_data";// 该KEY勇于查询 确权存证中 可变数据 允许的字段 + string public constant EVIDENCE_REVIEW_VARIABLE_DATA_KEY = "e_review:variable_data";// 该KEY勇于查询 确权存证中 可变数据 允许的字段 + + string public constant EVIDENCE_RIGHT_VARIABLE_DATA_MIDDLE = "variable_data:key=";// `${CATEGORY}:variable_data:key=${key}` + +} \ No newline at end of file diff --git a/contracts/storage/DREvidenceStorageDefine.sol b/contracts/storage/DREvidenceStorageDefine.sol new file mode 100644 index 0000000000000000000000000000000000000000..68dc625224e36ce483c4ab6b2b054d230fdae406 --- /dev/null +++ b/contracts/storage/DREvidenceStorageDefine.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../utils/DREvidenceMap.sol"; +import "../utils/DREvidenceString.sol"; + +library DREvidenceStorageDefine { + struct UserInfoV1 { + string bid; // 链上身份标识 + string usci; + string name; + uint256 evidenceCount; //确权存证总数 + address account; + DREvidenceMap.DRMappingStringArray indefiniteStringArray; + DREvidenceMap.DRMappingString indefiniteString; + DREvidenceMap.DRMappingUint32 indefiniteUint32; + DREvidenceMap.DRMappingBytes32 indefiniteBytes32; + DREvidenceMap.DRMappingUint256 indefiniteUint256; + mapping(bytes32 => uint32) role; // 0: 无; USER_STATUS_ACTIVE:正常; USER_STATUS_DISABLED:注销 + + uint256 timestamp; + } + + struct CommEvidence { + string category; + DREvidenceMap.DRMappingStringArray indefiniteStringArray; + DREvidenceMap.DRMappingString indefiniteString; + DREvidenceMap.DRMappingUint32 indefiniteUint32; + DREvidenceMap.DRMappingBytes32 indefiniteBytes32; + DREvidenceMap.DRMappingUint256 indefiniteUint256; + + string[] metaData; + DREvidenceMap.DRMappingString variableDataMap; + + uint256 timestamp; + } + + struct CommData { + DREvidenceMap.DRMappingStringArray byte32ToStringArrary; + DREvidenceMap.DRMappingString byte32ToString; + DREvidenceMap.DRMappingUint32 byte32ToUint32; + DREvidenceMap.DRMappingBytes32 byte32ToBytes32; + DREvidenceMap.DRMappingAddress byte32ToAddress; + DREvidenceMap.DRMappingUint256 byte32ToUint256; + } + + struct DREStorage { + mapping(address => string) _userAddressToBid; + + mapping(string => UserInfoV1) _usersV1; // usci => UserInfoV1 + mapping(bytes32 => CommEvidence) _commEvidences; // innerEid = CommEvidence + + mapping(bytes32 => bytes32) _outerEidToInnerEid; // Hash(outerEid) = innerEid + + CommData commData; // 存放合约管理相关的数据信息 + } +} \ No newline at end of file diff --git a/contracts/storage/DAEvidenceStorageLib.sol b/contracts/storage/DREvidenceStorageLib.sol similarity index 55% rename from contracts/storage/DAEvidenceStorageLib.sol rename to contracts/storage/DREvidenceStorageLib.sol index 09e2c44dc7ef41e6c19807af85a81d1ec0fd47a4..98599ea44212d154b3d1533fa80a1845e9b183c6 100644 --- a/contracts/storage/DAEvidenceStorageLib.sol +++ b/contracts/storage/DREvidenceStorageLib.sol @@ -4,118 +4,29 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "../utils/DAEvidenceMap.sol"; -import "../utils/DAEvidenceString.sol"; +import "../utils/DREvidenceMap.sol"; +import "../utils/DREvidenceString.sol"; +import "./DREvidenceStorageDefine.sol"; +import "./DREvidenceStorageConstant.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; -library DAEvidenceStorageLib { +library DREvidenceStorageLib { using Strings for uint32; - using DAEvidenceString for string; - using DAEvidenceString for bytes32; - using DAEvidenceString for uint256; + using DREvidenceString for string; + using DREvidenceString for bytes32; + using DREvidenceString for uint256; - uint32 public constant USER_STATUS_ACTIVE = 100; - uint32 public constant USER_STATUS_DISABLED = 500; - /******************************************** 常量 **************************************************/ - string public constant USER_ROLE_PREFIX = "user_role:"; + using DREvidenceMap for DREvidenceMap.DRMappingString; + using DREvidenceMap for DREvidenceMap.DRMappingUint32; + using DREvidenceMap for DREvidenceMap.DRMappingStringArray; + using DREvidenceMap for DREvidenceMap.DRMappingBytes32; + using DREvidenceMap for DREvidenceMap.DRMappingUint256; - // 用户角色 - string public constant USER_ROLE_DATA_HOLDER = "data_holder"; - string public constant USER_ROLE_REVIEWER = "reviewer"; - string public constant USER_ROLE_REGISTRY = "registry"; - string public constant USER_ROLE_ELSE = "platform"; - - // 存证类型名, 确权存证、审核存证、登记存证 等 - string public constant EVIDENCE_CATEGORY_RIGHT = "right"; - string public constant EVIDENCE_CATEGORY_REVIEW = "review"; - - // 存证状态 - string public constant EVIDENCE_STATUS_ACTIVE = "active"; - string public constant EVIDENCE_STATUS_DISABLED = "disabled"; - - string public constant EVIDENCE_CONTRACT_VERSION_V1 = "V1"; - - string public constant EVIDENCE_UDRI = "udri"; - string public constant EVIDENCE_BID = "bid"; - - // 不同类型存证eid的前缀 - string public constant EVIDENCE_ID_PREFIX_NEW = "eid:new:";// 确权存证 eid 前缀 - string public constant EVIDENCE_ID_PREFIX_REVIEW = "eid:review:";// 审核存证 eid 前缀 - - string public constant EVIDENCE_DATA_REVIEW_COUNT = "review_count="; // 某个确权存证数据,所有审核数据总数 - string public constant EVIDENCE_DATA_USER_REVIEW_COUNT = ":review_count="; // 某个机构对某个确权存证数据,上传的审核次数 `${reviewer_bid}:review_count=` - string public constant EVIDENCE_DATA_USER_REVIEW_INDEX = ":review:index:"; // 该KEY用于查询某个机构对某个确权存证数据第N个审核存证, `${reviewer_bid}:review:index:${index}` - string public constant EVIDENCE_DATA_REVIEW_INDEX = "review:index:"; // 该KEY用于查询某个确权存证数据第N个审核存证, `review:index:${index}` - - // 数据权限前缀,用于构建一个key 映射 某个用户对数据某个操作权限 - string public constant EVIDENCE_DATA_RIGHT_PREFIX = "data_right:";// 数据权限前缀,`data_right:${bid}${right_name}` - - // 用于公共数据 - string public constant EVIDENCE_RIGHT_EID_WITH_INDEX = "e_right:index:"; // 该KEY用于查询用户第N个确权存证 `e_right:index:${index}` - string public constant EVIDENCE_RIGHT_VARIABLE_DATA_KEY = "e_right:variable_data";// 该KEY勇于查询 确权存证中 可变数据 允许的字段 - string public constant EVIDENCE_REVIEW_VARIABLE_DATA_KEY = "e_review:variable_data";// 该KEY勇于查询 确权存证中 可变数据 允许的字段 - - string public constant EVIDENCE_RIGHT_VARIABLE_DATA_MIDDLE = "variable_data:key=";// `${CATEGORY}:variable_data:key=${key}` - - using DAEvidenceMap for DAEvidenceMap.DAMappingString; - using DAEvidenceMap for DAEvidenceMap.DAMappingUint32; - using DAEvidenceMap for DAEvidenceMap.DAMappingStringArray; - using DAEvidenceMap for DAEvidenceMap.DAMappingBytes32; - - using DAEvidenceString for string; - using DAEvidenceString for bytes32; - using DAEvidenceString for uint256; - - struct UserInfoV1 { - string bid; // 链上身份标识 - string usci; - string name; - uint256 evidenceCount; - address account; - DAEvidenceMap.DAMappingStringArray indefiniteStringArray; - DAEvidenceMap.DAMappingString indefiniteString; - DAEvidenceMap.DAMappingUint32 indefiniteUint32; - DAEvidenceMap.DAMappingBytes32 indefiniteBytes32; - mapping(bytes32 => uint32) role; // 0: 无; USER_STATUS_ACTIVE:正常; USER_STATUS_DISABLED:注销 - - uint256 timestamp; - } - - struct CommEvidence { - string category; - DAEvidenceMap.DAMappingStringArray indefiniteStringArray; - DAEvidenceMap.DAMappingString indefiniteString; - DAEvidenceMap.DAMappingUint32 indefiniteUint32; - DAEvidenceMap.DAMappingBytes32 indefiniteBytes32; - - string[] metaData; - DAEvidenceMap.DAMappingString variableDataMap; - - uint256 timestamp; - } - - struct CommData { - DAEvidenceMap.DAMappingStringArray byte32ToStringArrary; - DAEvidenceMap.DAMappingString byte32ToString; - DAEvidenceMap.DAMappingUint32 byte32ToUint32; - DAEvidenceMap.DAMappingBytes32 byte32ToBytes32; - } - - struct DAEStorage { - mapping(address => string) _userAddressToBid; - - mapping(string => UserInfoV1) _usersV1; // usci => UserInfoV1 - mapping(bytes32 => CommEvidence) _commEvidences; // innerEid = CommEvidence - - mapping(bytes32 => bytes32) _outerEidToInnerEid; // Hash(outerEid) = innerEid - - CommData commData; // 存放合约管理相关的数据信息 - } function genEidViaUrdi(string memory udri, string memory method, string memory category) internal pure returns (bytes32 innerEid, string memory outerEidString) { innerEid = keccak256(bytes(category.concat(udri))); - outerEidString = DAEvidenceStorageLib.EVIDENCE_ID_PREFIX_NEW.concat(method).concat( + outerEidString = DREvidenceStorageConstant.EVIDENCE_ID_PREFIX_NEW.concat(method).concat( innerEid.toHexStringWithoutPrefix() ); } @@ -128,77 +39,77 @@ library DAEvidenceStorageLib { _bindOuterInnerEid _emitEvidence */ - function _storeCommEvidence(DAEStorage storage sto, bytes32 innerEid, string memory category, string[] memory metaData) internal { + function _storeCommEvidence(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory category, string[] memory metaData) internal { require(sto._commEvidences[innerEid].timestamp == 0, "EvidenceStorage: udri already exists"); sto._commEvidences[innerEid].category = category; sto._commEvidences[innerEid].metaData = metaData; sto._commEvidences[innerEid].timestamp = block.timestamp; } - function _setCommEvidenceIndefiniteStringArray(DAEStorage storage sto, bytes32 innerEid, string memory key, string[] memory value) internal { + function _setCommEvidenceIndefiniteStringArray(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key, string[] memory value) internal { sto._commEvidences[innerEid].indefiniteStringArray.update(keccak256(bytes(key)), value); } - function _setCommEvidenceIndefiniteString(DAEStorage storage sto, bytes32 innerEid, string memory key, string memory value) internal { + function _setCommEvidenceIndefiniteString(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key, string memory value) internal { sto._commEvidences[innerEid].indefiniteString.update(keccak256(bytes(key)), value); } - function _setCommEvidencevariableData(DAEStorage storage sto, bytes32 innerEid, string memory key, string memory value) internal { + function _setCommEvidencevariableData(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key, string memory value) internal { sto._commEvidences[innerEid].variableDataMap.update(keccak256(bytes(key)), value); } - function _setCommEvidenceIndefiniteUint32(DAEStorage storage sto, bytes32 innerEid, string memory key, uint32 value) internal { + function _setCommEvidenceIndefiniteUint32(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key, uint32 value) internal { sto._commEvidences[innerEid].indefiniteUint32.update(keccak256(bytes(key)), value); } - function _setCommEvidenceIndefiniteBytes32(DAEStorage storage sto, bytes32 innerEid, string memory key, bytes32 value) internal { + function _setCommEvidenceIndefiniteBytes32(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key, bytes32 value) internal { sto._commEvidences[innerEid].indefiniteBytes32.update(keccak256(bytes(key)), value); } - // function _emitNewEvidence(DAEStorage storage sto, string memory outerEid) internal { + // function _emitNewEvidence(DREvidenceStorageDefine.DREStorage storage sto, string memory outerEid) internal { // emit EvidenceCommStored(msg.sender, outerEid); // } - function _evidenceIsExist(DAEStorage storage sto, bytes32 innerEid) internal view returns (bool) { - CommEvidence storage evidence = sto._commEvidences[innerEid]; + function _evidenceIsExist(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid) internal view returns (bool) { + DREvidenceStorageDefine.CommEvidence storage evidence = sto._commEvidences[innerEid]; return (evidence.timestamp != 0); } - function _getCommEvidenceById(DAEStorage storage sto, bytes32 innerEid) internal view returns (bool, uint256 timestamp, string memory category, string[] memory metaData) { - CommEvidence storage evidence = sto._commEvidences[innerEid]; + function _getCommEvidenceById(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid) internal view returns (bool, uint256 timestamp, string memory category, string[] memory metaData) { + DREvidenceStorageDefine.CommEvidence storage evidence = sto._commEvidences[innerEid]; return (evidence.timestamp != 0, evidence.timestamp, evidence.category, evidence.metaData); } - function _getCommEvidenceStorageById(DAEStorage storage sto, bytes32 innerEid) internal view returns (CommEvidence storage evidence) { + function _getCommEvidenceStorageById(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid) internal view returns (DREvidenceStorageDefine.CommEvidence storage evidence) { return sto._commEvidences[innerEid]; } - function _getCommEvidenceIndefiniteStringArray(DAEStorage storage sto, bytes32 innerEid, string memory key) internal view returns(string[] memory value) { + function _getCommEvidenceIndefiniteStringArray(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key) internal view returns(string[] memory value) { require(sto._commEvidences[innerEid].timestamp != 0, "EvidenceStorage: Evidence not exists"); return sto._commEvidences[innerEid].indefiniteStringArray.get(keccak256(bytes(key))); } - function _getCommEvidenceIndefiniteString(DAEStorage storage sto, bytes32 innerEid, string memory key) internal view returns(string memory value) { + function _getCommEvidenceIndefiniteString(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key) internal view returns(string memory value) { require(sto._commEvidences[innerEid].timestamp != 0, "EvidenceStorage: Evidence not exists"); return sto._commEvidences[innerEid].indefiniteString.get(keccak256(bytes(key))); } - function _getCommEvidenceIndefiniteUint32(DAEStorage storage sto, bytes32 innerEid, string memory key) internal view returns(uint32 value) { + function _getCommEvidenceIndefiniteUint32(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key) internal view returns(uint32 value) { require(sto._commEvidences[innerEid].timestamp != 0, "EvidenceStorage: Evidence not exists"); return sto._commEvidences[innerEid].indefiniteUint32.get(keccak256(bytes(key))); } - function _getCommEvidenceIndefiniteBytes32(DAEStorage storage sto, bytes32 innerEid, string memory key) internal view returns(bytes32 value) { + function _getCommEvidenceIndefiniteBytes32(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key) internal view returns(bytes32 value) { require(sto._commEvidences[innerEid].timestamp != 0, "EvidenceStorage: Evidence not exists"); return sto._commEvidences[innerEid].indefiniteBytes32.get(keccak256(bytes(key))); } - function _getCommEvidencevariableDataMap(DAEStorage storage sto, bytes32 innerEid, string memory key) internal view returns(string memory value) { + function _getCommEvidencevariableDataMap(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory key) internal view returns(string memory value) { require(sto._commEvidences[innerEid].timestamp != 0, "EvidenceStorage: Evidence not exists"); return sto._commEvidences[innerEid].variableDataMap.get(keccak256(bytes(key))); } - function _getCommEvidence(DAEStorage storage sto, bytes32 innerEid) internal view returns(CommEvidence storage value) { + function _getCommEvidence(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid) internal view returns(DREvidenceStorageDefine.CommEvidence storage value) { require(sto._commEvidences[innerEid].timestamp != 0, "EvidenceStorage: Evidence not exists"); return sto._commEvidences[innerEid]; } @@ -212,10 +123,10 @@ library DAEvidenceStorageLib { ... 通用数据设置 _emitNewUser */ - function _storeUser(DAEStorage storage sto, string memory bid, string memory usci, string memory name, address account) internal { + function _storeUser(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, string memory usci, string memory name, address account) internal { require(sto._usersV1[bid].timestamp == 0, "UserStorage: bid already exists"); require(bytes(sto._userAddressToBid[account]).length == 0, "EvidenceStorage: account already exists"); - UserInfoV1 storage user = sto._usersV1[bid]; + DREvidenceStorageDefine.UserInfoV1 storage user = sto._usersV1[bid]; user.bid = bid; user.usci = usci; user.name = name; @@ -226,88 +137,100 @@ library DAEvidenceStorageLib { // emit UserCreated(msg.sender, bid, usci); } - // function _emitNewUser(DAEStorage storage sto, string memory bid, string memory usci) internal { + // function _emitNewUser(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, string memory usci) internal { // emit UserCreated(msg.sender, bid, usci); // } - // function _emitUserRoleChanged(DAEStorage storage sto, string memory bid) internal { + // function _emitUserRoleChanged(DREvidenceStorageDefine.DREStorage storage sto, string memory bid) internal { // emit UserRoleChanged(msg.sender, bid); // } /* 获取用户信息 */ - function _getUserByBid(DAEStorage storage sto, string memory bid) internal view returns (bool, string memory, string memory, uint256, uint256) { - UserInfoV1 storage user = sto._usersV1[bid]; + function _getUserByBid(DREvidenceStorageDefine.DREStorage storage sto, string memory bid) internal view returns (bool, string memory, string memory, uint256, uint256) { + DREvidenceStorageDefine.UserInfoV1 storage user = sto._usersV1[bid]; // require(bytes(usci).length > 0, "EvidenceStorage: Account not exists"); return (user.timestamp != 0, user.usci, user.name, user.evidenceCount, user.timestamp); } - function _getUseStoragerByBid(DAEStorage storage sto, string memory bid) internal view returns (UserInfoV1 storage) { + function _getUseStoragerByBid(DREvidenceStorageDefine.DREStorage storage sto, string memory bid) internal view returns (DREvidenceStorageDefine.UserInfoV1 storage) { return sto._usersV1[bid]; } /* 新加用户确权存证数目 */ - function _addEvidenceInUser(DAEStorage storage sto, string memory bid, bytes32 key, bytes32 value) internal { - UserInfoV1 storage user = sto._usersV1[bid]; + function _addEvidenceInUser(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, bytes32 value) internal { + DREvidenceStorageDefine.UserInfoV1 storage user = sto._usersV1[bid]; // require(bytes(usci).length > 0, "EvidenceStorage: Account not exists"); + bytes32 key = DREvidenceStorageConstant.EVIDENCE_RIGHT_EID_WITH_INDEX.concat(user.evidenceCount.toHexStringWithoutPrefix()).hash(); user.indefiniteBytes32.update(key, value); user.evidenceCount = user.evidenceCount + 1; } + /* 新加用户审核存证数目 */ + function _addReviewEvidenceInUser(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, bytes32 value) internal { + DREvidenceStorageDefine.UserInfoV1 storage user = sto._usersV1[bid]; + // 获取当前用户 审核存证数目 + uint256 count = user.indefiniteUint256.get(DREvidenceStorageConstant.USER_REVIEW_COUNT.hash()); + // require(bytes(usci).length > 0, "EvidenceStorage: Account not exists"); + bytes32 key = DREvidenceStorageConstant.EVIDENCE_REVIEW_EID_WITH_INDEX.concat(count.toHexStringWithoutPrefix()).hash(); + user.indefiniteBytes32.update(key, value); + user.indefiniteUint256.update(DREvidenceStorageConstant.USER_REVIEW_COUNT.hash(), count + 1); + } + /* 获取用户某个角色的状态 */ - function _getUserRoleStatus(DAEStorage storage sto, string memory bid, string memory role) internal view returns (uint32) { + function _getUserRoleStatus(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, string memory role) internal view returns (uint32) { require(sto._usersV1[bid].timestamp != 0, "UserStorage: bid not exists"); - UserInfoV1 storage user = sto._usersV1[bid]; + DREvidenceStorageDefine.UserInfoV1 storage user = sto._usersV1[bid]; return user.role[keccak256(bytes(role))]; } /* 获取用户信息 */ - function _getUserByAccount(DAEStorage storage sto, address account) internal view returns (bool, string memory, string memory, uint256, uint256) { + function _getUserByAccount(DREvidenceStorageDefine.DREStorage storage sto, address account) internal view returns (bool, string memory, string memory, uint256, uint256) { string memory bid = sto._userAddressToBid[account]; // require(bytes(usci).length > 0, "EvidenceStorage: Account not exists"); return _getUserByBid(sto, bid); } /* 通过用户account获取用户bid */ - function _getUserBidByAccount(DAEStorage storage sto, address account) internal view returns (bool, string memory) { + function _getUserBidByAccount(DREvidenceStorageDefine.DREStorage storage sto, address account) internal view returns (bool, string memory) { string memory bid = sto._userAddressToBid[account]; return (bytes(bid).length > 0, bid); } /* 判断用户存在 */ - function _userExist(DAEStorage storage sto, string memory bid) internal view returns (bool) { + function _userExist(DREvidenceStorageDefine.DREStorage storage sto, string memory bid) internal view returns (bool) { return sto._usersV1[bid].timestamp != 0; } // - function _bindOuterInnerEid(DAEStorage storage sto, bytes32 outer, bytes32 inner) internal { + function _bindOuterInnerEid(DREvidenceStorageDefine.DREStorage storage sto, bytes32 outer, bytes32 inner) internal { require(sto._outerEidToInnerEid[outer] == 0, "EvidenceStorage: bid already exists"); sto._outerEidToInnerEid[outer] = inner; } - function _GetInnerEidFromOuterEid(DAEStorage storage sto, bytes32 outer) internal view returns (bytes32){ + function _GetInnerEidFromOuterEid(DREvidenceStorageDefine.DREStorage storage sto, bytes32 outer) internal view returns (bytes32){ require(sto._outerEidToInnerEid[outer] != 0, "EvidenceStorage: bid not exists"); return sto._outerEidToInnerEid[outer]; } /********************************************************************************/ // 验证bid 是否合法 以及 是否登记 - function verifyBid(DAEStorage storage sto, string memory bid) internal view { + function verifyBid(DREvidenceStorageDefine.DREStorage storage sto, string memory bid) internal view { require(bytes(bid).length > 0, "bid error"); require(_userExist(sto, bid) == true, "bit not register on this chain"); } // 检查某种存证variableData中是否支持某个字段 - function isSupportedInVariableDataFields(DAEStorage storage sto, string memory category, string memory field) internal view returns(bool) { - string memory vbFieldKeyStr = category.concat(EVIDENCE_RIGHT_VARIABLE_DATA_MIDDLE).concat(field); + function isSupportedInVariableDataFields(DREvidenceStorageDefine.DREStorage storage sto, string memory category, string memory field) internal view returns(bool) { + string memory vbFieldKeyStr = category.concat(DREvidenceStorageConstant.EVIDENCE_RIGHT_VARIABLE_DATA_MIDDLE).concat(field); bytes32 key = keccak256(bytes(vbFieldKeyStr)); return sto.commData.byte32ToUint32.get(key) == 1; } // 设置某种存证的 variableData 数据 - function _setVariableData(DAEStorage storage sto, bytes32 innerEid, string memory category, string[] memory variableData) internal{ + function _setVariableData(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory category, string[] memory variableData) internal{ require(variableData.length % 2 == 0, "variableData length error"); - DAEvidenceStorageLib.CommEvidence storage evidence = _getCommEvidence(sto, innerEid); + DREvidenceStorageDefine.CommEvidence storage evidence = _getCommEvidence(sto, innerEid); for (uint32 i = 0; i < variableData.length; i += 2) { string memory key = variableData[i]; @@ -318,9 +241,9 @@ library DAEvidenceStorageLib { } // 获取存证的 variableData 数据 - function _getVariableData(DAEStorage storage sto, bytes32 innerEid, string memory category) internal view returns(string[] memory variableData) { + function _getVariableData(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory category) internal view returns(string[] memory variableData) { require(variableData.length % 2 == 0, "variableData length error"); - DAEvidenceStorageLib.CommEvidence storage evidence = _getCommEvidence(sto, innerEid); + DREvidenceStorageDefine.CommEvidence storage evidence = _getCommEvidence(sto, innerEid); string[] memory variableDataFields = getSupportVariableDataFields(sto, category); uint32 len = 0; @@ -350,27 +273,27 @@ library DAEvidenceStorageLib { } // 获取当前某种存证支持的 variableData 字段 - function getSupportVariableDataFields(DAEStorage storage sto, string memory category) internal view returns (string[] memory) { + function getSupportVariableDataFields(DREvidenceStorageDefine.DREStorage storage sto, string memory category) internal view returns (string[] memory) { string memory keyStr = category.concat(":variable_data:supported_fileds="); bytes32 key = keccak256(bytes(keyStr)); return sto.commData.byte32ToStringArrary.get(key); } // 设置某种存证 variableData 支持的字段,实现逻辑是:先将之前的所有fields都清除,再重新设置,原则上是只能在原有基础上新加字段,减少字段会导致之前保存的字段不能获取到 - function setDataRightSupportVariableDataFields(DAEStorage storage sto, string memory category, string[] memory fields) internal { + function setDataRightSupportVariableDataFields(DREvidenceStorageDefine.DREStorage storage sto, string memory category, string[] memory fields) internal { // TODO: 限制合约管理员可调用 // Clean current string memory keyStr = category.concat(":variable_data:supported_fileds="); bytes32 vbKey = keccak256(bytes(keyStr)); string[] memory variableDataFields = sto.commData.byte32ToStringArrary.get(vbKey); for (uint32 i = 0; i < variableDataFields.length; i++) { - string memory vbFieldKeyStr = category.concat(EVIDENCE_RIGHT_VARIABLE_DATA_MIDDLE); + string memory vbFieldKeyStr = category.concat(DREvidenceStorageConstant.EVIDENCE_RIGHT_VARIABLE_DATA_MIDDLE); bytes32 key = keccak256(bytes(vbFieldKeyStr.concat(variableDataFields[i]))); sto.commData.byte32ToUint32.update(key, 0); } // Set for (uint32 i = 0; i < fields.length; i++) { - string memory vbFieldKeyStr = category.concat(EVIDENCE_RIGHT_VARIABLE_DATA_MIDDLE); + string memory vbFieldKeyStr = category.concat(DREvidenceStorageConstant.EVIDENCE_RIGHT_VARIABLE_DATA_MIDDLE); bytes32 key = keccak256(bytes(vbFieldKeyStr.concat(fields[i]))); sto.commData.byte32ToUint32.update(key, 1); } @@ -378,7 +301,7 @@ library DAEvidenceStorageLib { } // 数据权限管理--- 设置分类 TODO: 限制合约管理员可调用 - // function setDataRightCategory(DAEStorage storage sto, string[] memory fields) internal { + // function setDataRightCategory(DREvidenceStorageDefine.DREStorage storage sto, string[] memory fields) internal { // // Clean current // bytes32 vbKey = keccak256(bytes("data_right_category:")); // string[] memory variableDataFields = sto.commData.byte32ToStringArrary.get(vbKey); @@ -397,38 +320,38 @@ library DAEvidenceStorageLib { // } // 数据权限管理--- 获取数据权限当前分类 - function getDataRightCategory(DAEStorage storage sto) internal view returns (string[] memory) { + function getDataRightCategory(DREvidenceStorageDefine.DREStorage storage sto) internal view returns (string[] memory) { bytes32 vbKey = keccak256(bytes("data_right_category:")); return sto.commData.byte32ToStringArrary.get(vbKey); } // 检查数据Hash是否已经存证 - function checkUdriOnChain(DAEStorage storage sto, string memory udri) internal view returns (bool) { - bytes32 innerEid = sto.commData.byte32ToBytes32.get(keccak256(bytes(EVIDENCE_UDRI.concat(udri)))); + function checkUdriOnChain(DREvidenceStorageDefine.DREStorage storage sto, string memory udri) internal view returns (bool) { + bytes32 innerEid = sto.commData.byte32ToBytes32.get(keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_UDRI.concat(udri)))); return innerEid != bytes32(0); } // 根据udri获取 innerEid - function _getInnerEidByUdri(DAEStorage storage sto, string memory udri) internal view returns (bytes32) { - return sto.commData.byte32ToBytes32.get(keccak256(bytes(EVIDENCE_UDRI.concat(udri)))); + function _getInnerEidByUdri(DREvidenceStorageDefine.DREStorage storage sto, string memory udri) internal view returns (bytes32) { + return sto.commData.byte32ToBytes32.get(keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_UDRI.concat(udri)))); } // 关联数据Hash 以及 innerEid - function _setUdriOnChain(DAEStorage storage sto, string memory udri, bytes32 innerEid) internal { - sto.commData.byte32ToBytes32.update(keccak256(bytes(EVIDENCE_UDRI.concat(udri))), innerEid); + function _setUdriOnChain(DREvidenceStorageDefine.DREStorage storage sto, string memory udri, bytes32 innerEid) internal { + sto.commData.byte32ToBytes32.update(keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_UDRI.concat(udri))), innerEid); } // 检查数据Hash是否已经存证 - function checkDataHashOnChain(DAEStorage storage sto, string memory dataHash) internal view returns (bool) { + function checkDataHashOnChain(DREvidenceStorageDefine.DREStorage storage sto, string memory dataHash) internal view returns (bool) { bytes32 innerEid = sto.commData.byte32ToBytes32.get(keccak256(bytes(dataHash))); return innerEid != bytes32(0); } - function _getInnerEidByDataHash(DAEStorage storage sto, string memory dataHash) internal view returns (bytes32) { + function _getInnerEidByDataHash(DREvidenceStorageDefine.DREStorage storage sto, string memory dataHash) internal view returns (bytes32) { return sto.commData.byte32ToBytes32.get(keccak256(bytes(dataHash))); } // 检查数据Hash是否已经存证, 任意一个dataHash存在都算存在 - function checkDataHashOnChain(DAEStorage storage sto, string[] memory dataHash) internal view returns (bool) { + function checkDataHashOnChain(DREvidenceStorageDefine.DREStorage storage sto, string[] memory dataHash) internal view returns (bool) { for (uint32 i = 0; i < dataHash.length; i++) { bytes32 innerEid = sto.commData.byte32ToBytes32.get(keccak256(bytes(dataHash[i]))); if (innerEid != bytes32(0)) return true; @@ -437,13 +360,13 @@ library DAEvidenceStorageLib { } // 关联数据Hash 以及 innerEid - function _setDataHashOnChain(DAEStorage storage sto, string[] memory dataHash, bytes32 innerEid) internal { + function _setDataHashOnChain(DREvidenceStorageDefine.DREStorage storage sto, string[] memory dataHash, bytes32 innerEid) internal { for (uint32 i = 0; i < dataHash.length; i++) { sto.commData.byte32ToBytes32.update(keccak256(bytes(dataHash[i])), innerEid); } } - function _withAnyRightInDataRightEvidence(DAEStorage storage sto, bytes32 innerEid, string memory bid) internal view returns(bool) { + function _withAnyRightInDataRightEvidence(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory bid) internal view returns(bool) { string[] memory rights = getDataRightCategory(sto); uint32 len = 0; for (uint32 i = 0; i < rights.length; i++) { @@ -454,7 +377,7 @@ library DAEvidenceStorageLib { return false; } - function _withRightInDataRightEvidence(DAEStorage storage sto, bytes32 innerEid, string memory bid, string memory right) internal view returns(bool) { + function _withRightInDataRightEvidence(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory bid, string memory right) internal view returns(bool) { string[] memory rights = getDataRightCategory(sto); uint32 len = 0; for (uint32 i = 0; i < rights.length; i++) { @@ -466,11 +389,11 @@ library DAEvidenceStorageLib { } // 检查sender是 存证 owner - // function _requireDataRightEvidenceOwner(DAEStorage storage sto, bytes32 innerEid internal view{ + // function _requireDataRightEvidenceOwner(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid internal view{ // (bool isExist, string memory bid) = _getUserBidByAccount(sto, msg.sender); // require(isExist == true, "Sender is not registered."); - // CommEvidence storage evidence = _getCommEvidence(sto, innerEid); + // DREvidenceStorageDefine.CommEvidence storage evidence = _getCommEvidence(sto, innerEid); // require(evidence.timestamp != 0, "evidence is not exist."); // string memory bidInEvidence = _getCommEvidenceIndefiniteString(sto, innerEid, "bid"); @@ -479,21 +402,26 @@ library DAEvidenceStorageLib { // } // 检查sender是否是某个角色 - // function _checkUserRole(DAEStorage storage sto, string memory role) internal view{ + // function _checkUserRole(DREvidenceStorageDefine.DREStorage storage sto, string memory role) internal view{ // (bool isExist, string memory bid) = _getUserBidByAccount(sto, msg.sender); // require(isExist == true, "Sender is not registered."); - // UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); - // require((user.indefiniteString.get(USER_ROLE_PREFIX.concat(role).hash()).equal("exist")) == true, "User without corresponding role permissions."); + // DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + // require((user.indefiniteString.get(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(role).hash()).equal("exist")) == true, "User without corresponding role permissions."); // } + function getAccessControl(DREvidenceStorageDefine.DREStorage storage sto) internal view returns(uint32 status) { + string memory keyStr = DREvidenceStorageConstant.ADMIN_PARAM_CONTRACT_ACCESS; + return sto.commData.byte32ToUint32.get(keyStr.hash()); + } + /******************************************** 用户 **************************************************/ function queryUserRole() internal pure returns (string[] memory) { // return ["dataRightOwner", "reviewer", "registry", "platform"]; string[] memory roles = new string[](4); - roles[0] = DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER; - roles[1] = DAEvidenceStorageLib.USER_ROLE_REVIEWER; - roles[2] = DAEvidenceStorageLib.USER_ROLE_REGISTRY; - roles[3] = DAEvidenceStorageLib.USER_ROLE_ELSE; + roles[0] = DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER; + roles[1] = DREvidenceStorageConstant.USER_ROLE_REVIEWER; + roles[2] = DREvidenceStorageConstant.USER_ROLE_REGISTRY; + roles[3] = DREvidenceStorageConstant.USER_ROLE_ELSE; return roles; } /* @@ -501,13 +429,13 @@ library DAEvidenceStorageLib { 3.2.1 添加用户 由用户管理员在链上添加用户信息,同时可以绑定用户角色。 */ - function addUser(DAEStorage storage sto, string memory bid, string memory usci, string memory name,address account, string[] memory roles) internal{ + function addUser(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, string memory usci, string memory name,address account, string[] memory roles) internal{ require(_userExist(sto, bid) == false, "User already exist."); // string memory bid, string memory usci, string memory name, address account _storeUser(sto, bid, usci, name, account); - DAEvidenceStorageLib.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); for(uint32 i = 0; i < roles.length; i++) { - user.indefiniteString.update(DAEvidenceStorageLib.USER_ROLE_PREFIX.concat(roles[i]).hash(), "exist"); + user.indefiniteString.update(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(roles[i]).hash(), "exist"); } } @@ -515,15 +443,15 @@ library DAEvidenceStorageLib { 3.2.2 查询用户 根据用户bid查询当前用户信息及其绑定的角色。 */ - function getUserRoles(DAEStorage storage sto, string memory bid) internal view returns(string memory usci, string memory name, string[] memory roles){ + function getUserRoles(DREvidenceStorageDefine.DREStorage storage sto, string memory bid) internal view returns(string memory usci, string memory name, string[] memory roles){ require(_userExist(sto, bid) == true, "User not exist."); - DAEvidenceStorageLib.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); usci = user.usci; name = user.name; string[] memory supporedRoles = queryUserRole(); uint32 len = 0; for(uint32 i = 0; i < supporedRoles.length; i++) { - if (user.indefiniteString.get(DAEvidenceStorageLib.USER_ROLE_PREFIX.concat(supporedRoles[i]).hash()).equal("exist")) { + if (user.indefiniteString.get(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(supporedRoles[i]).hash()).equal("exist")) { len = len + 1; } } @@ -531,7 +459,7 @@ library DAEvidenceStorageLib { uint32 j = 0; string[] memory rolesTmp = new string[](len); for(uint32 i = 0; i < supporedRoles.length; i++) { - if (user.indefiniteString.get(DAEvidenceStorageLib.USER_ROLE_PREFIX.concat(supporedRoles[i]).hash()).equal("exist")) { + if (user.indefiniteString.get(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(supporedRoles[i]).hash()).equal("exist")) { // roles[j] = supporedRoles[i]; rolesTmp[j] = supporedRoles[i]; j = j + 1; @@ -545,11 +473,11 @@ library DAEvidenceStorageLib { 3.2.3 添加用户角色 为用户添加新的角色。 */ - function grantUserRoles(DAEStorage storage sto, string memory bid, string[] memory roles) internal { + function grantUserRoles(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, string[] memory roles) internal { require(_userExist(sto, bid) == true, "User not exist."); - DAEvidenceStorageLib.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); for(uint32 i = 0; i < roles.length; i++) { - user.indefiniteString.update(DAEvidenceStorageLib.USER_ROLE_PREFIX.concat(roles[i]).hash(), "exist"); + user.indefiniteString.update(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(roles[i]).hash(), "exist"); } } @@ -557,11 +485,11 @@ library DAEvidenceStorageLib { 3.2.4 回收用户角色 由用户管理员回收用户的一或多个角色。 */ - function revokeUserRoles(DAEStorage storage sto, string memory bid, string[] memory roles) internal { + function revokeUserRoles(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, string[] memory roles) internal { require(_userExist(sto, bid) == true, "User not exist."); - DAEvidenceStorageLib.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); for(uint32 i = 0; i < roles.length; i++) { - user.indefiniteString.update(DAEvidenceStorageLib.USER_ROLE_PREFIX.concat(roles[i]).hash(), ""); + user.indefiniteString.update(DREvidenceStorageConstant.USER_ROLE_PREFIX.concat(roles[i]).hash(), ""); } } @@ -570,21 +498,21 @@ library DAEvidenceStorageLib { /* 5. 查询相关接口 */ /* 5.1 查询用户数据信息 */ /* 5.1.1 查询用户数据数量 */ - function getDataCount(DAEStorage storage sto, string calldata bid) internal view returns (uint256 dataCount) { + function getDataCount(DREvidenceStorageDefine.DREStorage storage sto, string calldata bid) internal view returns (uint256 dataCount) { require(_userExist(sto, bid) == true, "User already exist."); - DAEvidenceStorageLib.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); dataCount = user.evidenceCount; } /* 5.1.2 查询用户数据列表 */ - function getDataList(DAEStorage storage sto, string memory bid, uint256 start, uint256 count) internal view returns (string[] memory udriArray) { + function getDataList(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, uint256 start, uint256 count) internal view returns (string[] memory udriArray) { require(_userExist(sto, bid) == true, "User already exist."); require(count > 0, "count is invalid."); - DAEvidenceStorageLib.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); uint256 j = 0; string[] memory udriArrayTmp = new string[](count); for(uint256 i = start; i < start + count; i++) { - bytes32 key = DAEvidenceStorageLib.EVIDENCE_RIGHT_EID_WITH_INDEX.concat(i.toHexStringWithoutPrefix()).hash(); + bytes32 key = DREvidenceStorageConstant.EVIDENCE_RIGHT_EID_WITH_INDEX.concat(i.toHexStringWithoutPrefix()).hash(); bytes32 innerEid = user.indefiniteBytes32.get(key); udriArrayTmp[j] = _getCommEvidenceIndefiniteString(sto, innerEid, "udri"); j++; @@ -592,95 +520,122 @@ library DAEvidenceStorageLib { udriArray = udriArrayTmp; } + /* 查询用户审核存证数量 */ + function getUserReviewCount(DREvidenceStorageDefine.DREStorage storage sto, string calldata bid) internal view returns (uint256 dataCount) { + require(_userExist(sto, bid) == true, "User already exist."); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + dataCount = user.indefiniteUint256.get(DREvidenceStorageConstant.USER_REVIEW_COUNT.hash()); + } + + /* 查询用户审核存证列表 */ + function getUserReviewList(DREvidenceStorageDefine.DREStorage storage sto, string memory bid, uint256 start, uint256 count) internal view returns (string[] memory hashArray) { + require(_userExist(sto, bid) == true, "User already exist."); + require(count > 0, "count is invalid."); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + uint256 j = 0; + string[] memory hashArrayTmp = new string[](count); + for(uint256 i = start; i < start + count; i++) { + bytes32 key = DREvidenceStorageConstant.EVIDENCE_REVIEW_EID_WITH_INDEX.concat(i.toHexStringWithoutPrefix()).hash(); + bytes32 innerEid = user.indefiniteBytes32.get(key); + string [] memory reviewDataHash = _getCommEvidenceIndefiniteStringArray(sto, innerEid, "reviewDataHash"); + hashArrayTmp[j] = reviewDataHash[0]; + j++; + } + hashArray = hashArrayTmp; + } + // 不安全的接口,确保调用前已经做了 udri 检查 - function getEvidenceReviewCount(DAEStorage storage sto, string memory udri)internal view returns (uint32 count) { - bytes32 rightInnerEid = keccak256(bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid - count = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, DAEvidenceStorageLib.EVIDENCE_DATA_REVIEW_COUNT); + function getEvidenceReviewCount(DREvidenceStorageDefine.DREStorage storage sto, string memory udri)internal view returns (uint32 count) { + bytes32 rightInnerEid = keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid + count = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, DREvidenceStorageConstant.EVIDENCE_DATA_REVIEW_COUNT); } /******************************************** 审查存证 **************************************************/ /* 4.2 审查存证 */ /* 4.2.1 新增审查存证 */ - function addReviewEvidence(DAEStorage storage sto, string memory udri,string memory reviewerBid, string[] memory reviewDataHash, string[] memory metaData, string[] memory variableData) internal { + function addReviewEvidence(DREvidenceStorageDefine.DREStorage storage sto, string memory udri,string memory reviewerBid, string[] memory reviewDataHash, string[] memory metaData, string[] memory variableData) internal { // TODO: 检查该用户是否有审核角色 - // _checkUserRole(DAEvidenceStorageLib.USER_ROLE_REVIEWER); + // _checkUserRole(DREvidenceStorageConstant.USER_ROLE_REVIEWER); // TODO: 确保reviewDataHash没有被添加过 verifyBid(sto, reviewerBid); // 确保udri对应的数据存证已经存在 require(checkUdriOnChain(sto, udri) == true, "udri not on chain."); - bytes32 rightInnerEid = keccak256(bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid + bytes32 rightInnerEid = keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid - string memory str = DAEvidenceStorageLib.EVIDENCE_CATEGORY_REVIEW.concat(udri); + string memory str = DREvidenceStorageConstant.EVIDENCE_CATEGORY_REVIEW.concat(udri); for (uint32 i = 0; i < reviewDataHash.length; i++) { str = str.concat(reviewDataHash[i]); } bytes32 innerEid = keccak256(bytes(str)); //审核存证 内部eid - _storeCommEvidence(sto, innerEid, DAEvidenceStorageLib.EVIDENCE_CATEGORY_REVIEW, metaData); - _setCommEvidenceIndefiniteString(sto, innerEid, "version", "EVIDENCE_CONTRACT_VERSION_V1"); + _storeCommEvidence(sto, innerEid, DREvidenceStorageConstant.EVIDENCE_CATEGORY_REVIEW, metaData); + _setCommEvidenceIndefiniteString(sto, innerEid, "version", "DREvidenceStorageConstant.EVIDENCE_CONTRACT_VERSION_V1"); _setCommEvidenceIndefiniteString(sto, innerEid, "udri", udri); _setCommEvidenceIndefiniteString(sto, innerEid, "reviewerBid", reviewerBid); _setCommEvidenceIndefiniteStringArray(sto, innerEid, "reviewDataHash", reviewDataHash); // 审核数目信息需要 放到 确权存证 相关的数据中 - string memory key = reviewerBid.concat(DAEvidenceStorageLib.EVIDENCE_DATA_USER_REVIEW_COUNT); // 某个审查机构review数目 + string memory key = reviewerBid.concat(DREvidenceStorageConstant.EVIDENCE_DATA_USER_REVIEW_COUNT); // 某个审查机构review数目 uint32 current_number = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, key); _setCommEvidenceIndefiniteUint32(sto, rightInnerEid, key, current_number + 1); - _setCommEvidenceIndefiniteBytes32(sto, rightInnerEid, reviewerBid.concat(DAEvidenceStorageLib.EVIDENCE_DATA_USER_REVIEW_INDEX).concat(current_number.toString()), innerEid); + _setCommEvidenceIndefiniteBytes32(sto, rightInnerEid, reviewerBid.concat(DREvidenceStorageConstant.EVIDENCE_DATA_USER_REVIEW_INDEX).concat(current_number.toString()), innerEid); // 该 udri 数据,所有审查机构的review的数目 - current_number = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, DAEvidenceStorageLib.EVIDENCE_DATA_REVIEW_COUNT); - _setCommEvidenceIndefiniteUint32(sto, rightInnerEid, DAEvidenceStorageLib.EVIDENCE_DATA_REVIEW_COUNT, current_number + 1); - _setCommEvidenceIndefiniteBytes32(sto, rightInnerEid, DAEvidenceStorageLib.EVIDENCE_DATA_REVIEW_INDEX.concat(current_number.toString()), innerEid); + current_number = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, DREvidenceStorageConstant.EVIDENCE_DATA_REVIEW_COUNT); + _setCommEvidenceIndefiniteUint32(sto, rightInnerEid, DREvidenceStorageConstant.EVIDENCE_DATA_REVIEW_COUNT, current_number + 1); + _setCommEvidenceIndefiniteBytes32(sto, rightInnerEid, DREvidenceStorageConstant.EVIDENCE_DATA_REVIEW_INDEX.concat(current_number.toString()), innerEid); + + // 添加关联到user,这样可以遍历用户所有审核存证 + _addReviewEvidenceInUser(sto, reviewerBid, innerEid); - _setVariableData(sto, innerEid, DAEvidenceStorageLib.EVIDENCE_CATEGORY_REVIEW, variableData); + _setVariableData(sto, innerEid, DREvidenceStorageConstant.EVIDENCE_CATEGORY_REVIEW, variableData); // Generate outerEid - string memory outerEid = DAEvidenceStorageLib.EVIDENCE_ID_PREFIX_REVIEW.concat(innerEid.toHexStringWithoutPrefix()); + string memory outerEid = DREvidenceStorageConstant.EVIDENCE_ID_PREFIX_REVIEW.concat(innerEid.toHexStringWithoutPrefix()); _bindOuterInnerEid(sto, keccak256(bytes(outerEid)), innerEid); // _emitNewEvidence(outerEid); } /* 4.2.2 撤回审查存证 */ - function withdrawReviewEvidence(DAEStorage storage sto, string memory udri, string memory reviewerBid) internal { + function withdrawReviewEvidence(DREvidenceStorageDefine.DREStorage storage sto, string memory udri, string memory reviewerBid) internal { require(checkUdriOnChain(sto, udri) == true, "udri not on chain."); - // _checkUserRole(DAEvidenceStorageLib.USER_ROLE_REVIEWER); + // _checkUserRole(DREvidenceStorageConstant.USER_ROLE_REVIEWER); // TODO: 确认是否有必要传入reviewerBid,应为这样会出现reviewer 传入其他人的 bid,去撤销他人的bid, - bytes32 rightInnerEid = keccak256(bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid + bytes32 rightInnerEid = keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid - string memory reviewCountKey = reviewerBid.concat(DAEvidenceStorageLib.EVIDENCE_DATA_USER_REVIEW_COUNT); // 某个审查机构review数目 + string memory reviewCountKey = reviewerBid.concat(DREvidenceStorageConstant.EVIDENCE_DATA_USER_REVIEW_COUNT); // 某个审查机构review数目 uint32 current_number = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, reviewCountKey); for (uint32 i = 0; i < current_number; i++) { - string memory key = reviewerBid.concat(DAEvidenceStorageLib.EVIDENCE_DATA_USER_REVIEW_INDEX).concat(i.toString()); + string memory key = reviewerBid.concat(DREvidenceStorageConstant.EVIDENCE_DATA_USER_REVIEW_INDEX).concat(i.toString()); bytes32 innerEid = _getCommEvidenceIndefiniteBytes32(sto, rightInnerEid, key); - _setCommEvidenceIndefiniteString(sto, innerEid, "status", DAEvidenceStorageLib.EVIDENCE_STATUS_DISABLED); + _setCommEvidenceIndefiniteString(sto, innerEid, "status", DREvidenceStorageConstant.EVIDENCE_STATUS_DISABLED); } } /* 5.3 查询审查存证信息 */ /* 5.3.1 查询审查存证数量 */ - function getReviewCount(DAEStorage storage sto, string calldata udri) internal view returns (uint256) { + function getReviewCount(DREvidenceStorageDefine.DREStorage storage sto, string calldata udri) internal view returns (uint256) { // TODO: 修改文档那边,方法定义不一致 require(checkUdriOnChain(sto, udri) == true, "udri not on chain."); - bytes32 rightInnerEid = keccak256(bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid - return _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, DAEvidenceStorageLib.EVIDENCE_DATA_REVIEW_COUNT); + bytes32 rightInnerEid = keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid + return _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, DREvidenceStorageConstant.EVIDENCE_DATA_REVIEW_COUNT); } /* 5.3.2 查询审查存证信息 */ - function getVerifyDAEvidence(DAEStorage storage sto, string calldata udri, uint32 index) internal view returns (bool isWithdraw, string memory reviewerBid, string[] memory metaData, string[] memory variableData) { + function getVerifyEvidence(DREvidenceStorageDefine.DREStorage storage sto, string calldata udri, uint32 index) internal view returns (bool isWithdraw, string memory reviewerBid, string[] memory metaData, string[] memory variableData) { // TODO require(checkUdriOnChain(sto, udri) == true, "udri not on chain."); - bytes32 rightInnerEid = keccak256(bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid - uint32 count = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, DAEvidenceStorageLib.EVIDENCE_DATA_REVIEW_COUNT); + bytes32 rightInnerEid = keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid + uint32 count = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, DREvidenceStorageConstant.EVIDENCE_DATA_REVIEW_COUNT); require(index < count, "iinvalid index"); - bytes32 innerEid = _getCommEvidenceIndefiniteBytes32(sto, rightInnerEid, DAEvidenceStorageLib.EVIDENCE_DATA_REVIEW_INDEX.concat(index.toString())); + bytes32 innerEid = _getCommEvidenceIndefiniteBytes32(sto, rightInnerEid, DREvidenceStorageConstant.EVIDENCE_DATA_REVIEW_INDEX.concat(index.toString())); reviewerBid = _getCommEvidenceIndefiniteString(sto, innerEid, "reviewerBid"); ( , @@ -689,29 +644,29 @@ library DAEvidenceStorageLib { string[] memory _metaData ) = _getCommEvidenceById(sto, innerEid); string memory status = _getCommEvidenceIndefiniteString(sto, innerEid, "status"); - isWithdraw = status.equal(DAEvidenceStorageLib.EVIDENCE_STATUS_DISABLED); + isWithdraw = status.equal(DREvidenceStorageConstant.EVIDENCE_STATUS_DISABLED); metaData = _metaData; variableData = _getVariableData(sto, innerEid, _category); } // 获取某个审核机构对某个数据存证的 审核次数 - function getReviewCountOfReviewer(DAEStorage storage sto, string calldata udri, string calldata reviewerBid) internal view returns (uint256) { + function getReviewCountOfReviewer(DREvidenceStorageDefine.DREStorage storage sto, string calldata udri, string calldata reviewerBid) internal view returns (uint256) { // TODO: 修改文档那边,方法定义不一致 require(checkUdriOnChain(sto, udri) == true, "udri not on chain."); - bytes32 rightInnerEid = keccak256(bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid + bytes32 rightInnerEid = keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid string memory key = reviewerBid.concat(":review_count="); // 某个审查机构review数目 return _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, key); } /* 查询某个审核机构某次审查存证信息 */ - function getVerifyDAEvidenceOfReviewer(DAEStorage storage sto, string calldata udri, string calldata reviewerBid, uint32 index) internal view returns (bool isWithdraw, string[] memory metaData, string[] memory variableData) { + function getVerifyEvidenceOfReviewer(DREvidenceStorageDefine.DREStorage storage sto, string calldata udri, string calldata reviewerBid, uint32 index) internal view returns (bool isWithdraw, string[] memory metaData, string[] memory variableData) { require(checkUdriOnChain(sto, udri) == true, "udri not on chain."); - bytes32 rightInnerEid = keccak256(bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid - uint32 count = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, reviewerBid.concat(DAEvidenceStorageLib.EVIDENCE_DATA_USER_REVIEW_COUNT));// 审查机构review数目 + bytes32 rightInnerEid = keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri))); //确权存证 内部eid + uint32 count = _getCommEvidenceIndefiniteUint32(sto, rightInnerEid, reviewerBid.concat(DREvidenceStorageConstant.EVIDENCE_DATA_USER_REVIEW_COUNT));// 审查机构review数目 require(index < count, "invalid index"); - bytes32 innerEid = _getCommEvidenceIndefiniteBytes32(sto, rightInnerEid, reviewerBid.concat(DAEvidenceStorageLib.EVIDENCE_DATA_USER_REVIEW_INDEX).concat(index.toString())); + bytes32 innerEid = _getCommEvidenceIndefiniteBytes32(sto, rightInnerEid, reviewerBid.concat(DREvidenceStorageConstant.EVIDENCE_DATA_USER_REVIEW_INDEX).concat(index.toString())); ( , , @@ -719,7 +674,7 @@ library DAEvidenceStorageLib { string[] memory _metaData ) = _getCommEvidenceById(sto, innerEid); string memory status = _getCommEvidenceIndefiniteString(sto, innerEid, "status"); - isWithdraw = status.equal(DAEvidenceStorageLib.EVIDENCE_STATUS_DISABLED); + isWithdraw = status.equal(DREvidenceStorageConstant.EVIDENCE_STATUS_DISABLED); metaData = _metaData; variableData = _getVariableData(sto, innerEid, _category); } @@ -727,7 +682,7 @@ library DAEvidenceStorageLib { /******************************************** 确权存证**************************************************/ function _addDataRight( - DAEStorage storage sto, + DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory bid, string[] memory dataRight @@ -748,7 +703,7 @@ library DAEvidenceStorageLib { } // 不使用StringArray类型存放 dataRight. (2024-03-25) - function _getDataRight(DAEStorage storage sto, bytes32 innerEid, string memory bid) + function _getDataRight(DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory bid) internal view returns (string[] memory) @@ -759,7 +714,7 @@ library DAEvidenceStorageLib { } function _removeDataRight( - DAEStorage storage sto, + DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory bid, string[] memory dataRight @@ -772,7 +727,7 @@ library DAEvidenceStorageLib { } function _userWithDataRight( - DAEStorage storage sto, + DREvidenceStorageDefine.DREStorage storage sto, bytes32 innerEid, string memory bid, string memory dataRight @@ -786,7 +741,7 @@ library DAEvidenceStorageLib { /*4. 存证 */ /* 4.1.1 新增确权存证 */ function addDataRightEvidence( - DAEStorage storage sto, + DREvidenceStorageDefine.DREStorage storage sto, string memory udri, string memory bid, string[] memory dataHash, @@ -800,29 +755,29 @@ library DAEvidenceStorageLib { checkDataHashOnChain(sto, dataHash) == false, "Data Hash already on chain." ); - // _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); + // _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); // 确保udri没有被添加过 require(checkUdriOnChain(sto, udri) == false, "udri already on chain."); // TODO: 是否应该使用 msg.sender 对应的bid 呢?是否msg.sender 和传入的bid必需对应一致呢? require(_userExist(sto, bid) == true, "User not exist."); - DAEvidenceStorageLib.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); + DREvidenceStorageDefine.UserInfoV1 storage user = _getUseStoragerByBid(sto, bid); verifyBid(sto, bid); bytes32 innerEid = keccak256( - bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri)) + bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri)) ); _storeCommEvidence( sto, innerEid, - DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT, + DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT, metaData ); _setCommEvidenceIndefiniteString( sto, innerEid, "version", - "EVIDENCE_CONTRACT_VERSION_V1" + "DREvidenceStorageConstant.EVIDENCE_CONTRACT_VERSION_V1" ); _setCommEvidenceIndefiniteString(sto, innerEid, "udri", udri); _setCommEvidenceIndefiniteString(sto, innerEid, "bid", bid); @@ -830,7 +785,7 @@ library DAEvidenceStorageLib { sto, innerEid, "status", - DAEvidenceStorageLib.EVIDENCE_STATUS_ACTIVE + DREvidenceStorageConstant.EVIDENCE_STATUS_ACTIVE ); _setCommEvidenceIndefiniteStringArray(sto, innerEid, "dataHash", dataHash); @@ -842,13 +797,13 @@ library DAEvidenceStorageLib { _setUdriOnChain(sto, udri, innerEid); // 添加关联到user,这样可以遍历用户所有确权存证 - _addEvidenceInUser(sto, bid, DAEvidenceStorageLib.EVIDENCE_RIGHT_EID_WITH_INDEX.concat(user.evidenceCount.toHexStringWithoutPrefix()).hash(), innerEid); + _addEvidenceInUser(sto, bid, innerEid); // save variableData - _setVariableData(sto, innerEid, DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT, variableData); + _setVariableData(sto, innerEid, DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT, variableData); // Generate outerEid - string memory outerEid = DAEvidenceStorageLib.EVIDENCE_ID_PREFIX_NEW.concat( + string memory outerEid = DREvidenceStorageConstant.EVIDENCE_ID_PREFIX_NEW.concat( innerEid.toHexStringWithoutPrefix() ); _bindOuterInnerEid(sto, keccak256(bytes(outerEid)), innerEid); @@ -857,30 +812,30 @@ library DAEvidenceStorageLib { /* 4.1.2 追加可变数据存证 */ function appendVariableData( - DAEStorage storage sto, + DREvidenceStorageDefine.DREStorage storage sto, string memory udri, string[] memory variableData ) internal { - // _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); + // _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); require(variableData.length > 0, "variableData is empty"); require(variableData.length % 2 == 0, "variableData length error"); bytes32 innerEid = keccak256( - bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri)) + bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri)) ); // _requireDataRightEvidenceOwner(innerEid); - _setVariableData(sto, innerEid, DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT, variableData); + _setVariableData(sto, innerEid, DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT, variableData); } /* 4.1.3 撤回确权存证 */ function withdrawDataRightRegister( - DAEStorage storage sto, + DREvidenceStorageDefine.DREStorage storage sto, string memory udri, /*string memory dataRightOwnerBid, */ string[] memory dataRight ) internal { - // _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); + // _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); bytes32 innerEid = keccak256( - bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri)) + bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri)) ); // _requireDataRightEvidenceOwner(innerEid); // TODO: dataRightOwnerBid 似乎可以不需要填入 @@ -890,15 +845,15 @@ library DAEvidenceStorageLib { /* 4.1.4 新增授权存证 */ function grantUserDataRight( - DAEStorage storage sto, + DREvidenceStorageDefine.DREStorage storage sto, string memory udri, string memory bid, string[] memory dataRight ) internal { - // _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); + // _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); verifyBid(sto, bid); bytes32 innerEid = keccak256( - bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri)) + bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri)) ); // _requireDataRightEvidenceOwner(innerEid); _addDataRight(sto, innerEid, bid, dataRight); @@ -906,15 +861,15 @@ library DAEvidenceStorageLib { /* 4.1.5 撤回授权存证 */ function withdrawUserDataRight( - DAEStorage storage sto, + DREvidenceStorageDefine.DREStorage storage sto, string memory udri, string memory bid, string[] memory dataRight ) internal { - // _checkUserRole(DAEvidenceStorageLib.USER_ROLE_DATA_HOLDER); + // _checkUserRole(DREvidenceStorageConstant.USER_ROLE_DATA_HOLDER); verifyBid(sto, bid); bytes32 innerEid = keccak256( - bytes(DAEvidenceStorageLib.EVIDENCE_CATEGORY_RIGHT.concat(udri)) + bytes(DREvidenceStorageConstant.EVIDENCE_CATEGORY_RIGHT.concat(udri)) ); // _requireDataRightEvidenceOwner(innerEid); _removeDataRight(sto, innerEid, bid, dataRight); @@ -922,7 +877,7 @@ library DAEvidenceStorageLib { /* 5.2 查询确权存证信息 */ /* 5.2.1 查询存证数据标识 */ - function getUdriByDatahash(DAEStorage storage sto, string calldata dataHash) + function getUdriByDatahash(DREvidenceStorageDefine.DREStorage storage sto, string calldata dataHash) internal view returns (string memory) @@ -932,7 +887,7 @@ library DAEvidenceStorageLib { } /* 5.2.2 查询确权存证信息 */ - function getRegisteredData(DAEStorage storage sto, string memory udri) + function getRegisteredData(DREvidenceStorageDefine.DREStorage storage sto, string memory udri) internal view returns ( @@ -958,7 +913,7 @@ library DAEvidenceStorageLib { // keccak256( // bytes(_getCommEvidenceIndefiniteString(sto, innerEid, "status")) // ) != - // keccak256(bytes(DAEvidenceStorageLib.EVIDENCE_STATUS_ACTIVE)); + // keccak256(bytes(DREvidenceStorageConstant.EVIDENCE_STATUS_ACTIVE)); isWithdraw = _withAnyRightInDataRightEvidence(sto, innerEid, bid) == false; ( @@ -976,7 +931,7 @@ library DAEvidenceStorageLib { } /* 5.2.3 查询授权信息 */ - function getUserDataRight(DAEStorage storage sto, string memory udri, string memory bid) + function getUserDataRight(DREvidenceStorageDefine.DREStorage storage sto, string memory udri, string memory bid) internal view returns (string[] memory outRights) diff --git a/contracts/utils/DAEvidenceBytes.sol b/contracts/utils/DREvidenceBytes.sol similarity index 85% rename from contracts/utils/DAEvidenceBytes.sol rename to contracts/utils/DREvidenceBytes.sol index 6acb7544ef9cb26e3d2bb2f05840261c220b71c4..65253ea38edc2d9034bd076e532042fc76630918 100644 --- a/contracts/utils/DAEvidenceBytes.sol +++ b/contracts/utils/DREvidenceBytes.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.0; /** * @dev String operations. */ -library DAEvidenceBytes { +library DREvidenceBytes { function concat(bytes memory a, bytes memory b) public pure returns (bytes memory) { return abi.encodePacked(a, b); } diff --git a/contracts/utils/DAEvidenceMap.sol b/contracts/utils/DREvidenceMap.sol similarity index 42% rename from contracts/utils/DAEvidenceMap.sol rename to contracts/utils/DREvidenceMap.sol index 6adc26c40cedd10160ae06ad49645a8f2dafed63..5a6ff4d729840fbd4ff418569d0874b265711c28 100644 --- a/contracts/utils/DAEvidenceMap.sol +++ b/contracts/utils/DREvidenceMap.sol @@ -1,18 +1,18 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -library DAEvidenceMap { +library DREvidenceMap { - // DAMappingString - struct DAMappingString { + // DRMappingString + struct DRMappingString { mapping(bytes32 => string) _kv; } - function contains(DAMappingString storage set, bytes32 key) internal view returns (bool) { + function contains(DRMappingString storage set, bytes32 key) internal view returns (bool) { return bytes(set._kv[key]).length != 0; } - function add(DAMappingString storage set, bytes32 key, string memory value) internal returns (bool) { + function add(DRMappingString storage set, bytes32 key, string memory value) internal returns (bool) { if (!contains(set, key)) { set._kv[key] = value; return true; @@ -21,25 +21,25 @@ library DAEvidenceMap { } } - function update(DAMappingString storage set, bytes32 key, string memory value) internal returns (bool) { + function update(DRMappingString storage set, bytes32 key, string memory value) internal returns (bool) { set._kv[key] = value; return true; } - function get(DAMappingString storage set, bytes32 key) internal view returns (string memory) { + function get(DRMappingString storage set, bytes32 key) internal view returns (string memory) { return set._kv[key]; } - // DAMappingStringArray - struct DAMappingStringArray { + // DRMappingStringArray + struct DRMappingStringArray { mapping(bytes32 => string[] ) _kv; } - function contains(DAMappingStringArray storage set, bytes32 key) internal view returns (bool) { + function contains(DRMappingStringArray storage set, bytes32 key) internal view returns (bool) { return set._kv[key].length != 0; } - function add(DAMappingStringArray storage set, bytes32 key, string[] memory value) internal returns (bool) { + function add(DRMappingStringArray storage set, bytes32 key, string[] memory value) internal returns (bool) { if (!contains(set, key)) { set._kv[key] = value; return true; @@ -48,48 +48,84 @@ library DAEvidenceMap { } } - function update(DAMappingStringArray storage set, bytes32 key, string[] memory value) internal returns (bool) { + function update(DRMappingStringArray storage set, bytes32 key, string[] memory value) internal returns (bool) { set._kv[key] = value; return true; } - function get(DAMappingStringArray storage set, bytes32 key) internal view returns (string[] memory) { + function get(DRMappingStringArray storage set, bytes32 key) internal view returns (string[] memory) { return set._kv[key]; } - // DAMappingUint32 - struct DAMappingUint32 { + // DRMappingUint32 + struct DRMappingUint32 { mapping(bytes32 => uint32) _kv; } - function update(DAMappingUint32 storage set, bytes32 key, uint32 value) internal returns (bool) { + function update(DRMappingUint32 storage set, bytes32 key, uint32 value) internal returns (bool) { set._kv[key] = value; return true; } - function add(DAMappingUint32 storage set, bytes32 key, uint32 value) internal returns (bool) { + function add(DRMappingUint32 storage set, bytes32 key, uint32 value) internal returns (bool) { return update(set, key, value); } - function get(DAMappingUint32 storage set, bytes32 key) internal view returns (uint32) { + function get(DRMappingUint32 storage set, bytes32 key) internal view returns (uint32) { return set._kv[key]; } - // DAMappingBytes32 - struct DAMappingBytes32 { + // DRMappingUint256 + struct DRMappingUint256 { + mapping(bytes32 => uint256) _kv; + } + + function update(DRMappingUint256 storage set, bytes32 key, uint256 value) internal returns (bool) { + set._kv[key] = value; + return true; + } + + function add(DRMappingUint256 storage set, bytes32 key, uint256 value) internal returns (bool) { + return update(set, key, value); + } + + function get(DRMappingUint256 storage set, bytes32 key) internal view returns (uint256) { + return set._kv[key]; + } + + // DRMappingBytes32 + struct DRMappingBytes32 { mapping(bytes32 => bytes32) _kv; } - function update(DAMappingBytes32 storage set, bytes32 key, bytes32 value) internal returns (bool) { + function update(DRMappingBytes32 storage set, bytes32 key, bytes32 value) internal returns (bool) { + set._kv[key] = value; + return true; + } + + function add(DRMappingBytes32 storage set, bytes32 key, bytes32 value) internal returns (bool) { + return update(set, key, value); + } + + function get(DRMappingBytes32 storage set, bytes32 key) internal view returns (bytes32) { + return set._kv[key]; + } + + // DRMappingAddress + struct DRMappingAddress { + mapping(bytes32 => address) _kv; + } + + function update(DRMappingAddress storage set, bytes32 key, address value) internal returns (bool) { set._kv[key] = value; return true; } - function add(DAMappingBytes32 storage set, bytes32 key, bytes32 value) internal returns (bool) { + function add(DRMappingAddress storage set, bytes32 key, address value) internal returns (bool) { return update(set, key, value); } - function get(DAMappingBytes32 storage set, bytes32 key) internal view returns (bytes32) { + function get(DRMappingAddress storage set, bytes32 key) internal view returns (address) { return set._kv[key]; } } diff --git a/contracts/utils/DAEvidenceString.sol b/contracts/utils/DREvidenceString.sol similarity index 99% rename from contracts/utils/DAEvidenceString.sol rename to contracts/utils/DREvidenceString.sol index 87d364b17f9fc429f414b95fcc36514fe575659e..d2b5e187462d13b9c03ae044db066035fa951cf7 100644 --- a/contracts/utils/DAEvidenceString.sol +++ b/contracts/utils/DREvidenceString.sol @@ -7,7 +7,7 @@ import "@openzeppelin/contracts/utils/Strings.sol"; /** * @dev String operations. */ -library DAEvidenceString { +library DREvidenceString { bytes16 private constant HEX_DIGITS = "0123456789abcdef"; diff --git a/java/DRAccessController.java b/java/DRAccessController.java new file mode 100644 index 0000000000000000000000000000000000000000..82ac04244c6b768509e4de0dbc6327d2bbf1d343 --- /dev/null +++ b/java/DRAccessController.java @@ -0,0 +1,436 @@ +package com.btsi.contract; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class DRAccessController extends Contract { + public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b50610b48806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633dd296b5116100715780633dd296b5146101445780634cea35a61461015757806391d148541461016a578063a217fddf1461017d578063d547741f14610185578063fc4eb4821461019857600080fd5b806301ffc9a7146100ae578063248a9ca3146100d65780632f2ff15d1461010757806332d743271461011c57806336568abe14610131575b600080fd5b6100c16100bc3660046107d9565b6101ab565b60405190151581526020015b60405180910390f35b6100f96100e4366004610803565b60009081526065602052604090206001015490565b6040519081526020016100cd565b61011a610115366004610833565b6101e2565b005b6100f9600080516020610af383398151915281565b61011a61013f366004610833565b61020c565b61011a610152366004610902565b61028f565b6100c1610165366004610947565b610331565b6100c1610178366004610833565b6103b8565b6100f9600081565b61011a610193366004610833565b6103e3565b61011a6101a6366004610947565b610408565b60006001600160e01b03198216637965db0b60e01b14806101dc57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000828152606560205260409020600101546101fd816104d1565b61020783836104de565b505050565b6001600160a01b03811633146102815760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61028b8282610564565b5050565b600061029a816104d1565b60006001600160a01b03166097846040516102b591906109b4565b908152604051908190036020019020546001600160a01b03161415610207576102ec600080516020610af3833981519152836104de565b816097846040516102fd91906109b4565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6000806001600160a01b031660978360405161034d91906109b4565b908152604051908190036020019020546001600160a01b0316146103ab576101dc600080516020610af383398151915260978460405161038d91906109b4565b908152604051908190036020019020546001600160a01b03166103b8565b506000919050565b919050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000828152606560205260409020600101546103fe816104d1565b6102078383610564565b6000610413816104d1565b60006001600160a01b031660978360405161042e91906109b4565b908152604051908190036020019020546001600160a01b03161461028b5761048c600080516020610af383398151915260978460405161046e91906109b4565b908152604051908190036020019020546001600160a01b0316610564565b600060978360405161049e91906109b4565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6104db81336105cb565b50565b6104e882826103b8565b61028b5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556105203390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61056e82826103b8565b1561028b5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6105d582826103b8565b61028b576105e281610624565b6105ed836020610636565b6040516020016105fe9291906109d0565b60408051601f198184030181529082905262461bcd60e51b825261027891600401610a45565b60606101dc6001600160a01b03831660145b60606000610645836002610a8e565b610650906002610aad565b67ffffffffffffffff8111156106685761066861085f565b6040519080825280601f01601f191660200182016040528015610692576020820181803683370190505b509050600360fc1b816000815181106106ad576106ad610ac5565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106106dc576106dc610ac5565b60200101906001600160f81b031916908160001a9053506000610700846002610a8e565b61070b906001610aad565b90505b6001811115610783576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061073f5761073f610ac5565b1a60f81b82828151811061075557610755610ac5565b60200101906001600160f81b031916908160001a90535060049490941c9361077c81610adb565b905061070e565b5083156107d25760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610278565b9392505050565b6000602082840312156107eb57600080fd5b81356001600160e01b0319811681146107d257600080fd5b60006020828403121561081557600080fd5b5035919050565b80356001600160a01b03811681146103b357600080fd5b6000806040838503121561084657600080fd5b823591506108566020840161081c565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261088657600080fd5b813567ffffffffffffffff808211156108a1576108a161085f565b604051601f8301601f19908116603f011681019082821181831017156108c9576108c961085f565b816040528381528660208588010111156108e257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561091557600080fd5b823567ffffffffffffffff81111561092c57600080fd5b61093885828601610875565b9250506108566020840161081c565b60006020828403121561095957600080fd5b813567ffffffffffffffff81111561097057600080fd5b61097c84828501610875565b949350505050565b60005b8381101561099f578181015183820152602001610987565b838111156109ae576000848401525b50505050565b600082516109c6818460208701610984565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610a08816017850160208801610984565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610a39816028840160208801610984565b01602801949350505050565b6020815260008251806020840152610a64816040850160208701610984565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610aa857610aa8610a78565b500290565b60008219821115610ac057610ac0610a78565b500190565b634e487b7160e01b600052603260045260246000fd5b600081610aea57610aea610a78565b50600019019056fe22f59c2f02edbae5c421247f029fe3112c5a85f70b4a48f5d93b22ada9ea772ea264697066735822122099ed9f12dbf56a9767e55fab778326ad0dc2beb88f7ad2d57fdad074631ed81e64736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b50610b4b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063b6773ad811610071578063b6773ad814610127578063b70b2fbc1461013c578063de92755c1461014f578063ea7eb79814610162578063fbd3f0bf14610175578063fd09e7d61461019857600080fd5b806317d66dc8146100ae5780631b3240b8146100c35780635472010b146100de578063a4ff64c2146100f1578063b5aed06f14610104575b600080fd5b6100c16100bc3660046107f3565b6101ab565b005b6100cb600081565b6040519081526020015b60405180910390f35b6100c16100ec3660046107f3565b61022f565b6100c16100ff3660046108c2565b610259565b6101176101123660046108c2565b610322565b60405190151581526020016100d5565b6100cb600080516020610af683398151915281565b6100c161014a3660046108ff565b6103af565b61011761015d3660046107f3565b610451565b610117610170366004610944565b61047c565b6100cb61018336600461096e565b60009081526065602052604090206001015490565b6100c16101a63660046107f3565b6104b1565b6001600160a01b038116331461022157604051636381e58960e11b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61022b82826104d2565b5050565b60008281526065602052604090206001015461024a81610539565b6102548383610546565b505050565b600061026481610539565b60006001600160a01b031660978360405161027f91906109b7565b908152604051908190036020019020546001600160a01b03161461022b576102dd600080516020610af68339815191526097846040516102bf91906109b7565b908152604051908190036020019020546001600160a01b03166104d2565b60006097836040516102ef91906109b7565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6000806001600160a01b031660978360405161033e91906109b7565b908152604051908190036020019020546001600160a01b0316146103a25761039c600080516020610af683398151915260978460405161037e91906109b7565b908152604051908190036020019020546001600160a01b0316610451565b92915050565b506000919050565b919050565b60006103ba81610539565b60006001600160a01b03166097846040516103d591906109b7565b908152604051908190036020019020546001600160a01b031614156102545761040c600080516020610af683398151915283610546565b8160978460405161041d91906109b7565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006001600160e01b03198216634df6077b60e11b148061039c5750631d4fd6f360e31b6001600160e01b031983161461039c565b6000828152606560205260409020600101546104cc81610539565b61025483835b6104dc8282610451565b1561022b5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917fddf24a0d777ab37f0cd0acf6e2b0a75570d42c6500405e008f7f9a61836cf2a39190a45050565b61054381336105cc565b50565b6105508282610451565b61022b5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556105883390565b6001600160a01b0316816001600160a01b0316837f3a8c19c5eddb5ca7fdd091f00e2b3978b86344c928af4d2d7f6733572cc06b4c60405160405180910390a45050565b6105d68282610451565b61022b576105e381610626565b6105ee836020610638565b6040516020016105ff9291906109d3565b60408051601f1981840301815290829052636381e58960e11b825261021891600401610a48565b606061039c6001600160a01b03831660145b60606000610647836002610a91565b610652906002610ab0565b67ffffffffffffffff81111561066a5761066a61081f565b6040519080825280601f01601f191660200182016040528015610694576020820181803683370190505b509050600360fc1b816000815181106106af576106af610ac8565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106106de576106de610ac8565b60200101906001600160f81b031916908160001a9053506000610702846002610a91565b61070d906001610ab0565b90505b6001811115610785576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061074157610741610ac8565b1a60f81b82828151811061075757610757610ac8565b60200101906001600160f81b031916908160001a90535060049490941c9361077e81610ade565b9050610710565b5083156107d557604051636381e58960e11b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610218565b9392505050565b80356001600160a01b03811681146103aa57600080fd5b6000806040838503121561080657600080fd5b82359150610816602084016107dc565b90509250929050565b63b95aa35560e01b600052604160045260246000fd5b600082601f83011261084657600080fd5b813567ffffffffffffffff808211156108615761086161081f565b604051601f8301601f19908116603f011681019082821181831017156108895761088961081f565b816040528381528660208588010111156108a257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156108d457600080fd5b813567ffffffffffffffff8111156108eb57600080fd5b6108f784828501610835565b949350505050565b6000806040838503121561091257600080fd5b823567ffffffffffffffff81111561092957600080fd5b61093585828601610835565b925050610816602084016107dc565b60006020828403121561095657600080fd5b81356001600160e01b0319811681146107d557600080fd5b60006020828403121561098057600080fd5b5035919050565b60005b838110156109a257818101518382015260200161098a565b838111156109b1576000848401525b50505050565b600082516109c9818460208701610987565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610a0b816017850160208801610987565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610a3c816028840160208801610987565b01602801949350505050565b6020815260008251806020840152610a67816040850160208701610987565b601f01601f19169190910160400192915050565b63b95aa35560e01b600052601160045260246000fd5b6000816000190483118215151615610aab57610aab610a7b565b500290565b60008219821115610ac357610ac3610a7b565b500190565b63b95aa35560e01b600052603260045260246000fd5b600081610aed57610aed610a7b565b50600019019056fecda5c054d055f48a2866e1a28d72f8145e422f1db1872bc4c9fe2888702c9f8da2646970667358221220cb9f0a719a830b662cb25650623d178d47ecc8b6f0975744360869fb23b104ca64736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[2719481311,456278200],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"USERMANAGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[852968231,3061267160],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[613063843,4224970943],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":2,\"slot\":101,\"value\":[0]},{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"selector\":[791671133,1416757515],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":2,\"slot\":101,\"value\":[0]},{\"kind\":3,\"slot\":151,\"value\":[0]}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"grantUserManagePermission\",\"outputs\":[],\"selector\":[1037211317,3070963644],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[2446411860,3734140252],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":101,\"value\":[34,245,156,47,2,237,186,229,196,33,36,127,2,159,227,17,44,90,133,247,11,74,72,245,217,59,34,173,169,234,119,46]}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"hasUserManageRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[1290417574,3048132719],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"selector\":[911641278,399928776],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":2,\"slot\":101,\"value\":[0]},{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"selector\":[3578229791,4245284822],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":2,\"slot\":101,\"value\":[0]},{\"kind\":3,\"slot\":151,\"value\":[0]}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"revokeUserManagePermission\",\"outputs\":[],\"selector\":[4233016450,2768200898],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[33540519,3934173080],\"stateMutability\":\"view\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_DEFAULT_ADMIN_ROLE = "DEFAULT_ADMIN_ROLE"; + + public static final String FUNC_USERMANAGE_ROLE = "USERMANAGE_ROLE"; + + public static final String FUNC_GETROLEADMIN = "getRoleAdmin"; + + public static final String FUNC_GRANTROLE = "grantRole"; + + public static final String FUNC_GRANTUSERMANAGEPERMISSION = "grantUserManagePermission"; + + public static final String FUNC_HASROLE = "hasRole"; + + public static final String FUNC_HASUSERMANAGEROLE = "hasUserManageRole"; + + public static final String FUNC_RENOUNCEROLE = "renounceRole"; + + public static final String FUNC_REVOKEROLE = "revokeRole"; + + public static final String FUNC_REVOKEUSERMANAGEPERMISSION = "revokeUserManagePermission"; + + public static final String FUNC_SUPPORTSINTERFACE = "supportsInterface"; + + public static final Event INITIALIZED_EVENT = new Event("Initialized", + Arrays.>asList(new TypeReference() {})); + ; + + public static final Event ROLEADMINCHANGED_EVENT = new Event("RoleAdminChanged", + Arrays.>asList(new TypeReference(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEGRANTED_EVENT = new Event("RoleGranted", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event ROLEREVOKED_EVENT = new Event("RoleRevoked", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + protected DRAccessController(String contractAddress, Client client, CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getInitializedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(INITIALIZED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + InitializedEventResponse typedResponse = new InitializedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.version = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleAdminChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEADMINCHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleAdminChangedEventResponse typedResponse = new RoleAdminChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.previousAdminRole = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.newAdminRole = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleGrantedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEGRANTED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleGrantedEventResponse typedResponse = new RoleGrantedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleRevokedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEREVOKED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleRevokedEventResponse typedResponse = new RoleRevokedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public byte[] DEFAULT_ADMIN_ROLE() throws ContractException { + final Function function = new Function(FUNC_DEFAULT_ADMIN_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public byte[] USERMANAGE_ROLE() throws ContractException { + final Function function = new Function(FUNC_USERMANAGE_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public byte[] getRoleAdmin(byte[] role) throws ContractException { + final Function function = new Function(FUNC_GETROLEADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public TransactionReceipt grantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt grantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserManagePermission(String bid, String user, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public Boolean hasRole(byte[] role, String account) throws ContractException { + final Function function = new Function(FUNC_HASROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public Boolean hasUserManageRole(String bid) throws ContractException { + final Function function = new Function(FUNC_HASUSERMANAGEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public TransactionReceipt renounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRenounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String renounceRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRenounceRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_RENOUNCEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRevokeRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeUserManagePermission(String bid, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getRevokeUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public Boolean supportsInterface(byte[] interfaceId) throws ContractException { + final Function function = new Function(FUNC_SUPPORTSINTERFACE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4(interfaceId)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public static DRAccessController load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new DRAccessController(contractAddress, client, credential); + } + + public static DRAccessController deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(DRAccessController.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } + + public static class InitializedEventResponse { + public TransactionReceipt.Logs log; + + public BigInteger version; + } + + public static class RoleAdminChangedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public byte[] previousAdminRole; + + public byte[] newAdminRole; + } + + public static class RoleGrantedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class RoleRevokedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } +} diff --git a/java/DREvProxy.java b/java/DREvProxy.java new file mode 100644 index 0000000000000000000000000000000000000000..d21651c6ae0f3812ae920eb09cfedec4e9df67fb --- /dev/null +++ b/java/DREvProxy.java @@ -0,0 +1,127 @@ +package com.btsi.contract; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.abi.FunctionEncoder; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class DREvProxy extends Contract { + public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b506040516200139e3803806200139e8339810160408190526200003491620004b1565b8282828281620000478282600062000061565b50620000559050826200009e565b505050505050620005e4565b6200006c83620000f9565b6000825111806200007a5750805b1562000099576200009783836200013b60201b6200009e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c96200016a565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000f681620001a3565b50565b620001048162000258565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000163838360405180606001604052806027815260200162001377602791396200030c565b9392505050565b6000620001946000805160206200135783398151915260001b6200038b60201b620000ca1760201c565b546001600160a01b0316919050565b6001600160a01b0381166200020e5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002376000805160206200135783398151915260001b6200038b60201b620000ca1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200026e816200038e60201b620000cd1760201c565b620002d25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000205565b80620002377f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200038b60201b620000ca1760201c565b6060600080856001600160a01b0316856040516200032b919062000591565b600060405180830381855af49150503d806000811462000368576040519150601f19603f3d011682016040523d82523d6000602084013e6200036d565b606091505b50909250905062000381868383876200039d565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200040e57825162000406576001600160a01b0385163b620004065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000205565b50816200041a565b6200041a838362000422565b949350505050565b815115620004335781518083602001fd5b8060405162461bcd60e51b8152600401620002059190620005af565b80516001600160a01b03811681146200046757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200049f57818101518382015260200162000485565b83811115620000975750506000910152565b600080600060608486031215620004c757600080fd5b620004d2846200044f565b9250620004e2602085016200044f565b60408501519092506001600160401b03808211156200050057600080fd5b818601915086601f8301126200051557600080fd5b8151818111156200052a576200052a6200046c565b604051601f8201601f19908116603f011681019083821181831017156200055557620005556200046c565b816040528281528960208487010111156200056f57600080fd5b6200058283602083016020880162000482565b80955050505050509250925092565b60008251620005a581846020870162000482565b9190910192915050565b6020815260008251806020840152620005d081604085016020870162000482565b601f01601f19169190910160400192915050565b610d6380620005f46000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6100dc565b6001600160a01b0316336001600160a01b031614156100945760606001600160e01b03196000351663215c7ded60e01b8114156100685761005e61010a565b9150815160208301f35b6001600160e01b0319811662c0585960e21b14156100885761005e610174565b61009061034a565b5050565b61009c61034a565b565b60606100c38383604051806060016040528060278152602001610d07602791396104a5565b9392505050565b90565b6001600160a01b03163b151590565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b031690565b606060008061011c366004818461094c565b81019061012991906109a8565b6001600160e01b03199190911660009081526020818152604080832080546001600160a01b0319166001600160a01b0390951694909417909355825190810190925281529392505050565b6060600080610186366004818461094c565b8101906101939190610abe565b91509150600082511180156101a9575060008151115b6102125760405162461bcd60e51b815260206004820152602f60248201527f73656c6563746f72732026206c6f676963416464726573736573206c656e677460448201526e0682073686f756c64206265203e203608c1b60648201526084015b60405180910390fd5b80518251146102895760405162461bcd60e51b815260206004820152603960248201527f73656c6563746f7273206c656e6774682073686f756c6420626520657175616c60448201527f20746f206c6f676963416464726573736573206c656e677468000000000000006064820152608401610209565b815160005b8163ffffffff168163ffffffff16101561033157828163ffffffff16815181106102ba576102ba610b7e565b6020026020010151600080868463ffffffff16815181106102dd576102dd610b7e565b6020908102919091018101516001600160e01b031916825281019190915260400160002080546001600160a01b0319166001600160a01b03929092169190911790558061032981610b94565b91505061028e565b5060405180602001604052806000815250935050505090565b6103526100dc565b6001600160a01b0316336001600160a01b0316141561049d5760606001600160e01b031960003516631b2ce7f360e11b8114156103985761039161051d565b9150610495565b6001600160e01b0319811663278f794360e11b14156103b957610391610574565b6001600160e01b031981166308f2839760e41b14156103da576103916105ba565b6001600160e01b031981166303e1469160e61b14156103fb576103916105eb565b6001600160e01b03198116635c60da1b60e01b141561041c5761039161062b565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a401610209565b815160208301f35b61009c61063f565b6060600080856001600160a01b0316856040516104c29190610bf2565b600060405180830381855af49150503d80600081146104fd576040519150601f19603f3d011682016040523d82523d6000602084013e610502565b606091505b50915091506105138683838761064f565b9695505050505050565b60606105276106cd565b6000610536366004818461094c565b8101906105439190610c0e565b9050610560816040518060200160405280600081525060006106d8565b505060408051602081019091526000815290565b6060600080610586366004818461094c565b8101906105939190610c2b565b915091506105a3828260016106d8565b604051806020016040528060008152509250505090565b60606105c46106cd565b60006105d3366004818461094c565b8101906105e09190610c0e565b905061056081610704565b60606105f56106cd565b60006105ff6100dc565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606106356106cd565b60006105ff61075b565b61009c61064a61075b565b610781565b606083156106bb5782516106b4576001600160a01b0385163b6106b45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610209565b50816106c5565b6106c583836107a5565b949350505050565b341561009c57600080fd5b6106e1836107cf565b6000825111806106ee5750805b156106ff576106fd838361009e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61072d6100dc565b604080516001600160a01b03928316815291841660208301520160405180910390a16107588161080f565b50565b600080356001600160e01b0319168152602081905260409020546001600160a01b031690565b3660008037600080366000845af43d6000803e8080156107a0573d6000f35b3d6000fd5b8151156107b55781518083602001fd5b8060405162461bcd60e51b81526004016102099190610cd3565b6107d8816108b8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166108745760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610209565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6109255760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610209565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610897565b6000808585111561095c57600080fd5b8386111561096957600080fd5b5050820193919092039150565b80356001600160e01b03198116811461098e57600080fd5b919050565b6001600160a01b038116811461075857600080fd5b600080604083850312156109bb57600080fd5b6109c483610976565b915060208301356109d481610993565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff","81118282101715610a1e57610a1e6109df565b604052919050565b600067ffffffffffffffff821115610a4057610a406109df565b5060051b60200190565b600082601f830112610a5b57600080fd5b81356020610a70610a6b83610a26565b6109f5565b82815260059290921b84018101918181019086841115610a8f57600080fd5b8286015b84811015610ab3578035610aa681610993565b8352918301918301610a93565b509695505050505050565b60008060408385031215610ad157600080fd5b823567ffffffffffffffff80821115610ae957600080fd5b818501915085601f830112610afd57600080fd5b81356020610b0d610a6b83610a26565b82815260059290921b84018101918181019089841115610b2c57600080fd5b948201945b83861015610b5157610b4286610976565b82529482019490820190610b31565b96505086013592505080821115610b6757600080fd5b50610b7485828601610a4a565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff80831681811415610bbc57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b83811015610be1578181015183820152602001610bc9565b838111156106fd5750506000910152565b60008251610c04818460208701610bc6565b9190910192915050565b600060208284031215610c2057600080fd5b81356100c381610993565b60008060408385031215610c3e57600080fd5b8235610c4981610993565b915060208381013567ffffffffffffffff80821115610c6757600080fd5b818601915086601f830112610c7b57600080fd5b813581811115610c8d57610c8d6109df565b610c9f601f8201601f191685016109f5565b91508082528784828501011115610cb557600080fd5b80848401858401376000848284010152508093505050509250929050565b6020815260008251806020840152610cf2816040850160208701610bc6565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122028237c4ccc33a8efc03f8422e6a1e00c1be81e10793af9c6b8283441559f91a964736f6c634300080b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"60806040523480156200001157600080fd5b50604051620013a9380380620013a98339810160408190526200003491620004b5565b8282828281620000478282600062000061565b50620000559050826200009e565b505050505050620005e8565b6200006c83620000f9565b6000825111806200007a5750805b1562000099576200009783836200013b60201b6200009f1760201c565b505b505050565b7f7fff140a2090a44f84000f793b3e2c26fd84de1b51418e5734481ecebf9fa419620000c96200016a565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000f681620001a3565b50565b620001048162000259565b6040516001600160a01b038216907f35c786da035a401a18e1a5dade4bdb4c07d82bdd5c15bef8561dbf76ad4db25d90600090a250565b606062000163838360405180606001604052806027815260200162001362602791396200030e565b9392505050565b6000620001946000805160206200138983398151915260001b6200038d60201b620000cb1760201c565b546001600160a01b0316919050565b6001600160a01b0381166200020f57604051636381e58960e11b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002386000805160206200138983398151915260001b6200038d60201b620000cb1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200026f816200039060201b620000ce1760201c565b620002d457604051636381e58960e11b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000206565b80620002387f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200038d60201b620000cb1760201c565b6060600080856001600160a01b0316856040516200032d919062000595565b600060405180830381855af49150503d80600081146200036a576040519150601f19603f3d011682016040523d82523d6000602084013e6200036f565b606091505b50909250905062000383868383876200039f565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200041157825162000409576001600160a01b0385163b6200040957604051636381e58960e11b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000206565b50816200041d565b6200041d838362000425565b949350505050565b815115620004365781518083602001fd5b80604051636381e58960e11b8152600401620002069190620005b3565b80516001600160a01b03811681146200046b57600080fd5b919050565b63b95aa35560e01b600052604160045260246000fd5b60005b83811015620004a357818101518382015260200162000489565b83811115620000975750506000910152565b600080600060608486031215620004cb57600080fd5b620004d68462000453565b9250620004e66020850162000453565b60408501519092506001600160401b03808211156200050457600080fd5b818601915086601f8301126200051957600080fd5b8151818111156200052e576200052e62000470565b604051601f8201601f19908116603f0116810190838211818310171562000559576200055962000470565b816040528281528960208487010111156200057357600080fd5b6200058683602083016020880162000486565b80955050505050509250925092565b60008251620005a981846020870162000486565b9190910192915050565b6020815260008251806020840152620005d481604085016020870162000486565b601f01601f19169190910160400192915050565b610d6a80620005f86000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6100dd565b6001600160a01b0316336001600160a01b031614156100955760606001600160e01b03196000351663b943fb0d60e01b8114156100685761005e61010b565b9150815160208301f35b6001600160e01b03198116636398de5560e11b14156100895761005e610175565b61009161034d565b5050565b61009d61034d565b565b60606100c48383604051806060016040528060278152602001610d0e602791396104a8565b9392505050565b90565b6001600160a01b03163b151590565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b031690565b606060008061011d3660048184610953565b81019061012a91906109af565b6001600160e01b03199190911660009081526020818152604080832080546001600160a01b0319166001600160a01b0390951694909417909355825190810190925281529392505050565b60606000806101873660048184610953565b8101906101949190610ac5565b91509150600082511180156101aa575060008151115b61021457604051636381e58960e11b815260206004820152602f60248201527f73656c6563746f72732026206c6f676963416464726573736573206c656e677460448201526e0682073686f756c64206265203e203608c1b60648201526084015b60405180910390fd5b805182511461028c57604051636381e58960e11b815260206004820152603960248201527f73656c6563746f7273206c656e6774682073686f756c6420626520657175616c60448201527f20746f206c6f676963416464726573736573206c656e67746800000000000000606482015260840161020b565b815160005b8163ffffffff168163ffffffff16101561033457828163ffffffff16815181106102bd576102bd610b85565b6020026020010151600080868463ffffffff16815181106102e0576102e0610b85565b6020908102919091018101516001600160e01b031916825281019190915260400160002080546001600160a01b0319166001600160a01b03929092169190911790558061032c81610b9b565b915050610291565b5060405180602001604052806000815250935050505090565b6103556100dd565b6001600160a01b0316336001600160a01b031614156104a05760606001600160e01b031960003516633a2a322560e21b81141561039b57610394610520565b9150610498565b6001600160e01b0319811663207fa8b960e01b14156103bc57610394610577565b6001600160e01b0319811663333b0add60e11b14156103dd576103946105bd565b6001600160e01b03198116621e2a4560eb1b14156103fd576103946105ee565b6001600160e01b0319811663d5696bb160e01b141561041e5761039461062e565b604051636381e58960e11b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a40161020b565b815160208301f35b61009d610642565b6060600080856001600160a01b0316856040516104c59190610bf9565b600060405180830381855af49150503d8060008114610500576040519150601f19603f3d011682016040523d82523d6000602084013e610505565b606091505b509150915061051686838387610652565b9695505050505050565b606061052a6106d1565b60006105393660048184610953565b8101906105469190610c15565b9050610563816040518060200160405280600081525060006106dc565b505060408051602081019091526000815290565b60606000806105893660048184610953565b8101906105969190610c32565b915091506105a6828260016106dc565b604051806020016040528060008152509250505090565b60606105c76106d1565b60006105d63660048184610953565b8101906105e39190610c15565b905061056381610708565b60606105f86106d1565b60006106026100dd565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606106386106d1565b600061060261075f565b61009d61064d61075f565b610785565b606083156106bf5782516106b8576001600160a01b0385163b6106b857604051636381e58960e11b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161020b565b50816106c9565b6106c983836107a9565b949350505050565b341561009d57600080fd5b6106e5836107d4565b6000825111806106f25750805b1561070357610701838361009f565b505b505050565b7f7fff140a2090a44f84000f793b3e2c26fd84de1b51418e5734481ecebf9fa4196107316100dd565b604080516001600160a01b03928316815291841660208301520160405180910390a161075c81610814565b50565b600080356001600160e01b0319168152602081905260409020546001600160a01b031690565b3660008037600080366000845af43d6000803e8080156107a4573d6000f35b3d6000fd5b8151156107b95781518083602001fd5b80604051636381e58960e11b815260040161020b9190610cda565b6107dd816108be565b6040516001600160a01b038216907f35c786da035a401a18e1a5dade4bdb4c07d82bdd5c15bef8561dbf76ad4db25d90600090a250565b6001600160a01b03811661087a57604051636381e58960e11b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161020b565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61092c57604051636381e58960e11b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161020b565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61089d565b6000808585111561096357600080fd5b8386111561097057600080fd5b5050820193919092039150565b80356001600160e01b03198116811461099557600080fd5b919050565b6001600160a01b038116811461075c57600080fd5b600080604083850312156109c257600080fd5b6109cb8361097d565b915060208301356109db8161099a565b809150509250929050565b63b95aa35560e01b600052604160045260246000fd5b604051601f8201601f1916","810167ffffffffffffffff81118282101715610a2557610a256109e6565b604052919050565b600067ffffffffffffffff821115610a4757610a476109e6565b5060051b60200190565b600082601f830112610a6257600080fd5b81356020610a77610a7283610a2d565b6109fc565b82815260059290921b84018101918181019086841115610a9657600080fd5b8286015b84811015610aba578035610aad8161099a565b8352918301918301610a9a565b509695505050505050565b60008060408385031215610ad857600080fd5b823567ffffffffffffffff80821115610af057600080fd5b818501915085601f830112610b0457600080fd5b81356020610b14610a7283610a2d565b82815260059290921b84018101918181019089841115610b3357600080fd5b948201945b83861015610b5857610b498661097d565b82529482019490820190610b38565b96505086013592505080821115610b6e57600080fd5b50610b7b85828601610a51565b9150509250929050565b63b95aa35560e01b600052603260045260246000fd5b600063ffffffff80831681811415610bc35763b95aa35560e01b600052601160045260246000fd5b6001019392505050565b60005b83811015610be8578181015183820152602001610bd0565b838111156107015750506000910152565b60008251610c0b818460208701610bcd565b9190910192915050565b600060208284031215610c2757600080fd5b81356100c48161099a565b60008060408385031215610c4557600080fd5b8235610c508161099a565b915060208381013567ffffffffffffffff80821115610c6e57600080fd5b818601915086601f830112610c8257600080fd5b813581811115610c9457610c946109e6565b610ca6601f8201601f191685016109fc565b91508082528784828501011115610cbc57600080fd5b80848401858401376000848284010152508093505050509250929050565b6020815260008251806020840152610cf9816040850160208701610bcd565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205c4c7f90f1db2c8f42dba48f993b29e8dbe31ac2dca9f23b2ff4587be819358f64736f6c634300080b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final Event ADMINCHANGED_EVENT = new Event("AdminChanged", + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {})); + ; + + public static final Event BEACONUPGRADED_EVENT = new Event("BeaconUpgraded", + Arrays.>asList(new TypeReference
(true) {})); + ; + + public static final Event UPGRADED_EVENT = new Event("Upgraded", + Arrays.>asList(new TypeReference
(true) {})); + ; + + protected DREvProxy(String contractAddress, Client client, CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getAdminChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ADMINCHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + AdminChangedEventResponse typedResponse = new AdminChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.previousAdmin = (String) eventValues.getNonIndexedValues().get(0).getValue(); + typedResponse.newAdmin = (String) eventValues.getNonIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getBeaconUpgradedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(BEACONUPGRADED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + BeaconUpgradedEventResponse typedResponse = new BeaconUpgradedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.beacon = (String) eventValues.getIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUpgradedEvents(TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(UPGRADED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UpgradedEventResponse typedResponse = new UpgradedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.implementation = (String) eventValues.getIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public static DREvProxy load(String contractAddress, Client client, CryptoKeyPair credential) { + return new DREvProxy(contractAddress, client, credential); + } + + public static DREvProxy deploy(Client client, CryptoKeyPair credential, String _logic, + String admin_, byte[] _data) throws ContractException { + byte[] encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(_logic), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(admin_), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(_data))); + return deploy(DREvProxy.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), encodedConstructor, null); + } + + public static class AdminChangedEventResponse { + public TransactionReceipt.Logs log; + + public String previousAdmin; + + public String newAdmin; + } + + public static class BeaconUpgradedEventResponse { + public TransactionReceipt.Logs log; + + public String beacon; + } + + public static class UpgradedEventResponse { + public TransactionReceipt.Logs log; + + public String implementation; + } +} diff --git a/java/DREvProxyAdmin.java b/java/DREvProxyAdmin.java new file mode 100644 index 0000000000000000000000000000000000000000..6421f81982a30f07fa22fabbd0e0fb66f4bc1592 --- /dev/null +++ b/java/DREvProxyAdmin.java @@ -0,0 +1,423 @@ +package com.btsi.contract; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple3; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class DREvProxyAdmin extends Contract { + public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a178061007e6000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b146101495780639623609d1461016757806399a88ec41461017a578063f2fde38b1461019a578063f3b7dead146101ba57600080fd5b80630e85e7bc14610096578063204e1c7a146100b85780635306c026146100f4578063715018a6146101145780637eff275e14610129575b600080fd5b3480156100a257600080fd5b506100b66100b136600461069d565b6101da565b005b3480156100c457600080fd5b506100d86100d3366004610771565b610246565b6040516001600160a01b03909116815260200160405180910390f35b34801561010057600080fd5b506100b661010f366004610795565b6102d7565b34801561012057600080fd5b506100b661031d565b34801561013557600080fd5b506100b66101443660046107de565b610331565b34801561015557600080fd5b506000546001600160a01b03166100d8565b6100b6610175366004610817565b610399565b34801561018657600080fd5b506100b66101953660046107de565b610408565b3480156101a657600080fd5b506100b66101b5366004610771565b61043e565b3480156101c657600080fd5b506100d86101d5366004610771565b6104bc565b6101e26104e2565b60405162c0585960e21b81526001600160a01b0384169063030161649061020f90859085906004016108d1565b600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b50505050505050565b6000806000836001600160a01b031660405161026c90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146102a7576040519150601f19603f3d011682016040523d82523d6000602084013e6102ac565b606091505b5091509150816102bb57600080fd5b808060200190518101906102cf919061095f565b949350505050565b6102df6104e2565b60405163215c7ded60e01b81526001600160e01b0319831660048201526001600160a01b03828116602483015284169063215c7ded9060440161020f565b6103256104e2565b61032f600061053c565b565b6103396104e2565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050505050565b6103a16104e2565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906103d1908690869060040161097c565b6000604051808303818588803b1580156103ea57600080fd5b505af11580156103fe573d6000803e3d6000fd5b5050505050505050565b6104106104e2565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610363565b6104466104e2565b6001600160a01b0381166104b05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6104b98161053c565b50565b6000806000836001600160a01b031660405161026c906303e1469160e61b815260040190565b6000546001600160a01b0316331461032f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146104b957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156105e0576105e06105a1565b604052919050565b600067ffffffffffffffff821115610602576106026105a1565b5060051b60200190565b80356001600160e01b03198116811461062457600080fd5b919050565b600082601f83011261063a57600080fd5b8135602061064f61064a836105e8565b6105b7565b82815260059290921b8401810191818101908684111561066e57600080fd5b8286015b848110156106925780356106858161058c565b8352918301918301610672565b509695505050505050565b6000806000606084860312156106b257600080fd5b83356106bd8161058c565b925060208481013567ffffffffffffffff808211156106db57600080fd5b818701915087601f8301126106ef57600080fd5b81356106fd61064a826105e8565b81815260059190911b8301840190848101908a83111561071c57600080fd5b938501935b82851015610741576107328561060c565b82529385019390850190610721565b96505050604087013592508083111561075957600080fd5b505061076786828701610629565b9150509250925092565b60006020828403121561078357600080fd5b813561078e8161058c565b9392505050565b6000806000606084860312156107aa57600080fd5b83356107b58161058c565b92506107c36020850161060c565b915060408401356107d38161058c565b809150509250925092565b600080604083850312156107f157600080fd5b82356107fc8161058c565b9150602083013561080c8161058c565b809150509250929050565b60008060006060848603121561082c57600080fd5b83356108378161058c565b92506020848101356108488161058c565b9250604085013567ffffffffffffffff8082111561086557600080fd5b818701915087601f83011261087957600080fd5b81358181111561088b5761088b6105a1565b61089d601f8201601f191685016105b7565b915080825288848285010111156108b357600080fd5b80848401858401376000848284010152508093505050509250925092565b604080825283519082018190526000906020906060840190828701845b828110156109145781516001600160e01b031916845292840192908401906001016108ee565b5050508381038285015284518082528583019183019060005b818110156109525783516001600160a01b03168352928401929184019160010161092d565b5090979650505050505050565b60006020828403121561097157600080fd5b815161078e8161058c565b60018060a01b038316815260006020604081840152835180604085015260005b818110156109b85785810183015185820160600152820161099c565b818111156109ca576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220bf86528dd75786dbe4621f5e5478c54a814a325f05a859cf935f66c824c2460c64736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d09190a35050565b610a168061007e6000396000f3fe6080604052600436106100915760003560e01c8063d366253d11610059578063d366253d1461014e578063d42d0f4f1461016e578063d86e29e21461018e578063db1fc60c146101a3578063e6495f69146101b657600080fd5b806316cad12a146100965780635089e2c8146100b85780635defeee3146100ee5780636c57245d1461010e578063bdec0a0b1461012e575b600080fd5b3480156100a257600080fd5b506100b66100b13660046105a0565b6101d6565b005b3480156100c457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b3480156100fa57600080fd5b506100d26101093660046105a0565b610255565b34801561011a57600080fd5b506100d26101293660046105a0565b6102e6565b34801561013a57600080fd5b506100b66101493660046106c0565b61030c565b34801561015a57600080fd5b506100b6610169366004610794565b610379565b34801561017a57600080fd5b506100b6610189366004610794565b6103e1565b34801561019a57600080fd5b506100b6610417565b6100b66101b13660046107cd565b61042b565b3480156101c257600080fd5b506100b66101d1366004610887565b61049a565b6101de6104e0565b6001600160a01b03811661024957604051636381e58960e11b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102528161053b565b50565b6000806000836001600160a01b031660405161027b90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146102b6576040519150601f19603f3d011682016040523d82523d6000602084013e6102bb565b606091505b5091509150816102ca57600080fd5b808060200190518101906102de91906108d0565b949350505050565b6000806000836001600160a01b031660405161027b906303e1469160e61b815260040190565b6103146104e0565b604051636398de5560e11b81526001600160a01b0384169063c731bcaa9061034290859085906004016108ed565b600060405180830381600087803b15801561035c57600080fd5b505af1158015610370573d6000803e3d6000fd5b50505050505050565b6103816104e0565b604051633a2a322560e21b81526001600160a01b03828116600483015283169063e8a8c894906024015b600060405180830381600087803b1580156103c557600080fd5b505af11580156103d9573d6000803e3d6000fd5b505050505050565b6103e96104e0565b60405163333b0add60e11b81526001600160a01b03828116600483015283169063667615ba906024016103ab565b61041f6104e0565b610429600061053b565b565b6104336104e0565b60405163207fa8b960e01b81526001600160a01b0384169063207fa8b9903490610463908690869060040161097b565b6000604051808303818588803b15801561047c57600080fd5b505af1158015610490573d6000803e3d6000fd5b5050505050505050565b6104a26104e0565b60405163b943fb0d60e01b81526001600160e01b0319831660048201526001600160a01b03828116602483015284169063b943fb0d90604401610342565b6000546001600160a01b0316331461042957604051636381e58960e11b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610240565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d09190a35050565b6001600160a01b038116811461025257600080fd5b6000602082840312156105b257600080fd5b81356105bd8161058b565b9392505050565b63b95aa35560e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610603576106036105c4565b604052919050565b600067ffffffffffffffff821115610625576106256105c4565b5060051b60200190565b80356001600160e01b03198116811461064757600080fd5b919050565b600082601f83011261065d57600080fd5b8135602061067261066d8361060b565b6105da565b82815260059290921b8401810191818101908684111561069157600080fd5b8286015b848110156106b55780356106a88161058b565b8352918301918301610695565b509695505050505050565b6000806000606084860312156106d557600080fd5b83356106e08161058b565b925060208481013567ffffffffffffffff808211156106fe57600080fd5b818701915087601f83011261071257600080fd5b813561072061066d8261060b565b81815260059190911b8301840190848101908a83111561073f57600080fd5b938501935b82851015610764576107558561062f565b82529385019390850190610744565b96505050604087013592508083111561077c57600080fd5b505061078a8682870161064c565b9150509250925092565b600080604083850312156107a757600080fd5b82356107b28161058b565b915060208301356107c28161058b565b809150509250929050565b6000806000606084860312156107e257600080fd5b83356107ed8161058b565b92506020848101356107fe8161058b565b9250604085013567ffffffffffffffff8082111561081b57600080fd5b818701915087601f83011261082f57600080fd5b813581811115610841576108416105c4565b610853601f8201601f191685016105da565b9150808252888482850101111561086957600080fd5b80848401858401376000848284010152508093505050509250925092565b60008060006060848603121561089c57600080fd5b83356108a78161058b565b92506108b56020850161062f565b915060408401356108c58161058b565b809150509250925092565b6000602082840312156108e257600080fd5b81516105bd8161058b565b604080825283519082018190526000906020906060840190828701845b828110156109305781516001600160e01b0319168452928401929084019060010161090a565b5050508381038285015284518082528583019183019060005b8181101561096e5783516001600160a01b031683529284019291840191600101610949565b5090979650505050505050565b60018060a01b038316815260006020604081840152835180604085015260005b818110156109b75785810183015185820160600152820161099b565b818111156109c9576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122075007fe7242b4f4d2022cacbaea1a174fc9a91a5a4a020f9ce1fbeea014fa5b864736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"selector\":[2130650974,3559722831],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"selector\":[4088913581,1817650269],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"selector\":[541990010,1576005347],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":4,\"value\":[0]}],\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"selector\":[2376452955,1351213768],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":4,\"value\":[0]}],\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"selector\":[1901074598,3631098338],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"contract IDREvidenceLogicMan\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"logicAddress\",\"type\":\"address\"}],\"name\":\"setSelector\",\"outputs\":[],\"selector\":[1392951334,3863568233],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"contract IDREvidenceLogicMan\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"},{\"internalType\":\"address[]\",\"name\":\"logicAddresses\",\"type\":\"address[]\"}],\"name\":\"setSelectors\",\"outputs\":[],\"selector\":[243656636,3186362891],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":4,\"value\":[0]}],\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"selector\":[4076725131,382390570],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"selector\":[2577960644,3546686781],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"selector\":[2518900893,3676292620],\"stateMutability\":\"payable\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_CHANGEPROXYADMIN = "changeProxyAdmin"; + + public static final String FUNC_GETPROXYADMIN = "getProxyAdmin"; + + public static final String FUNC_GETPROXYIMPLEMENTATION = "getProxyImplementation"; + + public static final String FUNC_OWNER = "owner"; + + public static final String FUNC_RENOUNCEOWNERSHIP = "renounceOwnership"; + + public static final String FUNC_SETSELECTOR = "setSelector"; + + public static final String FUNC_SETSELECTORS = "setSelectors"; + + public static final String FUNC_TRANSFEROWNERSHIP = "transferOwnership"; + + public static final String FUNC_UPGRADE = "upgrade"; + + public static final String FUNC_UPGRADEANDCALL = "upgradeAndCall"; + + public static final Event OWNERSHIPTRANSFERRED_EVENT = new Event("OwnershipTransferred", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + protected DREvProxyAdmin(String contractAddress, Client client, CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getOwnershipTransferredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(OWNERSHIPTRANSFERRED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public TransactionReceipt changeProxyAdmin(String proxy, String newAdmin) { + final Function function = new Function( + FUNC_CHANGEPROXYADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForChangeProxyAdmin(String proxy, String newAdmin) { + final Function function = new Function( + FUNC_CHANGEPROXYADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String changeProxyAdmin(String proxy, String newAdmin, TransactionCallback callback) { + final Function function = new Function( + FUNC_CHANGEPROXYADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getChangeProxyAdminInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_CHANGEPROXYADMIN, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public String getProxyAdmin(String proxy) throws ContractException { + final Function function = new Function(FUNC_GETPROXYADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy)), + Arrays.>asList(new TypeReference
() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public String getProxyImplementation(String proxy) throws ContractException { + final Function function = new Function(FUNC_GETPROXYIMPLEMENTATION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy)), + Arrays.>asList(new TypeReference
() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public String owner() throws ContractException { + final Function function = new Function(FUNC_OWNER, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public TransactionReceipt renounceOwnership() { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRenounceOwnership() { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String renounceOwnership(TransactionCallback callback) { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public TransactionReceipt setSelector(String proxy, byte[] selector, String logicAddress) { + final Function function = new Function( + FUNC_SETSELECTOR, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4(selector), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(logicAddress)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetSelector(String proxy, byte[] selector, + String logicAddress) { + final Function function = new Function( + FUNC_SETSELECTOR, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4(selector), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(logicAddress)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setSelector(String proxy, byte[] selector, String logicAddress, + TransactionCallback callback) { + final Function function = new Function( + FUNC_SETSELECTOR, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4(selector), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(logicAddress)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple3 getSetSelectorInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETSELECTOR, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple3( + + (String) results.get(0).getValue(), + (byte[]) results.get(1).getValue(), + (String) results.get(2).getValue() + ); + } + + public TransactionReceipt setSelectors(String proxy, List selectors, + List logicAddresses) { + final Function function = new Function( + FUNC_SETSELECTORS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(selectors, org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Address.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(logicAddresses, org.fisco.bcos.sdk.v3.codec.datatypes.Address.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetSelectors(String proxy, List selectors, + List logicAddresses) { + final Function function = new Function( + FUNC_SETSELECTORS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(selectors, org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Address.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(logicAddresses, org.fisco.bcos.sdk.v3.codec.datatypes.Address.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setSelectors(String proxy, List selectors, List logicAddresses, + TransactionCallback callback) { + final Function function = new Function( + FUNC_SETSELECTORS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(selectors, org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Address.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(logicAddresses, org.fisco.bcos.sdk.v3.codec.datatypes.Address.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple3, List> getSetSelectorsInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETSELECTORS, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple3, List>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()), + convertToNative((List
) results.get(2).getValue()) + ); + } + + public TransactionReceipt transferOwnership(String newOwner) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForTransferOwnership(String newOwner) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String transferOwnership(String newOwner, TransactionCallback callback) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getTransferOwnershipInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_TRANSFEROWNERSHIP, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt upgrade(String proxy, String implementation) { + final Function function = new Function( + FUNC_UPGRADE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForUpgrade(String proxy, String implementation) { + final Function function = new Function( + FUNC_UPGRADE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String upgrade(String proxy, String implementation, TransactionCallback callback) { + final Function function = new Function( + FUNC_UPGRADE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getUpgradeInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_UPGRADE, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt upgradeAndCall(String proxy, String implementation, byte[] data) { + final Function function = new Function( + FUNC_UPGRADEANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForUpgradeAndCall(String proxy, String implementation, + byte[] data) { + final Function function = new Function( + FUNC_UPGRADEANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String upgradeAndCall(String proxy, String implementation, byte[] data, + TransactionCallback callback) { + final Function function = new Function( + FUNC_UPGRADEANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple3 getUpgradeAndCallInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_UPGRADEANDCALL, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple3( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + (byte[]) results.get(2).getValue() + ); + } + + public static DREvProxyAdmin load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new DREvProxyAdmin(contractAddress, client, credential); + } + + public static DREvProxyAdmin deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(DREvProxyAdmin.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } + + public static class OwnershipTransferredEventResponse { + public TransactionReceipt.Logs log; + + public String previousOwner; + + public String newOwner; + } +} diff --git a/java/DREvidenceAdminController.java b/java/DREvidenceAdminController.java new file mode 100644 index 0000000000000000000000000000000000000000..85fd4aefa22f5a9beacc5ad63ac5ec19bcba801c --- /dev/null +++ b/java/DREvidenceAdminController.java @@ -0,0 +1,894 @@ +package com.btsi.contract; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class DREvidenceAdminController extends Contract { + public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b50611cf8806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063760b04dd116100de578063c0c41f2211610097578063d722b0bc11610071578063d722b0bc14610313578063e6a310ba14610328578063fc1dad811461033b578063fc4eb4821461034357600080fd5b8063c0c41f22146102e5578063ce3fb8ac146102f8578063d547741f1461030057600080fd5b8063760b04dd146102925780638129fc1c1461029a5780638a9019b3146102a257806391d14854146102b7578063936628c1146102ca578063a217fddf146102dd57600080fd5b806336568abe1161013057806336568abe1461022b57806336f5f45e1461023e5780633dd296b51461024657806347791208146102595780634cea35a61461026c57806350e12a461461027f57600080fd5b806301ffc9a7146101785780631b06b394146101a0578063248a9ca3146101b55780632f2ff15d146101e657806332d74327146101f957806335f6a6611461020e575b600080fd5b61018b6101863660046116ff565b610356565b60405190151581526020015b60405180910390f35b6101b36101ae366004611729565b61038d565b005b6101d86101c336600461174f565b60009081526065602052604090206001015490565b604051908152602001610197565b6101b36101f436600461177f565b6103f5565b6101d8600080516020611ca383398151915281565b61021661041f565b60405163ffffffff9091168152602001610197565b6101b361023936600461177f565b61048e565b6101b3610511565b6101b3610254366004611862565b61055e565b6101b3610267366004611946565b610600565b61018b61027a3660046119aa565b610617565b6101b361028d366004611729565b61069e565b6101b36106f6565b6101b3610745565b6102aa6109db565b6040516101979190611a3f565b61018b6102c536600461177f565b6109ec565b6101b36102d8366004611aa1565b610a17565b6101d8600081565b6101b36102f33660046119aa565b610bcc565b610216610c25565b6101b361030e36600461177f565b610c75565b61031b610c9a565b6040516101979190611ad6565b6102aa6103363660046119aa565b610cea565b610216610cf7565b6101b36103513660046119aa565b610d38565b60006001600160e01b03198216637965db0b60e01b148061038757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061039881610e01565b6040805180820190915260128152717374725f61727261795f6d61785f6c656e3d60701b60208201526103ef7f802f3fb6a2c692c8b19ddabbf91b97d98f374e06c6c98dbd2bc9216b344f4ebd5b60cf9085610e0b565b50505050565b60008281526065602052604090206001015461041081610e01565b61041a8383610e37565b505050565b6040805180820190915260128152717374725f61727261795f6d61785f6c656e3d60701b60208201526000906104887f802f3fb6a2c692c8b19ddabbf91b97d98f374e06c6c98dbd2bc9216b344f4ebd5b600090815260cf602052604090205463ffffffff1690565b91505090565b6001600160a01b03811633146105035760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61050d8282610ebd565b5050565b600061051c81610e01565b60408051808201909152601081526f636f6e74726f6c5f656e61626c65643d60801b602082015261041a60cf600080516020611c838339815191526001610e0b565b600061056981610e01565b60006001600160a01b03166097846040516105849190611ae9565b908152604051908190036020019020546001600160a01b0316141561041a576105bb600080516020611ca383398151915283610e37565b816097846040516105cc9190611ae9565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b600061060b81610e01565b61041a60c98484610f24565b6000806001600160a01b03166097836040516106339190611ae9565b908152604051908190036020019020546001600160a01b03161461069157610387600080516020611ca38339815191526097846040516106739190611ae9565b908152604051908190036020019020546001600160a01b03166109ec565b506000919050565b919050565b60006106a981610e01565b60408051808201909152600d81526c746578745f6d61785f6c656e3d60981b60208201526103ef7fbb3ebb9b986cc146045b82d588631c3d333f12f8cfcc730840a721f4b168ec876103e6565b600061070181610e01565b60408051808201909152601081526f636f6e74726f6c5f656e61626c65643d60801b602082015261041a600080516020611c838339815191525b60cf906000610e0b565b600054610100900460ff16158080156107655750600054600160ff909116105b8061077f5750303b15801561077f575060005460ff166001145b6107e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104fa565b6000805460ff191660011790558015610805576000805461ff0019166101001790555b6108106000336110e0565b6108376040518060400160405280600581526020016406269643a360dc1b8152503361055e565b60408051808201909152600b81526a636861696e5f6e616d653d60a81b60208201526108a37fa265df45ec192128b9ce24c4a92b917d70b2ca2690e1b749cdb371ab129004fc60408051808201909152600681526529b43aac34b760d11b602082015260ce91906110ea565b505060408051808201909152600d81526c746578745f6d61785f6c656e3d60981b60208201526108f760cf7fbb3ebb9b986cc146045b82d588631c3d333f12f8cfcc730840a721f4b168ec87611388610e0b565b50506040805180820190915260128152717374725f61727261795f6d61785f6c656e3d60701b602082015261095060cf7f802f3fb6a2c692c8b19ddabbf91b97d98f374e06c6c98dbd2bc9216b344f4ebd6103e8610e0b565b505060408051808201909152601081526f636f6e74726f6c5f656e61626c65643d60801b6020820152610990600080516020611c8383398151915261073b565b505080156109d8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60606109e760c9611111565b905090565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610a2281610e01565b6040805180820190915260148152733230ba30afb934b3b43a2fb1b0ba32b3b7b93c9d60611b6020909101527fb67aaf8c3d37a20d791807426a86a6bbc7b112706f57e87aecb8da95369575946000610a7c60cd83611174565b905060005b81518163ffffffff161015610b2657600060405180604001604052806018815260200177646174615f72696768745f63617465676f72793a6b65793d60401b81525090506000610af9878463ffffffff1681518110610ae257610ae2611b05565b60200260200101518361125890919063ffffffff16565b80516020909101209050610b1060cf826000610e0b565b5050508080610b1e90611b31565b915050610a81565b5060005b84518163ffffffff161015610bb857600060405180604001604052806018815260200177646174615f72696768745f63617465676f72793a6b65793d60401b81525090506000610b8b878463ffffffff1681518110610ae257610ae2611b05565b80516020909101209050610ba260cf826001610e0b565b5050508080610bb090611b31565b915050610b2a565b50610bc560cd8386611284565b5050505050565b6000610bd781610e01565b60408051808201909152600b81526a636861696e5f6e616d653d60a81b60208201526103ef60ce7fa265df45ec192128b9ce24c4a92b917d70b2ca2690e1b749cdb371ab129004fc856110ea565b60408051808201909152600d81526c746578745f6d61785f6c656e3d60981b60208201526000906104887fbb3ebb9b986cc146045b82d588631c3d333f12f8cfcc730840a721f4b168ec87610470565b600082815260656020526040902060010154610c9081610e01565b61041a8383610ebd565b60408051808201909152600b81526a636861696e5f6e616d653d60a81b602082015260609061048860ce7fa265df45ec192128b9ce24c4a92b917d70b2ca2690e1b749cdb371ab129004fc6112a0565b606061038760c983611343565b60408051808201909152601081526f636f6e74726f6c5f656e61626c65643d60801b6020820152600090610488600080516020611c83833981519152610470565b6000610d4381610e01565b60006001600160a01b0316609783604051610d5e9190611ae9565b908152604051908190036020019020546001600160a01b03161461050d57610dbc600080516020611ca3833981519152609784604051610d9e9190611ae9565b908152604051908190036020019020546001600160a01b0316610ebd565b6000609783604051610dce9190611ae9565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6109d881336113af565b6000828152602084905260409020805463ffffffff831663ffffffff1990911617905560019392505050565b610e4182826109ec565b61050d5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610e793390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610ec782826109ec565b1561050d5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610f6e6040518060400160405280602081526020017f3a7661726961626c655f646174613a737570706f727465645f66696c6564733d8152508461125890919063ffffffff16565b805160208201209091506000610f876004870183611174565b905060005b81518163ffffffff161015611028576000610fda604051806040016040528060128152602001717661726961626c655f646174613a6b65793d60701b8152508861125890919063ffffffff16565b9050600061","0ff9848463ffffffff1681518110610ae257610ae2611b05565b8051602090910120905061101260068a01826000610e0b565b505050808061102090611b31565b915050610f8c565b5060005b84518163ffffffff1610156110c857600061107a604051806040016040528060128152602001717661726961626c655f646174613a6b65793d60701b8152508861125890919063ffffffff16565b90506000611099878463ffffffff1681518110610ae257610ae2611b05565b805160209091012090506110b260068a01826001610e0b565b50505080806110c090611b31565b91505061102c565b506110d7600487018386611284565b50505050505050565b61050d8282610e37565b60008281526020848152604082208351611106928501906115b6565b506001949350505050565b6040805180820190915260148152733230ba30afb934b3b43a2fb1b0ba32b3b7b93c9d60611b60209091015260607fb67aaf8c3d37a20d791807426a86a6bbc7b112706f57e87aecb8da953695759461116d6004840182611174565b9392505050565b600081815260208381526040808320805482518185028101850190935280835260609492939192909184015b8282101561124c5783829060005260206000200180546111bf90611b55565b80601f01602080910402602001604051908101604052809291908181526020018280546111eb90611b55565b80156112385780601f1061120d57610100808354040283529160200191611238565b820191906000526020600020905b81548152906001019060200180831161121b57829003601f168201915b5050505050815260200190600101906111a0565b50505050905092915050565b6060828260405160200161126d929190611b90565b604051602081830303815290604052905092915050565b600082815260208481526040822083516111069285019061163a565b60008181526020839052604090208054606091906112bd90611b55565b80601f01602080910402602001604051908101604052809291908181526020018280546112e990611b55565b80156113365780601f1061130b57610100808354040283529160200191611336565b820191906000526020600020905b81548152906001019060200180831161131957829003601f168201915b5050505050905092915050565b6060600061138f6040518060400160405280602081526020017f3a7661726961626c655f646174613a737570706f727465645f66696c6564733d8152508461125890919063ffffffff16565b805160208201209091506113a66004860182611174565b95945050505050565b6113b982826109ec565b61050d576113c681611408565b6113d183602061141a565b6040516020016113e2929190611bbf565b60408051601f198184030181529082905262461bcd60e51b82526104fa91600401611ad6565b60606103876001600160a01b03831660145b60606000611429836002611c34565b611434906002611c53565b67ffffffffffffffff81111561144c5761144c6117ab565b6040519080825280601f01601f191660200182016040528015611476576020820181803683370190505b509050600360fc1b8160008151811061149157611491611b05565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106114c0576114c0611b05565b60200101906001600160f81b031916908160001a90535060006114e4846002611c34565b6114ef906001611c53565b90505b6001811115611567576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061152357611523611b05565b1a60f81b82828151811061153957611539611b05565b60200101906001600160f81b031916908160001a90535060049490941c9361156081611c6b565b90506114f2565b50831561116d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104fa565b8280546115c290611b55565b90600052602060002090601f0160209004810192826115e4576000855561162a565b82601f106115fd57805160ff191683800117855561162a565b8280016001018555821561162a579182015b8281111561162a57825182559160200191906001019061160f565b50611636929150611693565b5090565b828054828255906000526020600020908101928215611687579160200282015b8281111561168757825180516116779184916020909101906115b6565b509160200191906001019061165a565b506116369291506116a8565b5b808211156116365760008155600101611694565b808211156116365760006116bc82826116c5565b506001016116a8565b5080546116d190611b55565b6000825580601f106116e1575050565b601f0160209004906000526020600020908101906109d89190611693565b60006020828403121561171157600080fd5b81356001600160e01b03198116811461116d57600080fd5b60006020828403121561173b57600080fd5b813563ffffffff8116811461116d57600080fd5b60006020828403121561176157600080fd5b5035919050565b80356001600160a01b038116811461069957600080fd5b6000806040838503121561179257600080fd5b823591506117a260208401611768565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156117ea576117ea6117ab565b604052919050565b600082601f83011261180357600080fd5b813567ffffffffffffffff81111561181d5761181d6117ab565b611830601f8201601f19166020016117c1565b81815284602083860101111561184557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561187557600080fd5b823567ffffffffffffffff81111561188c57600080fd5b611898858286016117f2565b9250506117a260208401611768565b600082601f8301126118b857600080fd5b8135602067ffffffffffffffff808311156118d5576118d56117ab565b8260051b6118e48382016117c1565b93845285810183019383810190888611156118fe57600080fd5b84880192505b8583101561193a5782358481111561191c5760008081fd5b61192a8a87838c01016117f2565b8352509184019190840190611904565b98975050505050505050565b6000806040838503121561195957600080fd5b823567ffffffffffffffff8082111561197157600080fd5b61197d868387016117f2565b9350602085013591508082111561199357600080fd5b506119a0858286016118a7565b9150509250929050565b6000602082840312156119bc57600080fd5b813567ffffffffffffffff8111156119d357600080fd5b6119df848285016117f2565b949350505050565b60005b83811015611a025781810151838201526020016119ea565b838111156103ef5750506000910152565b60008151808452611a2b8160208601602086016119e7565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611a9457603f19888603018452611a82858351611a13565b94509285019290850190600101611a66565b5092979650505050505050565b600060208284031215611ab357600080fd5b813567ffffffffffffffff811115611aca57600080fd5b6119df848285016118a7565b60208152600061116d6020830184611a13565b60008251611afb8184602087016119e7565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681811415611b4b57611b4b611b1b565b6001019392505050565b600181811c90821680611b6957607f821691505b60208210811415611b8a57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611ba28184602088016119e7565b835190830190611bb68183602088016119e7565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611bf78160178501602088016119e7565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611c288160288401602088016119e7565b01602801949350505050565b6000816000190483118215151615611c4e57611c4e611b1b565b500290565b60008219821115611c6657611c66611b1b565b500190565b600081611c7a57611c7a611b1b565b50600019019056fe9dbfebaee4c898490164a8ab686838c633319f3806d3dea7cd93c1cfefb35e0722f59c2f02edbae5c421247f029fe3112c5a85f70b4a48f5d93b22ada9ea772ea2646970667358221220a8516846b2b958ce73ecd14455746cba1dbeba8421a3c9b72406512535063cda64736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b50611d04806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063a4ff64c2116100de578063c52a7b1211610097578063ea605f3d11610071578063ea605f3d14610309578063ea7eb79814610311578063fbd3f0bf14610324578063fd09e7d61461034757600080fd5b8063c52a7b12146102db578063de92755c146102ee578063e24df4fa1461030157600080fd5b8063a4ff64c214610262578063aa2ab25a14610275578063b5aed06f1461027d578063b6773ad8146102a0578063b70b2fbc146102b5578063c37fa93f146102c857600080fd5b80635472010b116101305780635472010b146101fc5780635ea854ef1461020f5780637181c35c1461022c578063728da5b3146102345780637c6dd5871461023c5780637f4d27b61461024f57600080fd5b80631673bbee1461017857806317d66dc8146101a15780631b3240b8146101b65780632b668b87146101cc57806345135492146101e15780634c9a1821146101e9575b600080fd5b61018b6101863660046117c2565b61035a565b6040516101989190611857565b60405180910390f35b6101b46101af3660046118d0565b61036d565b005b6101be600081565b604051908152602001610198565b6101d46103f1565b60405161019891906118fc565b6101b4610447565b6101b46101f736600461190f565b610499565b6101b461020a3660046118d0565b6104fc565b610217610521565b60405163ffffffff9091168152602001610198565b610217610585565b6102176105c6565b6101b461024a3660046119d4565b61061b565b6101b461025d366004611a09565b6107d0565b6101b46102703660046117c2565b6107e7565b6101b46108b0565b61029061028b3660046117c2565b6108ff565b6040519015158152602001610198565b6101be600080516020611caf83398151915281565b6101b46102c3366004611a6d565b610986565b6101b46102d636600461190f565b610a28565b6101b46102e93660046117c2565b610a85565b6102906102fc3660046118d0565b610ade565b61018b610b09565b6101b4610b1a565b61029061031f366004611ab2565b610db1565b6101be610332366004611adc565b60009081526065602052604090206001015490565b6101b46103553660046118d0565b610de6565b606061036760c983610e0b565b92915050565b6001600160a01b03811633146103e357604051636381e58960e11b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6103ed8282610e77565b5050565b60408051808201909152600b81526a636861696e5f6e616d653d60a81b602082015260609061044160ce7fc6dcc667e8a4adecaf7ec045ceb175ec1bc5aeff0fabf114f7d7e92ec6028d21610ede565b91505090565b600061045281610f81565b60408051808201909152601081526f636f6e74726f6c5f656e61626c65643d60801b602082015261049460cf600080516020611c8f8339815191526001610f8b565b505050565b60006104a481610f81565b60408051808201909152600d81526c746578745f6d61785f6c656e3d60981b60208201526104f67fb94ed1522660bcf87190b60edb89d36f5abe45df20f420179dc82bb4404e41a75b60cf9085610f8b565b50505050565b60008281526065602052604090206001015461051781610f81565b6104948383610fb7565b60408051808201909152600d81526c746578745f6d61785f6c656e3d60981b60208201526000906104417fb94ed1522660bcf87190b60edb89d36f5abe45df20f420179dc82bb4404e41a75b600090815260cf602052604090205463ffffffff1690565b60408051808201909152601081526f636f6e74726f6c5f656e61626c65643d60801b6020820152600090610441600080516020611c8f83398151915261056d565b6040805180820190915260128152717374725f61727261795f6d61785f6c656e3d60701b60208201526000906104417fd8d61f8b1cf1582bee15b4cf3c6d9d05ef2631b65c89d362e1057f698dc76afe61056d565b600061062681610f81565b6040805180820190915260148152733230ba30afb934b3b43a2fb1b0ba32b3b7b93c9d60611b6020909101527f1ef121f667bed00cfcfc37c32099dffa7438068261cb3a514d94636781844482600061068060cd8361103d565b905060005b81518163ffffffff16101561072a57600060405180604001604052806018815260200177646174615f72696768745f63617465676f72793a6b65793d60401b815250905060006106fd878463ffffffff16815181106106e6576106e6611af5565b60200260200101518361112190919063ffffffff16565b8051602090910120905061071460cf826000610f8b565b505050808061072290611b21565b915050610685565b5060005b84518163ffffffff1610156107bc57600060405180604001604052806018815260200177646174615f72696768745f63617465676f72793a6b65793d60401b8152509050600061078f878463ffffffff16815181106106e6576106e6611af5565b805160209091012090506107a660cf826001610f8b565b50505080806107b490611b21565b91505061072e565b506107c960cd838661114d565b5050505050565b60006107db81610f81565b61049460c98484611174565b60006107f281610f81565b60006001600160a01b031660978360405161080d9190611b45565b908152604051908190036020019020546001600160a01b0316146103ed5761086b600080516020611caf83398151915260978460405161084d9190611b45565b908152604051908190036020019020546001600160a01b0316610e77565b600060978360405161087d9190611b45565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b60006108bb81610f81565b60408051808201909152601081526f636f6e74726f6c5f656e61626c65643d60801b6020820152610494600080516020611c8f8339815191525b60cf906000610f8b565b6000806001600160a01b031660978360405161091b9190611b45565b908152604051908190036020019020546001600160a01b03161461097957610367600080516020611caf83398151915260978460405161095b9190611b45565b908152604051908190036020019020546001600160a01b0316610ade565b506000919050565b919050565b600061099181610f81565b60006001600160a01b03166097846040516109ac9190611b45565b908152604051908190036020019020546001600160a01b03161415610494576109e3600080516020611caf83398151915283610fb7565b816097846040516109f49190611b45565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6000610a3381610f81565b6040805180820190915260128152717374725f61727261795f6d61785f6c656e3d60701b60208201526104f67fd8d61f8b1cf1582bee15b4cf3c6d9d05ef2631b65c89d362e1057f698dc76afe6104ed565b6000610a9081610f81565b60408051808201909152600b81526a636861696e5f6e616d653d60a81b60208201526104f660ce7fc6dcc667e8a4adecaf7ec045ceb175ec1bc5aeff0fabf114f7d7e92ec6028d2185611330565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060610b1560c961134c565b905090565b600054610100900460ff1615808015610b3a5750600054600160ff909116105b80610b545750303b158015610b54575060005460ff166001145b610bb857604051636381e58960e11b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103da565b6000805460ff191660011790558015610bdb576000805461ff0019166101001790555b610be66000336113af565b610c0d6040518060400160405280600581526020016406269643a360dc1b81525033610986565b60408051808201909152600b81526a636861696e5f6e616d653d60a81b6020820152610c797fc6dcc667e8a4adecaf7ec045ceb175ec1bc5aeff0fabf114f7d7e92ec6028d2160408051808201909152600681526529b43aac34b760d11b602082015260ce9190611330565b505060408051808201909152600d81526c746578745f6d61785f6c656e3d60981b6020820152610ccd60cf7fb94ed1522660bcf87190b60edb89d36f5abe45df20f420179dc82bb4404e41a7611388610f8b565b50506040805180820190915260128152717374725f61727261795f6d61785f6c656e3d60701b6020820152610d2660cf7fd8d61f8b1cf1582bee15b4cf3c6d9d05ef2631b65c89d362e1057f698dc76afe6103e8610f8b565b505060408051808201909152601081526f636f6e74726f6c5f656e61626c65643d60801b6020820152610d66600080516020611c8f8339815191526108f5565b50508015610dae576000805461ff0019169055604051600181527f962aa9df107bcee798aa1cede27b2de7fab57a1daae7109874a9a9170136cbfa9060200160405180910390a15b50565b60006001600160e01b03198216634df6077b60e11b14806103675750631d4fd6f360e31b6001600160e01b0319831614610367565b600082815260656020526040902060010154610e0181610f81565b6104948383610e77565b60606000610e576040518060400160405280602081526020017f3a7661726961626c655f646174613a737570706f727465645f66696c6564733d8152508461112190919063ffffffff16565b80516020820120909150610e6e600486018261103d565b95945050505050565b610e818282610ade565b156103ed5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917fddf24a0d777ab37f0cd0acf6e2b0a75570d42c6500405e008f7f9a61836cf2a39190a45050565b6000818152602083905260409020805460609190610efb90611b61565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2790611b61565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b5050505050905092915050565b610dae81336113b9565b6000828152602084905260409020805463ffffffff831663ffffffff1990911617905560019392505050565b610fc18282610ade565b6103ed5760008281526065602090815260408083206001600160a01b0385","1684529091529020805460ff19166001179055610ff93390565b6001600160a01b0316816001600160a01b0316837f3a8c19c5eddb5ca7fdd091f00e2b3978b86344c928af4d2d7f6733572cc06b4c60405160405180910390a45050565b600081815260208381526040808320805482518185028101850190935280835260609492939192909184015b8282101561111557838290600052602060002001805461108890611b61565b80601f01602080910402602001604051908101604052809291908181526020018280546110b490611b61565b80156111015780601f106110d657610100808354040283529160200191611101565b820191906000526020600020905b8154815290600101906020018083116110e457829003601f168201915b505050505081526020019060010190611069565b50505050905092915050565b60608282604051602001611136929190611b9c565b604051602081830303815290604052905092915050565b60008281526020848152604082208351611169928501906115c2565b506001949350505050565b60006111be6040518060400160405280602081526020017f3a7661726961626c655f646174613a737570706f727465645f66696c6564733d8152508461112190919063ffffffff16565b8051602082012090915060006111d7600487018361103d565b905060005b81518163ffffffff16101561127857600061122a604051806040016040528060128152602001717661726961626c655f646174613a6b65793d60701b8152508861112190919063ffffffff16565b90506000611249848463ffffffff16815181106106e6576106e6611af5565b8051602090910120905061126260068a01826000610f8b565b505050808061127090611b21565b9150506111dc565b5060005b84518163ffffffff1610156113185760006112ca604051806040016040528060128152602001717661726961626c655f646174613a6b65793d60701b8152508861112190919063ffffffff16565b905060006112e9878463ffffffff16815181106106e6576106e6611af5565b8051602090910120905061130260068a01826001610f8b565b505050808061131090611b21565b91505061127c565b5061132760048701838661114d565b50505050505050565b600082815260208481526040822083516111699285019061161f565b6040805180820190915260148152733230ba30afb934b3b43a2fb1b0ba32b3b7b93c9d60611b60209091015260607f1ef121f667bed00cfcfc37c32099dffa7438068261cb3a514d946367818444826113a8600484018261103d565b9392505050565b6103ed8282610fb7565b6113c38282610ade565b6103ed576113d081611413565b6113db836020611425565b6040516020016113ec929190611bcb565b60408051601f1981840301815290829052636381e58960e11b82526103da916004016118fc565b60606103676001600160a01b03831660145b60606000611434836002611c40565b61143f906002611c5f565b67ffffffffffffffff8111156114575761145761170b565b6040519080825280601f01601f191660200182016040528015611481576020820181803683370190505b509050600360fc1b8160008151811061149c5761149c611af5565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106114cb576114cb611af5565b60200101906001600160f81b031916908160001a90535060006114ef846002611c40565b6114fa906001611c5f565b90505b6001811115611572576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061152e5761152e611af5565b1a60f81b82828151811061154457611544611af5565b60200101906001600160f81b031916908160001a90535060049490941c9361156b81611c77565b90506114fd565b5083156113a857604051636381e58960e11b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016103da565b82805482825590600052602060002090810192821561160f579160200282015b8281111561160f57825180516115ff91849160209091019061161f565b50916020019190600101906115e2565b5061161b92915061169f565b5090565b82805461162b90611b61565b90600052602060002090601f01602090048101928261164d5760008555611693565b82601f1061166657805160ff1916838001178555611693565b82800160010185558215611693579182015b82811115611693578251825591602001919060010190611678565b5061161b9291506116bc565b8082111561161b5760006116b382826116d1565b5060010161169f565b5b8082111561161b57600081556001016116bd565b5080546116dd90611b61565b6000825580601f106116ed575050565b601f016020900490600052602060002090810190610dae91906116bc565b63b95aa35560e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561174a5761174a61170b565b604052919050565b600082601f83011261176357600080fd5b813567ffffffffffffffff81111561177d5761177d61170b565b611790601f8201601f1916602001611721565b8181528460208386010111156117a557600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156117d457600080fd5b813567ffffffffffffffff8111156117eb57600080fd5b6117f784828501611752565b949350505050565b60005b8381101561181a578181015183820152602001611802565b838111156104f65750506000910152565b600081518084526118438160208601602086016117ff565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118ac57603f1988860301845261189a85835161182b565b9450928501929085019060010161187e565b5092979650505050505050565b80356001600160a01b038116811461098157600080fd5b600080604083850312156118e357600080fd5b823591506118f3602084016118b9565b90509250929050565b6020815260006113a8602083018461182b565b60006020828403121561192157600080fd5b813563ffffffff811681146113a857600080fd5b600082601f83011261194657600080fd5b8135602067ffffffffffffffff808311156119635761196361170b565b8260051b611972838201611721565b938452858101830193838101908886111561198c57600080fd5b84880192505b858310156119c8578235848111156119aa5760008081fd5b6119b88a87838c0101611752565b8352509184019190840190611992565b98975050505050505050565b6000602082840312156119e657600080fd5b813567ffffffffffffffff8111156119fd57600080fd5b6117f784828501611935565b60008060408385031215611a1c57600080fd5b823567ffffffffffffffff80821115611a3457600080fd5b611a4086838701611752565b93506020850135915080821115611a5657600080fd5b50611a6385828601611935565b9150509250929050565b60008060408385031215611a8057600080fd5b823567ffffffffffffffff811115611a9757600080fd5b611aa385828601611752565b9250506118f3602084016118b9565b600060208284031215611ac457600080fd5b81356001600160e01b0319811681146113a857600080fd5b600060208284031215611aee57600080fd5b5035919050565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052601160045260246000fd5b600063ffffffff80831681811415611b3b57611b3b611b0b565b6001019392505050565b60008251611b578184602087016117ff565b9190910192915050565b600181811c90821680611b7557607f821691505b60208210811415611b965763b95aa35560e01b600052602260045260246000fd5b50919050565b60008351611bae8184602088016117ff565b835190830190611bc28183602088016117ff565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c038160178501602088016117ff565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611c348160288401602088016117ff565b01602801949350505050565b6000816000190483118215151615611c5a57611c5a611b0b565b500290565b60008219821115611c7257611c72611b0b565b500190565b600081611c8657611c86611b0b565b50600019019056fee4f23932eff8c7a5c12e0a6fb9b7dc66fcf815724641a77260df59fd307f9a64cda5c054d055f48a2866e1a28d72f8145e422f1db1872bc4c9fe2888702c9f8da2646970667358221220f0e2f04db5d4eac6dfb2f6aef6871deda9f36c89ac6b95f9b035000c8110306564736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"NewReviewEvidenceStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"name\":\"NewRightEvidenceStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"usci\",\"type\":\"string\"}],\"name\":\"UserCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"UserRoleChanged\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[2719481311,456278200],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"USERMANAGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[852968231,3061267160],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":207,\"value\":[157,191,235,174,228,200,152,73,1,100,168,171,104,104,56,198,51,49,159,56,6,211,222,167,205,147,193,207,239,179,94,7]}],\"inputs\":[],\"name\":\"disableAccessControl\",\"outputs\":[],\"selector\":[1980433629,2854924890],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":207,\"value\":[157,191,235,174,228,200,152,73,1,100,168,171,104,104,56,198,51,49,159,56,6,211,222,167,205,147,193,207,239,179,94,7]}],\"inputs\":[],\"name\":\"enableAccessControl\",\"outputs\":[],\"selector\":[922088542,1158894738],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":4,\"slot\":207,\"value\":[157,191,235,174,228,200,152,73,1,100,168,171,104,104,56,198,51,49,159,56,6,211,222,167,205,147,193,207,239,179,94,7]}],\"inputs\":[],\"name\":\"getAccessControl\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"status\",\"type\":\"uint32\"}],\"selector\":[4229803393,1904329564],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":206,\"value\":[162,101,223,69,236,25,33,40,185,206,36,196,169,43,145,125,112,178,202,38,144,225,183,73,205,179,113,171,18,144,4,252]}],\"inputs\":[],\"name\":\"getChainName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"selector\":[3609374908,728140679],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":205,\"value\":[182,122,175,140,61,55,162,13,121,24,7,66,106,134,166,187,199,177,18,112,111,87,232,122,236,184,218,149,54,149,117,148]}],\"inputs\":[],\"name\":\"getDataRightCategory\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"selector\":[2324699571,3796759802],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[613063843,4224970943],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"}],\"name\":\"getSupportVariableDataFields\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"fileds\",\"type\":\"string[]\"}],\"selector\":[3869446330,376683502],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":4,\"slot\":207,\"value\":[187,62,187,155,152,108,193,70,4,91,130,213,136,99,28,61,51,63,18,248,207,204,115,8,64,167,33,244,177,104,236,135]}],\"inputs\":[],\"name\":\"getTextMaxLen\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"len\",\"type\":\"uint32\"}],\"selector\":[3460282540,1588090095],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":4,\"slot\":207,\"value\":[128,47,63,182,162,198,146,200,177,157,218,187,249,27,151,217,143,55,78,6,198,201,141,189,43,201,33,107,52,79,78,189]}],\"inputs\":[],\"name\":\"getstrArrayMaxLen\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"len\",\"type\":\"uint32\"}],\"selector\":[905356897,1921885619],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"selector\":[791671133,1416757515],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"grantUserManagePermission\",\"outputs\":[],\"selector\":[1037211317,3070963644],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[2446411860,3734140252],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":101,\"value\":[34,245,156,47,2,237,186,229,196,33,36,127,2,159,227,17,44,90,133,247,11,74,72,245,217,59,34,173,169,234,119,46]}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"hasUserManageRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[1290417574,3048132719],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":2,\"slot\":101,\"value\":[0]},{\"kind\":4,\"value\":[0]},{\"kind\":4,\"slot\":207,\"value\":[128,47,63,182,162,198,146,200,177,157,218,187,249,27,151,217,143,55,78,6,198,201,141,189,43,201,33,107,52,79,78,189]},{\"kind\":4,\"slot\":207,\"value\":[157,191,235,174,228,200,152,73,1,100,168,171,104,104,56,198,51,49,159,56,6,211,222,167,205,147,193,207,239,179,94,7]},{\"kind\":4,\"slot\":207,\"value\":[187,62,187,155,152,108,193,70,4,91,130,213,136,99,28,61,51,63,18,248,207,204,115,8,64,167,33,244,177,104,236,135]}],\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"selector\":[2167012380,3932184381],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"selector\":[911641278,399928776],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"selector\":[3578229791,4245284822],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}]",",\"name\":\"revokeUserManagePermission\",\"outputs\":[],\"selector\":[4233016450,2768200898],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setChainName\",\"outputs\":[],\"selector\":[3234078498,3307895570],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":205,\"value\":[182,122,175,140,61,55,162,13,121,24,7,66,106,134,166,187,199,177,18,112,111,87,232,122,236,184,218,149,54,149,117,148]}],\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"setDataRightCategory\",\"outputs\":[],\"selector\":[2472945857,2087572871],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"setDataRightSupportVariableDataFields\",\"outputs\":[],\"selector\":[1199116808,2135762870],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":207,\"value\":[187,62,187,155,152,108,193,70,4,91,130,213,136,99,28,61,51,63,18,248,207,204,115,8,64,167,33,244,177,104,236,135]}],\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"len\",\"type\":\"uint32\"}],\"name\":\"setTextMaxLen\",\"outputs\":[],\"selector\":[1356933702,1285167137],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":207,\"value\":[128,47,63,182,162,198,146,200,177,157,218,187,249,27,151,217,143,55,78,6,198,201,141,189,43,201,33,107,52,79,78,189]}],\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"len\",\"type\":\"uint32\"}],\"name\":\"setstrArrayMaxLen\",\"outputs\":[],\"selector\":[453424020,3279923519],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[33540519,3934173080],\"stateMutability\":\"view\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_DEFAULT_ADMIN_ROLE = "DEFAULT_ADMIN_ROLE"; + + public static final String FUNC_USERMANAGE_ROLE = "USERMANAGE_ROLE"; + + public static final String FUNC_DISABLEACCESSCONTROL = "disableAccessControl"; + + public static final String FUNC_ENABLEACCESSCONTROL = "enableAccessControl"; + + public static final String FUNC_GETACCESSCONTROL = "getAccessControl"; + + public static final String FUNC_GETCHAINNAME = "getChainName"; + + public static final String FUNC_GETDATARIGHTCATEGORY = "getDataRightCategory"; + + public static final String FUNC_GETROLEADMIN = "getRoleAdmin"; + + public static final String FUNC_GETSUPPORTVARIABLEDATAFIELDS = "getSupportVariableDataFields"; + + public static final String FUNC_GETTEXTMAXLEN = "getTextMaxLen"; + + public static final String FUNC_GETSTRARRAYMAXLEN = "getstrArrayMaxLen"; + + public static final String FUNC_GRANTROLE = "grantRole"; + + public static final String FUNC_GRANTUSERMANAGEPERMISSION = "grantUserManagePermission"; + + public static final String FUNC_HASROLE = "hasRole"; + + public static final String FUNC_HASUSERMANAGEROLE = "hasUserManageRole"; + + public static final String FUNC_INITIALIZE = "initialize"; + + public static final String FUNC_RENOUNCEROLE = "renounceRole"; + + public static final String FUNC_REVOKEROLE = "revokeRole"; + + public static final String FUNC_REVOKEUSERMANAGEPERMISSION = "revokeUserManagePermission"; + + public static final String FUNC_SETCHAINNAME = "setChainName"; + + public static final String FUNC_SETDATARIGHTCATEGORY = "setDataRightCategory"; + + public static final String FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS = "setDataRightSupportVariableDataFields"; + + public static final String FUNC_SETTEXTMAXLEN = "setTextMaxLen"; + + public static final String FUNC_SETSTRARRAYMAXLEN = "setstrArrayMaxLen"; + + public static final String FUNC_SUPPORTSINTERFACE = "supportsInterface"; + + public static final Event INITIALIZED_EVENT = new Event("Initialized", + Arrays.>asList(new TypeReference() {})); + ; + + public static final Event NEWREVIEWEVIDENCESTORED_EVENT = new Event("NewReviewEvidenceStored", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event NEWRIGHTEVIDENCESTORED_EVENT = new Event("NewRightEvidenceStored", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEADMINCHANGED_EVENT = new Event("RoleAdminChanged", + Arrays.>asList(new TypeReference(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEGRANTED_EVENT = new Event("RoleGranted", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event ROLEREVOKED_EVENT = new Event("RoleRevoked", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event USERCREATED_EVENT = new Event("UserCreated", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event USERROLECHANGED_EVENT = new Event("UserRoleChanged", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + protected DREvidenceAdminController(String contractAddress, Client client, + CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getInitializedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(INITIALIZED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + InitializedEventResponse typedResponse = new InitializedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.version = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getNewReviewEvidenceStoredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(NEWREVIEWEVIDENCESTORED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + NewReviewEvidenceStoredEventResponse typedResponse = new NewReviewEvidenceStoredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.udri = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.index = (BigInteger) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getNewRightEvidenceStoredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(NEWRIGHTEVIDENCESTORED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + NewRightEvidenceStoredEventResponse typedResponse = new NewRightEvidenceStoredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.udri = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleAdminChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEADMINCHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleAdminChangedEventResponse typedResponse = new RoleAdminChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.previousAdminRole = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.newAdminRole = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleGrantedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEGRANTED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleGrantedEventResponse typedResponse = new RoleGrantedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleRevokedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEREVOKED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleRevokedEventResponse typedResponse = new RoleRevokedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUserCreatedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(USERCREATED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UserCreatedEventResponse typedResponse = new UserCreatedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.bid = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.usci = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUserRoleChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(USERROLECHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UserRoleChangedEventResponse typedResponse = new UserRoleChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.bid = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public byte[] DEFAULT_ADMIN_ROLE() throws ContractException { + final Function function = new Function(FUNC_DEFAULT_ADMIN_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public byte[] USERMANAGE_ROLE() throws ContractException { + final Function function = new Function(FUNC_USERMANAGE_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public TransactionReceipt disableAccessControl() { + final Function function = new Function( + FUNC_DISABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForDisableAccessControl() { + final Function function = new Function( + FUNC_DISABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String disableAccessControl(TransactionCallback callback) { + final Function function = new Function( + FUNC_DISABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public TransactionReceipt enableAccessControl() { + final Function function = new Function( + FUNC_ENABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForEnableAccessControl() { + final Function function = new Function( + FUNC_ENABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String enableAccessControl(TransactionCallback callback) { + final Function function = new Function( + FUNC_ENABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public BigInteger getAccessControl() throws ContractException { + final Function function = new Function(FUNC_GETACCESSCONTROL, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public String getChainName() throws ContractException { + final Function function = new Function(FUNC_GETCHAINNAME, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public List getDataRightCategory() throws ContractException { + final Function function = new Function(FUNC_GETDATARIGHTCATEGORY, + Arrays.asList(), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public byte[] getRoleAdmin(byte[] role) throws ContractException { + final Function function = new Function(FUNC_GETROLEADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public List getSupportVariableDataFields(String category) throws ContractException { + final Function function = new Function(FUNC_GETSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(category)), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public BigInteger getTextMaxLen() throws ContractException { + final Function function = new Function(FUNC_GETTEXTMAXLEN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public BigInteger getstrArrayMaxLen() throws ContractException { + final Function function = new Function(FUNC_GETSTRARRAYMAXLEN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public TransactionReceipt grantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String grantRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt grantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserManagePermission(String bid, String user, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public Boolean hasRole(byte[] role, String account) throws ContractException { + final Function function = new Function(FUNC_HASROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public Boolean hasUserManageRole(String bid) throws ContractException { + final Function function = new Function(FUNC_HASUSERMANAGEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public TransactionReceipt initialize() { + final Function function = new Function( + FUNC_INITIALIZE, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForInitialize() { + final Function function = new Function( + FUNC_INITIALIZE, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String initialize(TransactionCallback callback) { + final Function function = new Function( + FUNC_INITIALIZE, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public TransactionReceipt renounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRenounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String renounceRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRenounceRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_RENOUNCEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String revokeRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRevokeRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeUserManagePermission(String bid, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getRevokeUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt setChainName(String name) { + final Function function = new Function( + FUNC_SETCHAINNAME, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForSetChainName(String name) { + final Function function = new Function( + FUNC_SETCHAINNAME, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String setChainName(String name, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETCHAINNAME, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getSetChainNameInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETCHAINNAME, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt setDataRightCategory(List fields) { + final Function function = new Function( + FUNC_SETDATARIGHTCATEGORY, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetDataRightCategory(List fields) { + final Function function = new Function( + FUNC_SETDATARIGHTCATEGORY, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setDataRightCategory(List fields, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETDATARIGHTCATEGORY, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1> getSetDataRightCategoryInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETDATARIGHTCATEGORY, + Arrays.asList(), + Arrays.>asList(new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1>( + + convertToNative((List) results.get(0).getValue()) + ); + } + + public TransactionReceipt setDataRightSupportVariableDataFields(String category, + List fields) { + final Function function = new Function( + FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(category), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForSetDataRightSupportVariableDataFields(String category, + List fields) { + final Function function = new Function( + FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(category), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String setDataRightSupportVariableDataFields(String category, List fields, + TransactionCallback callback) { + final Function function = new Function( + FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(category), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getSetDataRightSupportVariableDataFieldsInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public TransactionReceipt setTextMaxLen(BigInteger len) { + final Function function = new Function( + FUNC_SETTEXTMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetTextMaxLen(BigInteger len) { + final Function function = new Function( + FUNC_SETTEXTMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setTextMaxLen(BigInteger len, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETTEXTMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getSetTextMaxLenInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETTEXTMAXLEN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (BigInteger) results.get(0).getValue() + ); + } + + public TransactionReceipt setstrArrayMaxLen(BigInteger len) { + final Function function = new Function( + FUNC_SETSTRARRAYMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetstrArrayMaxLen(BigInteger len) { + final Function function = new Function( + FUNC_SETSTRARRAYMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setstrArrayMaxLen(BigInteger len, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETSTRARRAYMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getSetstrArrayMaxLenInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETSTRARRAYMAXLEN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (BigInteger) results.get(0).getValue() + ); + } + + public Boolean supportsInterface(byte[] interfaceId) throws ContractException { + final Function function = new Function(FUNC_SUPPORTSINTERFACE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4(interfaceId)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public static DREvidenceAdminController load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new DREvidenceAdminController(contractAddress, client, credential); + } + + public static DREvidenceAdminController deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(DREvidenceAdminController.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } + + public static class InitializedEventResponse { + public TransactionReceipt.Logs log; + + public BigInteger version; + } + + public static class NewReviewEvidenceStoredEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] udri; + + public BigInteger index; + } + + public static class NewRightEvidenceStoredEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] udri; + } + + public static class RoleAdminChangedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public byte[] previousAdminRole; + + public byte[] newAdminRole; + } + + public static class RoleGrantedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class RoleRevokedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class UserCreatedEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] bid; + + public byte[] usci; + } + + public static class UserRoleChangedEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] bid; + } +} diff --git a/java/DREvidenceReviewController.java b/java/DREvidenceReviewController.java new file mode 100644 index 0000000000000000000000000000000000000000..8266512f78e4a350f8f2b2484ebbcb0edd331594 --- /dev/null +++ b/java/DREvidenceReviewController.java @@ -0,0 +1,725 @@ +package com.btsi.contract; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple3; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple4; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple5; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class DREvidenceReviewController extends Contract { + public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b5061362c806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063588f695d116100a2578063a217fddf11610071578063a217fddf1461024a578063d547741f14610252578063e694773114610265578063efddd7f814610278578063fc4eb4821461028b57600080fd5b8063588f695d146101df5780635edea296146101f25780636e963a591461021457806391d148541461023757600080fd5b806336568abe116100de57806336568abe14610193578063378d85fa146101a65780633dd296b5146101b95780634cea35a6146101cc57600080fd5b806301ffc9a714610110578063248a9ca3146101385780632f2ff15d1461016957806332d743271461017e575b600080fd5b61012361011e366004612c52565b61029e565b60405190151581526020015b60405180910390f35b61015b610146366004612c7c565b60009081526065602052604090206001015490565b60405190815260200161012f565b61017c610177366004612cac565b6102d5565b005b61015b6000805160206135d783398151915281565b61017c6101a1366004612cac565b6102ff565b61017c6101b4366004612d8d565b610382565b61017c6101c7366004612df0565b6103b7565b6101236101da366004612e34565b610459565b61015b6101ed366004612ea9565b6104e0565b610205610200366004612efe565b6104f5565b60405161012f9392919061302b565b610227610222366004613062565b61051a565b60405161012f94939291906130b5565b610123610245366004612cac565b61053e565b61015b600081565b61017c610260366004612cac565b610569565b61015b610273366004613101565b61058e565b61017c61028636600461320a565b6105a7565b61017c610299366004612e34565b61060a565b60006001600160e01b03198216637965db0b60e01b14806102cf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000828152606560205260409020600101546102f0816106d3565b6102fa83836106e0565b505050565b6001600160a01b03811633146103745760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61037e8282610766565b5050565b6103ab604051806040016040528060088152602001673932bb34b2bbb2b960c11b8152506107cd565b61037e60c98383610924565b60006103c2816106d3565b60006001600160a01b03166097846040516103dd91906132db565b908152604051908190036020019020546001600160a01b031614156102fa576104146000805160206135d7833981519152836106e0565b8160978460405161042591906132db565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6000806001600160a01b031660978360405161047591906132db565b908152604051908190036020019020546001600160a01b0316146104d3576102cf6000805160206135d78339815191526097846040516104b591906132db565b908152604051908190036020019020546001600160a01b031661053e565b506000919050565b919050565b60006104ee60c98484610aa7565b9392505050565b600060608061050960c98989898989610bb0565b925092509250955095509592505050565b60006060808061052d60c9888888610e5f565b935093509350935093509350935093565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600082815260656020526040902060010154610584816106d3565b6102fa8383610766565b600061059e60c9868686866110b9565b95945050505050565b6105d0604051806040016040528060088152602001673932bb34b2bbb2b960c11b8152506107cd565b6105df60c9868686868661120d565b60006105ec60c9876115c1565b9050610602866105fd60018461330d565b611635565b505050505050565b6000610615816106d3565b60006001600160a01b031660978360405161063091906132db565b908152604051908190036020019020546001600160a01b03161461037e5761068e6000805160206135d783398151915260978460405161067091906132db565b908152604051908190036020019020546001600160a01b0316610766565b60006097836040516106a091906132db565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6106dd8133611680565b50565b6106ea828261053e565b61037e5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556107223390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610770828261053e565b1561037e5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000806107db60c9336116d9565b90925090506001821515146108325760405162461bcd60e51b815260206004820152601960248201527f53656e646572206973206e6f7420726567697374657265642e00000000000000604482015260640161036b565b600061083f60c983611791565b90506108b860405180604001604052806005815260200164195e1a5cdd60da1b8152506108b26108a861089d886040518060400160405280600a8152602001693ab9b2b92fb937b6329d60b11b8152506117bb90919063ffffffff16565b805160209091012090565b60068501906117e7565b9061188a565b151560011461091e5760405162461bcd60e51b815260206004820152602c60248201527f5573657220776974686f757420636f72726573706f6e64696e6720726f6c652060448201526b3832b936b4b9b9b4b7b7399760a11b606482015260840161036b565b50505050565b61092e83836118af565b151560011461094f5760405162461bcd60e51b815260040161036b90613332565b6040805180820190915260058152641c9a59da1d60da1b602082015260009061097890846117bb565b80519060200120905060006109bc6040518060400160405280600e81526020016d3a7265766965775f636f756e743d60901b815250846117bb90919063ffffffff16565b905060006109cb86848461190a565b905060005b8163ffffffff168163ffffffff161015610a9e576000610a2e6109f88363ffffffff1661196b565b60408051808201909152600e81526d1d3932bb34b2bb9d34b73232bc1d60911b6020820152610a289089906117bb565b906117bb565b90506000610a3d898784611a07565b9050610a8989826040518060400160405280600681526020016573746174757360d01b81525060405180604001604052806008815260200167191a5cd8589b195960c21b815250611a68565b50508080610a969061335e565b9150506109d0565b50505050505050565b6000610ae98484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118af92505050565b1515600114610b0a5760405162461bcd60e51b815260040161036b90613332565b6000610b6884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260058152641c9a59da1d60da1b6020820152929150506117bb565b805190602001209050610ba185826040518060400160405280600d81526020016c7265766965775f636f756e743d60981b81525061190a565b63ffffffff1695945050505050565b6000606080610bf58989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118af92505050565b1515600114610c165760405162461bcd60e51b815260040161036b90613332565b6000610c7489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260058152641c9a59da1d60da1b6020820152929150506117bb565b8051906020012090506000610cf28b83610ced6040518060400160405280600e81526020016d3a7265766965775f636f756e743d60901b8152508c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506117bb9050565b61190a565b90508063ffffffff168663ffffffff1610610d3f5760405162461bcd60e51b815260206004820152600d60248201526c0d2dcecc2d8d2c840d2dcc8caf609b1b604482015260640161036b565b6000610dc68c84610dc1610d588b63ffffffff1661196b565b610a286040518060400160405280600e81526020016d1d3932bb34b2bb9d34b73232bc1d60911b8152508f8f8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506117bb9050565b611a07565b9050600080610dd58e84611a97565b9350935050506000610e068f856040518060400160405280600681526020016573746174757360d01b815250611c31565b9050610e3b60405180604001604052806008815260200167191a5cd8589b195960c21b8152508261188a90919063ffffffff16565b9850819750610e4b8f8585611c8b565b965050505050505096509650969350505050565b60006060806060610ea68888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118af92505050565b1515600114610ec75760405162461bcd60e51b815260040161036b90613332565b6000610f2588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260058152641c9a59da1d60da1b6020820152929150506117bb565b8051906020012090506000610f608a836040518060400160405280600d81526020016c7265766965775f636f756e743d60981b81525061190a565b90508063ffffffff168763ffffffff1610610fae5760405162461bcd60e51b815260206004820152600e60248201526d0d2d2dcecc2d8d2c840d2dcc8caf60931b604482015260640161036b565b6000610ff18b84610dc1610fc78c63ffffffff1661196b565b60408051808201909152600d81526c3932bb34b2bb9d34b7","3232bc1d60991b6020820152906117bb565b90506110218b826040518060400160405280600b81526020016a1c995d9a595dd95c909a5960aa1b815250611c31565b95506000806110308d84611a97565b93509350505060006110618e856040518060400160405280600681526020016573746174757360d01b815250611c31565b905061109660405180604001604052806008815260200167191a5cd8589b195960c21b8152508261188a90919063ffffffff16565b99508197506110a68e8585611c8b565b9650505050505050945094509450949050565b60006110fb8686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118af92505050565b151560011461111c5760405162461bcd60e51b815260040161036b90613332565b600061117a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260058152641c9a59da1d60da1b6020820152929150506117bb565b80519060200120905060006111ee6040518060400160405280600e81526020016d3a7265766965775f636f756e743d60901b81525086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506117bb9050565b90506111fb88838361190a565b63ffffffff1698975050505050505050565b6112178685611ee3565b61122186866118af565b15156001146112425760405162461bcd60e51b815260040161036b90613332565b6040805180820190915260058152641c9a59da1d60da1b602082015260009061126b90876117bb565b80519060200120905060006112a7876040518060400160405280600681526020016572657669657760d01b8152506117bb90919063ffffffff16565b905060005b85518163ffffffff161015611301576112ed868263ffffffff16815181106112d6576112d6613382565b6020026020010151836117bb90919063ffffffff16565b9150806112f98161335e565b9150506112ac565b5060008180519060200120905061133889826040518060400160405280600681526020016572657669657760d01b81525088611f7b565b61137b8982604051806040016040528060078152602001663b32b939b4b7b760c91b8152506040518060600160405280603681526020016135a160369139611a68565b6113a38982604051806040016040528060048152602001637564726960e01b8152508b611a68565b6113d289826040518060400160405280600b81526020016a1c995d9a595dd95c909a5960aa1b8152508a611a68565b61140489826040518060400160405280600e81526020016d0e4caecd2caee88c2e8c290c2e6d60931b8152508961204e565b600061143f6040518060400160405280600e81526020016d3a7265766965775f636f756e743d60901b815250896117bb90919063ffffffff16565b9050600061144e8b868461190a565b90506114668b8684611461856001613398565b612081565b6114b38b866114ad61147d8563ffffffff1661196b565b60408051808201909152600e81526d1d3932bb34b2bb9d34b73232bc1d60911b6020820152610a28908f906117bb565b866120b4565b6114e38b866040518060400160405280600d81526020016c7265766965775f636f756e743d60981b81525061190a565b905061151d8b866040518060400160405280600d81526020016c7265766965775f636f756e743d60981b8152508460016114619190613398565b6115348b866114ad610fc78563ffffffff1661196b565b61153f8b8a856120e7565b6115698b846040518060400160405280600681526020016572657669657760d01b81525089612238565b600061159f6115778561239d565b60408051808201909152600b81526a32b4b21d3932bb34b2bb9d60a91b6020820152906117bb565b90506115b38c8280519060200120866123b4565b505050505050505050505050565b6000806115f483604051806040016040528060058152602001641c9a59da1d60da1b8152506117bb90919063ffffffff16565b80519060200120905061162d84826040518060400160405280600d81526020016c7265766965775f636f756e743d60981b81525061190a565b949350505050565b8063ffffffff168260405161164a91906132db565b6040519081900381209033907f88ac03187be67c1563b7eb5df904b3339aa5af5e26f3df98b18f1c993ad2118a90600090a45050565b61168a828261053e565b61037e5761169781612432565b6116a2836020612444565b6040516020016116b39291906133c0565b60408051601f198184030181529082905262461bcd60e51b825261036b91600401613435565b6001600160a01b03811660009081526020839052604081208054606091839161170190613448565b80601f016020809104026020016040519081016040528092919081815260200182805461172d90613448565b801561177a5780601f1061174f5761010080835404028352916020019161177a565b820191906000526020600020905b81548152906001019060200180831161175d57829003601f168201915b5050835115159650929450505050505b9250929050565b600082600101826040516117a591906132db565b9081526020016040518091039020905092915050565b606082826040516020016117d0929190613483565b604051602081830303815290604052905092915050565b600081815260208390526040902080546060919061180490613448565b80601f016020809104026020016040519081016040528092919081815260200182805461183090613448565b801561187d5780601f106118525761010080835404028352916020019161187d565b820191906000526020600020905b81548152906001019060200180831161186057829003601f168201915b5050505050905092915050565b6000815183511480156104ee5750508051602091820120825192909101919091201490565b6000806119006118e484604051806040016040528060048152602001637564726960e01b8152506117bb90919063ffffffff16565b8051602091820120600090815260078701909152604090205490565b1515949350505050565b600082815260028401602052604081206008015461193a5760405162461bcd60e51b815260040161036b906134a9565b61162d82805190602001208560020160008681526020019081526020016000206003016125f290919063ffffffff16565b606060006119788361260b565b60010190506000816001600160401b0381111561199757611997612cd8565b6040519080825280601f01601f1916602001820160405280156119c1576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846119fa576119ff565b6119cb565b509392505050565b6000828152600284016020526040812060080154611a375760405162461bcd60e51b815260040161036b906134a9565b61162d82805190602001208560020160008681526020019081526020016000206004016125df90919063ffffffff16565b81516020808401919091206000858152600280880190935260409020611a90920190836126e3565b5050505050565b6000818152600283016020526040812060088101548154839260609283928115159190839060068201908290611acc90613448565b80601f0160208091040260200160405190810160405280929190818152602001828054611af890613448565b8015611b455780601f10611b1a57610100808354040283529160200191611b45565b820191906000526020600020905b815481529060010190602001808311611b2857829003601f168201915b5050505050915080805480602002602001604051908101604052809291908181526020016000905b82821015611c19578382906000526020600020018054611b8c90613448565b80601f0160208091040260200160405190810160405280929190818152602001828054611bb890613448565b8015611c055780601f10611bda57610100808354040283529160200191611c05565b820191906000526020600020905b815481529060010190602001808311611be857829003601f168201915b505050505081526020019060010190611b6d565b50505050905094509450945094505092959194509250565b6000828152600284016020526040902060080154606090611c645760405162461bcd60e51b815260040161036b906134a9565b8151602080840191909120600085815260028088019093526040902061162d9201906117e7565b606060028151611c9b91906134ed565b15611ce45760405162461bcd60e51b81526020600482015260196024820152783b30b934b0b13632a230ba30903632b733ba341032b93937b960391b604482015260640161036b565b6000611cf0858561270a565b90506000611cfe8685612750565b90506000805b82518163ffffffff161015611d83576000838263ffffffff1681518110611d2d57611d2d613382565b602002602001015190506000611d568280519060200120876007016117e790919063ffffffff16565b805190915015611d6e5783611d6a8161335e565b9450505b50508080611d7b9061335e565b915050611d04565b5063ffffffff811615611ed957600080611d9e83600261350f565b63ffffffff166001600160401b03811115611dbb57611dbb612cd8565b604051908082528060200260200182016040528015611dee57816020015b6060815260200190600190039081611dd95790505b50905060005b84518163ffffffff161015611ed4576000858263ffffffff1681518110611e1d57611e1d613382565b602002602001015190506000611e468280519060200120896007016117e790919063ffffffff16565b805190915015611ebf5781848663ffffffff1681518110611e6957611e69613382565b60209081029190910101528084611e81876001613398565b63ffffffff1681518110611e9757611e97613382565b60200260200101819052508580611ead9061335e565b9650611ebc9050856002613398565b94505b50508080611ecc9061335e565b915050611df4565b509450505b5050509392505050565b6000815111611f205760405162461bcd60e51b81526020600482015260096024820152683134b21032b93937b960b91b604482015260640161036b565b611f2a82826127b3565b151560011461037e5760405162461bcd60e51b815260206004820152601e60248201527f626974206e6f74207265676973746572206f6e207468697320636861696e0000604482015260640161036b565b600083815260028501602052604090206008015415611fe85760405162461bcd60e51b8152602060048201526024808201527f45766964656e636553746f726167653a207564726920616c72656164792065786044820152636973747360e01b60648201","5260840161036b565b60008381526002850160209081526040909120835161200992850190612b09565b5060008381526002850160209081526040909120825161203192600690920191840190612b8d565b505050600090815260029091016020526040902042600890910155565b611a908280519060200120828660020160008781526020019081526020016000206001016127e39092919063ffffffff16565b611a908280519060200120828660020160008781526020019081526020016000206003016127ff9092919063ffffffff16565b611a9082805190602001208286600201600087815260200190815260200160002060040161282b9092919063ffffffff16565b600083600101836040516120fb91906132db565b908152604080516020928190038301812081830190925260158152741d5cd95c8e9c995d9a595dce995a590e98dbdd5b9d605a1b920191909152905060006121717f8e7e22a149a62d266f1366830ad13fadc3d0c42cdbb2dca110769fc88fb0ddbb600090815260098401602052604090205490565b905060006121b061089d61218484612840565b60408051808201909152600f81526e32afb932bb34b2bb9d34b73232bc1d60891b6020820152906117bb565b6000818152600885016020526040902085905590506040805180820190915260158152741d5cd95c8e9c995d9a595dce995a590e98dbdd5b9d605a1b602090910152610a9e7f8e7e22a149a62d266f1366830ad13fadc3d0c42cdbb2dca110769fc88fb0ddbb61222184600161353b565b600091825260098601602052604090912055600190565b6002815161224691906134ed565b1561228f5760405162461bcd60e51b81526020600482015260196024820152783b30b934b0b13632a230ba30903632b733ba341032b93937b960391b604482015260640161036b565b600061229b858561270a565b905060005b82518163ffffffff161015610602576000838263ffffffff16815181106122c9576122c9613382565b602002602001015190506000848360016122e39190613398565b63ffffffff16815181106122f9576122f9613382565b6020026020010151905061230e88878461284f565b15156001146123705760405162461bcd60e51b815260206004820152602860248201527f50617274206f66207661726961626c6544617461206669656c64206973206e6f6044820152673a1030b63637bbb760c11b606482015260840161036b565b81516020830120612386906007860190836126e3565b5050506002816123969190613398565b90506122a0565b60606102cf826123ac816128d2565b60010161293c565b60008281526003840160205260409020541561241e5760405162461bcd60e51b815260206004820152602360248201527f45766964656e636553746f726167653a2062696420616c72656164792065786960448201526273747360e81b606482015260840161036b565b600091825260039092016020526040902055565b60606102cf6001600160a01b03831660145b60606000612453836002613553565b61245e90600261353b565b6001600160401b0381111561247557612475612cd8565b6040519080825280601f01601f19166020018201604052801561249f576020820181803683370190505b509050600360fc1b816000815181106124ba576124ba613382565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124e9576124e9613382565b60200101906001600160f81b031916908160001a905350600061250d846002613553565b61251890600161353b565b90505b6001811115612590576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061254c5761254c613382565b1a60f81b82828151811061256257612562613382565b60200101906001600160f81b031916908160001a90535060049490941c9361258981613572565b905061251b565b5083156104ee5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161036b565b6000908152602091909152604090205490565b6000908152602091909152604090205463ffffffff1690565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061264a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612676576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061269457662386f26fc10000830492506010015b6305f5e10083106126ac576305f5e100830492506008015b61271083106126c057612710830492506004015b606483106126d2576064830492506002015b600a83106102cf5760010192915050565b600082815260208481526040822083516126ff92850190612b09565b506001949350505050565b600081815260028301602052604081206008015461273a5760405162461bcd60e51b815260040161036b906134a9565b5060009081526002919091016020526040902090565b6060600061279c6040518060400160405280602081526020017f3a7661726961626c655f646174613a737570706f727465645f66696c6564733d815250846117bb90919063ffffffff16565b8051602082012090915061059e6004860182612a25565b600082600101826040516127c791906132db565b908152604051908190036020019020600b015415159392505050565b600082815260208481526040822083516126ff92850190612b8d565b6000828152602084905260409020805463ffffffff831663ffffffff1990911617905560019392505050565b60009182526020929092526040902055600190565b60606102cf826123ac846128d2565b60008061289383610a28604051806040016040528060128152602001717661726961626c655f646174613a6b65793d60701b815250876117bb90919063ffffffff16565b805160208201209091506128be60068701826000908152602091909152604090205463ffffffff1690565b63ffffffff16600114925050509392505050565b600080608083901c156128ea5760809290921c916010015b604083901c156128ff5760409290921c916008015b602083901c156129145760209290921c916004015b601083901c156129295760109290921c916002015b600883901c156102cf5760010192915050565b606082600061294c846002613553565b6001600160401b0381111561296357612963612cd8565b6040519080825280601f01601f19166020018201604052801561298d576020820181803683370190505b509050600061299d856002613553565b90505b8015612a1c576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106129ce576129ce613382565b1a60f81b826129de600184613589565b815181106129ee576129ee613382565b60200101906001600160f81b031916908160001a90535060049290921c91612a1581613572565b90506129a0565b50949350505050565b600081815260208381526040808320805482518185028101850190935280835260609492939192909184015b82821015612afd578382906000526020600020018054612a7090613448565b80601f0160208091040260200160405190810160405280929190818152602001828054612a9c90613448565b8015612ae95780601f10612abe57610100808354040283529160200191612ae9565b820191906000526020600020905b815481529060010190602001808311612acc57829003601f168201915b505050505081526020019060010190612a51565b50505050905092915050565b828054612b1590613448565b90600052602060002090601f016020900481019282612b375760008555612b7d565b82601f10612b5057805160ff1916838001178555612b7d565b82800160010185558215612b7d579182015b82811115612b7d578251825591602001919060010190612b62565b50612b89929150612be6565b5090565b828054828255906000526020600020908101928215612bda579160200282015b82811115612bda5782518051612bca918491602090910190612b09565b5091602001919060010190612bad565b50612b89929150612bfb565b5b80821115612b895760008155600101612be7565b80821115612b89576000612c0f8282612c18565b50600101612bfb565b508054612c2490613448565b6000825580601f10612c34575050565b601f0160209004906000526020600020908101906106dd9190612be6565b600060208284031215612c6457600080fd5b81356001600160e01b0319811681146104ee57600080fd5b600060208284031215612c8e57600080fd5b5035919050565b80356001600160a01b03811681146104db57600080fd5b60008060408385031215612cbf57600080fd5b82359150612ccf60208401612c95565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612d1657612d16612cd8565b604052919050565b600082601f830112612d2f57600080fd5b81356001600160401b03811115612d4857612d48612cd8565b612d5b601f8201601f1916602001612cee565b818152846020838601011115612d7057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612da057600080fd5b82356001600160401b0380821115612db757600080fd5b612dc386838701612d1e565b93506020850135915080821115612dd957600080fd5b50612de685828601612d1e565b9150509250929050565b60008060408385031215612e0357600080fd5b82356001600160401b03811115612e1957600080fd5b612e2585828601612d1e565b925050612ccf60208401612c95565b600060208284031215612e4657600080fd5b81356001600160401b03811115612e5c57600080fd5b61162d84828501612d1e565b60008083601f840112612e7a57600080fd5b5081356001600160401b03811115612e9157600080fd5b60208301915083602082850101111561178a57600080fd5b60008060208385031215612ebc57600080fd5b82356001600160401b03811115612ed257600080fd5b612ede85828601612e68565b90969095509350505050565b803563ffffffff811681146104db57600080fd5b600080600080600060608688031215612f1657600080fd5b85356001600160401b0380821115612f2d57600080fd5b612f3989838a01612e68565b90975095506020880135915080821115612f5257600080fd5b50612f5f88828901612e68565b9094509250612f72905060408701612eea565b90509295509295909350565b60005b83811015612f99578181015183820152602001612f81565b8381111561091e5750506000910152565b60008151808452612fc2816020860160208601612f7e565b601f01601f19169290920160200192915050565b600081518084526020","808501808196508360051b8101915082860160005b8581101561301e57828403895261300c848351612faa565b98850198935090840190600101612ff4565b5091979650505050505050565b83151581526060602082015260006130466060830185612fd6565b82810360408401526130588185612fd6565b9695505050505050565b60008060006040848603121561307757600080fd5b83356001600160401b0381111561308d57600080fd5b61309986828701612e68565b90945092506130ac905060208501612eea565b90509250925092565b84151581526080602082015260006130d06080830186612faa565b82810360408401526130e28186612fd6565b905082810360608401526130f68185612fd6565b979650505050505050565b6000806000806040858703121561311757600080fd5b84356001600160401b038082111561312e57600080fd5b61313a88838901612e68565b9096509450602087013591508082111561315357600080fd5b5061316087828801612e68565b95989497509550505050565b600082601f83011261317d57600080fd5b813560206001600160401b038083111561319957613199612cd8565b8260051b6131a8838201612cee565b93845285810183019383810190888611156131c257600080fd5b84880192505b858310156131fe578235848111156131e05760008081fd5b6131ee8a87838c0101612d1e565b83525091840191908401906131c8565b98975050505050505050565b600080600080600060a0868803121561322257600080fd5b85356001600160401b038082111561323957600080fd5b61324589838a01612d1e565b9650602088013591508082111561325b57600080fd5b61326789838a01612d1e565b9550604088013591508082111561327d57600080fd5b61328989838a0161316c565b9450606088013591508082111561329f57600080fd5b6132ab89838a0161316c565b935060808801359150808211156132c157600080fd5b506132ce8882890161316c565b9150509295509295909350565b600082516132ed818460208701612f7e565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561332a5761332a6132f7565b039392505050565b6020808252601290820152713ab23934903737ba1037b71031b430b4b71760711b604082015260600190565b600063ffffffff80831681811415613378576133786132f7565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff8083168185168083038211156133b7576133b76132f7565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516133f8816017850160208801612f7e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613429816028840160208801612f7e565b01602801949350505050565b6020815260006104ee6020830184612faa565b600181811c9082168061345c57607f821691505b6020821081141561347d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351613495818460208801612f7e565b8351908301906133b7818360208801612f7e565b60208082526024908201527f45766964656e636553746f726167653a2045766964656e6365206e6f742065786040820152636973747360e01b606082015260800190565b60008261350a57634e487b7160e01b600052601260045260246000fd5b500690565b600063ffffffff80831681851681830481118215151615613532576135326132f7565b02949350505050565b6000821982111561354e5761354e6132f7565b500190565b600081600019048311821515161561356d5761356d6132f7565b500290565b600081613581576135816132f7565b506000190190565b60008282101561359b5761359b6132f7565b50039056fe445245766964656e636553746f72616765436f6e7374616e742e45564944454e43455f434f4e54524143545f56455253494f4e5f563122f59c2f02edbae5c421247f029fe3112c5a85f70b4a48f5d93b22ada9ea772ea26469706673582212208c5911f82ddc697fad6e10782b5c98e40b074ce4dddd3d3f758c3c7368b8a8b764736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b5061363f806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063b5aed06f116100a2578063de92755c11610071578063de92755c1461021f578063ea7eb79814610232578063f216dff314610245578063fbd3f0bf14610268578063fd09e7d61461028b57600080fd5b8063b5aed06f146101b2578063b6773ad8146101d5578063b70b2fbc146101ea578063d1243968146101fd57600080fd5b80635472010b116100de5780635472010b1461016657806384e3826214610179578063a4ff64c21461018c578063a87808d81461019f57600080fd5b806317d66dc8146101105780631b3240b8146101255780632db3c636146101405780634f4a022214610153575b600080fd5b61012361011e366004612c7c565b61029e565b005b61012d600081565b6040519081526020015b60405180910390f35b61012361014e366004612dfb565b610322565b61012d610161366004612f0d565b610385565b610123610174366004612c7c565b61039a565b610123610187366004612f4e565b6103c4565b61012361019a366004612fb1565b6103f9565b61012d6101ad366004612fe5565b6104c2565b6101c56101c0366004612fb1565b6104db565b6040519015158152602001610137565b61012d6000805160206135b483398151915281565b6101236101f8366004613050565b610568565b61021061020b3660046130a8565b61060a565b604051610137939291906131d5565b6101c561022d366004612c7c565b61062f565b6101c561024036600461320c565b61065a565b610258610253366004613236565b61068f565b6040516101379493929190613289565b61012d6102763660046132d5565b60009081526065602052604090206001015490565b610123610299366004612c7c565b6106b3565b6001600160a01b038116331461031457604051636381e58960e11b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61031e82826106d4565b5050565b61034b604051806040016040528060088152602001673932bb34b2bbb2b960c11b81525061073b565b61035a60c98686868686610894565b600061036760c987610c79565b905061037d86610378600184613304565b610ced565b505050505050565b600061039360c98484610d38565b9392505050565b6000828152606560205260409020600101546103b581610e42565b6103bf8383610e4f565b505050565b6103ed604051806040016040528060088152602001673932bb34b2bbb2b960c11b81525061073b565b61031e60c98383610ed5565b600061040481610e42565b60006001600160a01b031660978360405161041f9190613329565b908152604051908190036020019020546001600160a01b03161461031e5761047d6000805160206135b483398151915260978460405161045f9190613329565b908152604051908190036020019020546001600160a01b03166106d4565b600060978360405161048f9190613329565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b60006104d260c986868686611053565b95945050505050565b6000806001600160a01b03166097836040516104f79190613329565b908152604051908190036020019020546001600160a01b03161461055b576105556000805160206135b48339815191526097846040516105379190613329565b908152604051908190036020019020546001600160a01b031661062f565b92915050565b506000919050565b919050565b600061057381610e42565b60006001600160a01b031660978460405161058e9190613329565b908152604051908190036020019020546001600160a01b031614156103bf576105c56000805160206135b483398151915283610e4f565b816097846040516105d69190613329565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b600060608061061e60c989898989896111a8565b925092509250955095509592505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006001600160e01b03198216634df6077b60e11b14806105555750631d4fd6f360e31b6001600160e01b0319831614610555565b6000606080806106a260c9888888611459565b935093509350935093509350935093565b6000828152606560205260409020600101546106ce81610e42565b6103bf83835b6106de828261062f565b1561031e5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917fddf24a0d777ab37f0cd0acf6e2b0a75570d42c6500405e008f7f9a61836cf2a39190a45050565b60008061074960c93361168b565b90925090506001821515146107a157604051636381e58960e11b815260206004820152601960248201527f53656e646572206973206e6f7420726567697374657265642e00000000000000604482015260640161030b565b60006107ae60c983611743565b905061082760405180604001604052806005815260200164195e1a5cdd60da1b81525061082161081761080c886040518060400160405280600a8152602001693ab9b2b92fb937b6329d60b11b81525061176d90919063ffffffff16565b805160209091012090565b6006850190611799565b9061183c565b151560011461088e57604051636381e58960e11b815260206004820152602c60248201527f5573657220776974686f757420636f72726573706f6e64696e6720726f6c652060448201526b3832b936b4b9b9b4b7b7399760a11b606482015260840161030b565b50505050565b61089e8685611861565b6108a886866118fb565b15156001146108ca57604051636381e58960e11b815260040161030b90613345565b6040805180820190915260058152641c9a59da1d60da1b60208201526000906108f3908761176d565b805190602001209050600061092f876040518060400160405280600681526020016572657669657760d01b81525061176d90919063ffffffff16565b905060005b85518163ffffffff16101561098957610975868263ffffffff168151811061095e5761095e613371565b60200260200101518361176d90919063ffffffff16565b91508061098181613387565b915050610934565b506000818051906020012090506109c089826040518060400160405280600681526020016572657669657760d01b81525088611956565b610a038982604051806040016040528060078152602001663b32b939b4b7b760c91b8152506040518060600160405280603681526020016135d460369139611a2a565b610a2b8982604051806040016040528060048152602001637564726960e01b8152508b611a2a565b610a5a89826040518060400160405280600b81526020016a1c995d9a595dd95c909a5960aa1b8152508a611a2a565b610a8c89826040518060400160405280600e81526020016d0e4caecd2caee88c2e8c290c2e6d60931b81525089611a59565b6000610ac76040518060400160405280600e81526020016d3a7265766965775f636f756e743d60901b8152508961176d90919063ffffffff16565b90506000610ad68b8684611a8c565b9050610aee8b8684610ae98560016133ab565b611aee565b610b418b86610b3b610b058563ffffffff16611b21565b60408051808201909152600e81526d1d3932bb34b2bb9d34b73232bc1d60911b6020820152610b35908f9061176d565b9061176d565b86611bbd565b610b718b866040518060400160405280600d81526020016c7265766965775f636f756e743d60981b815250611a8c565b9050610bab8b866040518060400160405280600d81526020016c7265766965775f636f756e743d60981b815250846001610ae991906133ab565b610bec8b86610b3b610bc28563ffffffff16611b21565b60408051808201909152600d81526c3932bb34b2bb9d34b73232bc1d60991b60208201529061176d565b610bf78b8a85611bf0565b610c218b846040518060400160405280600681526020016572657669657760d01b81525089611d41565b6000610c57610c2f85611ea8565b60408051808201909152600b81526a32b4b21d3932bb34b2bb9d60a91b60208201529061176d565b9050610c6b8c828051906020012086611ebf565b505050505050505050505050565b600080610cac83604051806040016040528060058152602001641c9a59da1d60da1b81525061176d90919063ffffffff16565b805190602001209050610ce584826040518060400160405280600d81526020016c7265766965775f636f756e743d60981b815250611a8c565b949350505050565b8063ffffffff1682604051610d029190613329565b6040519081900381209033907f4274fe8770de2c07dfe4790b72274159aaafe24acff67538902fd45fcae6dac890600090a45050565b6000610d7a8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118fb92505050565b1515600114610d9c57604051636381e58960e11b815260040161030b90613345565b6000610dfa84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260058152641c9a59da1d60da1b60208201529291505061176d565b805190602001209050610e3385826040518060400160405280600d81526020016c7265766965775f636f756e743d60981b815250611a8c565b63ffffffff1695945050505050565b610e4c8133611f3e565b50565b610e59828261062f565b61031e5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610e913390565b6001600160a01b0316816001600160a01b0316837f3a8c19c5eddb5ca7fdd091f00e2b3978b86344c928af4d2d7f6733572cc06b4c60405160405180910390a45050565b610edf83836118fb565b1515600114610f0157604051636381e58960e11b815260040161030b90613345565b6040805180820190915260058152641c9a59da1d60da1b6020820152600090610f2a908461176d565b8051906020012090506000610f6e6040518060400160405280600e81526020016d3a7265766965775f636f756e743d60901b8152508461176d90919063ffffffff16565b90506000610f7d868484611a8c565b905060005b8163ffffffff168163ffffffff16101561104a576000610fda610faa8363ffffffff16611b21565b60408051808201909152600e81526d1d3932bb34b2bb9d34b73232bc1d60911b6020820152610b3590899061176d565b9050600061","0fe9898784611f98565b905061103589826040518060400160405280600681526020016573746174757360d01b81525060405180604001604052806008815260200167191a5cd8589b195960c21b815250611a2a565b5050808061104290613387565b915050610f82565b50505050505050565b60006110958686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118fb92505050565b15156001146110b757604051636381e58960e11b815260040161030b90613345565b600061111586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260058152641c9a59da1d60da1b60208201529291505061176d565b80519060200120905060006111896040518060400160405280600e81526020016d3a7265766965775f636f756e743d60901b81525086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061176d9050565b9050611196888383611a8c565b63ffffffff1698975050505050505050565b60006060806111ed8989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118fb92505050565b151560011461120f57604051636381e58960e11b815260040161030b90613345565b600061126d89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260058152641c9a59da1d60da1b60208201529291505061176d565b80519060200120905060006112eb8b836112e66040518060400160405280600e81526020016d3a7265766965775f636f756e743d60901b8152508c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061176d9050565b611a8c565b90508063ffffffff168663ffffffff161061133957604051636381e58960e11b815260206004820152600d60248201526c0d2dcecc2d8d2c840d2dcc8caf609b1b604482015260640161030b565b60006113c08c846113bb6113528b63ffffffff16611b21565b610b356040518060400160405280600e81526020016d1d3932bb34b2bb9d34b73232bc1d60911b8152508f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061176d9050565b611f98565b90506000806113cf8e84611ffa565b93509350505060006114008f856040518060400160405280600681526020016573746174757360d01b815250612194565b905061143560405180604001604052806008815260200167191a5cd8589b195960c21b8152508261183c90919063ffffffff16565b98508197506114458f85856121ef565b965050505050505096509650969350505050565b600060608060606114a08888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118fb92505050565b15156001146114c257604051636381e58960e11b815260040161030b90613345565b600061152088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260058152641c9a59da1d60da1b60208201529291505061176d565b805190602001209050600061155b8a836040518060400160405280600d81526020016c7265766965775f636f756e743d60981b815250611a8c565b90508063ffffffff168763ffffffff16106115aa57604051636381e58960e11b815260206004820152600e60248201526d0d2d2dcecc2d8d2c840d2dcc8caf60931b604482015260640161030b565b60006115c38b846113bb610bc28c63ffffffff16611b21565b90506115f38b826040518060400160405280600b81526020016a1c995d9a595dd95c909a5960aa1b815250612194565b95506000806116028d84611ffa565b93509350505060006116338e856040518060400160405280600681526020016573746174757360d01b815250612194565b905061166860405180604001604052806008815260200167191a5cd8589b195960c21b8152508261183c90919063ffffffff16565b99508197506116788e85856121ef565b9650505050505050945094509450949050565b6001600160a01b0381166000908152602083905260408120805460609183916116b3906133d3565b80601f01602080910402602001604051908101604052809291908181526020018280546116df906133d3565b801561172c5780601f106117015761010080835404028352916020019161172c565b820191906000526020600020905b81548152906001019060200180831161170f57829003601f168201915b5050835115159650929450505050505b9250929050565b600082600101826040516117579190613329565b9081526020016040518091039020905092915050565b6060828260405160200161178292919061340e565b604051602081830303815290604052905092915050565b60008181526020839052604090208054606091906117b6906133d3565b80601f01602080910402602001604051908101604052809291908181526020018280546117e2906133d3565b801561182f5780601f106118045761010080835404028352916020019161182f565b820191906000526020600020905b81548152906001019060200180831161181257829003601f168201915b5050505050905092915050565b6000815183511480156103935750508051602091820120825192909101919091201490565b600081511161189f57604051636381e58960e11b81526020600482015260096024820152683134b21032b93937b960b91b604482015260640161030b565b6118a98282612448565b151560011461031e57604051636381e58960e11b815260206004820152601e60248201527f626974206e6f74207265676973746572206f6e207468697320636861696e0000604482015260640161030b565b60008061194c61193084604051806040016040528060048152602001637564726960e01b81525061176d90919063ffffffff16565b8051602091820120600090815260078701909152604090205490565b1515949350505050565b6000838152600285016020526040902060080154156119c457604051636381e58960e11b8152602060048201526024808201527f45766964656e636553746f726167653a207564726920616c72656164792065786044820152636973747360e01b606482015260840161030b565b6000838152600285016020908152604090912083516119e592850190612b1c565b50600083815260028501602090815260409091208251611a0d92600690920191840190612ba0565b505050600090815260029091016020526040902042600890910155565b81516020808401919091206000858152600280880190935260409020611a529201908361248b565b5050505050565b611a528280519060200120828660020160008781526020019081526020016000206001016124b29092919063ffffffff16565b6000828152600284016020526040812060080154611abd57604051636381e58960e11b815260040161030b90613434565b610ce582805190602001208560020160008681526020019081526020016000206003016124ce90919063ffffffff16565b611a528280519060200120828660020160008781526020019081526020016000206003016124e79092919063ffffffff16565b60606000611b2e83612513565b60010190506000816001600160401b03811115611b4d57611b4d612ca8565b6040519080825280601f01601f191660200182016040528015611b77576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611bb057611bb5565b611b81565b509392505050565b611a528280519060200120828660020160008781526020019081526020016000206004016125eb9092919063ffffffff16565b60008360010183604051611c049190613329565b908152604080516020928190038301812081830190925260158152741d5cd95c8e9c995d9a595dce995a590e98dbdd5b9d605a1b92019190915290506000611c7a7fc87fd76dcb254b470588f43d2dd39ad8a7f86e49142e501a49eaca8ce0f863dc600090815260098401602052604090205490565b90506000611cb961080c611c8d84612600565b60408051808201909152600f81526e32afb932bb34b2bb9d34b73232bc1d60891b60208201529061176d565b6000818152600885016020526040902085905590506040805180820190915260158152741d5cd95c8e9c995d9a595dce995a590e98dbdd5b9d605a1b60209091015261104a7fc87fd76dcb254b470588f43d2dd39ad8a7f86e49142e501a49eaca8ce0f863dc611d2a846001613478565b600091825260098601602052604090912055600190565b60028151611d4f9190613490565b15611d9957604051636381e58960e11b81526020600482015260196024820152783b30b934b0b13632a230ba30903632b733ba341032b93937b960391b604482015260640161030b565b6000611da5858561260f565b905060005b82518163ffffffff16101561037d576000838263ffffffff1681518110611dd357611dd3613371565b60200260200101519050600084836001611ded91906133ab565b63ffffffff1681518110611e0357611e03613371565b60200260200101519050611e18888784612656565b1515600114611e7b57604051636381e58960e11b815260206004820152602860248201527f50617274206f66207661726961626c6544617461206669656c64206973206e6f6044820152673a1030b63637bbb760c11b606482015260840161030b565b81516020830120611e919060078601908361248b565b505050600281611ea191906133ab565b9050611daa565b606061055582611eb7816126d9565b600101612743565b600082815260038401602052604090205415611f2a57604051636381e58960e11b815260206004820152602360248201527f45766964656e636553746f726167653a2062696420616c72656164792065786960448201526273747360e81b606482015260840161030b565b600091825260039092016020526040902055565b611f48828261062f565b61031e57611f558161282c565b611f6083602061283e565b604051602001611f719291906134b2565b60408051601f1981840301815290829052636381e58960e11b825261030b91600401613527565b6000828152600284016020526040812060080154611fc957604051636381e58960e11b815260040161030b90613434565b610ce582805190602001208560020160008681526020","0190815260200160002060040161247890919063ffffffff16565b600081815260028301602052604081206008810154815483926060928392811515919083906006820190829061202f906133d3565b80601f016020809104026020016040519081016040528092919081815260200182805461205b906133d3565b80156120a85780601f1061207d576101008083540402835291602001916120a8565b820191906000526020600020905b81548152906001019060200180831161208b57829003601f168201915b5050505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561217c5783829060005260206000200180546120ef906133d3565b80601f016020809104026020016040519081016040528092919081815260200182805461211b906133d3565b80156121685780601f1061213d57610100808354040283529160200191612168565b820191906000526020600020905b81548152906001019060200180831161214b57829003601f168201915b5050505050815260200190600101906120d0565b50505050905094509450945094505092959194509250565b60008281526002840160205260409020600801546060906121c857604051636381e58960e11b815260040161030b90613434565b81516020808401919091206000858152600280880190935260409020610ce5920190611799565b6060600281516121ff9190613490565b1561224957604051636381e58960e11b81526020600482015260196024820152783b30b934b0b13632a230ba30903632b733ba341032b93937b960391b604482015260640161030b565b6000612255858561260f565b9050600061226386856129da565b90506000805b82518163ffffffff1610156122e8576000838263ffffffff168151811061229257612292613371565b6020026020010151905060006122bb82805190602001208760070161179990919063ffffffff16565b8051909150156122d357836122cf81613387565b9450505b505080806122e090613387565b915050612269565b5063ffffffff81161561243e5760008061230383600261353a565b63ffffffff166001600160401b0381111561232057612320612ca8565b60405190808252806020026020018201604052801561235357816020015b606081526020019060019003908161233e5790505b50905060005b84518163ffffffff161015612439576000858263ffffffff168151811061238257612382613371565b6020026020010151905060006123ab82805190602001208960070161179990919063ffffffff16565b8051909150156124245781848663ffffffff16815181106123ce576123ce613371565b602090810291909101015280846123e68760016133ab565b63ffffffff16815181106123fc576123fc613371565b6020026020010181905250858061241290613387565b965061242190508560026133ab565b94505b5050808061243190613387565b915050612359565b509450505b5050509392505050565b6000826001018260405161245c9190613329565b908152604051908190036020019020600b015415159392505050565b6000908152602091909152604090205490565b600082815260208481526040822083516124a792850190612b1c565b506001949350505050565b600082815260208481526040822083516124a792850190612ba0565b6000908152602091909152604090205463ffffffff1690565b6000828152602084905260409020805463ffffffff831663ffffffff1990911617905560019392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106125525772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061257e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061259c57662386f26fc10000830492506010015b6305f5e10083106125b4576305f5e100830492506008015b61271083106125c857612710830492506004015b606483106125da576064830492506002015b600a83106105555760010192915050565b60009182526020929092526040902055600190565b606061055582611eb7846126d9565b600081815260028301602052604081206008015461264057604051636381e58960e11b815260040161030b90613434565b5060009081526002919091016020526040902090565b60008061269a83610b35604051806040016040528060128152602001717661726961626c655f646174613a6b65793d60701b8152508761176d90919063ffffffff16565b805160208201209091506126c560068701826000908152602091909152604090205463ffffffff1690565b63ffffffff16600114925050509392505050565b600080608083901c156126f15760809290921c916010015b604083901c156127065760409290921c916008015b602083901c1561271b5760209290921c916004015b601083901c156127305760109290921c916002015b600883901c156105555760010192915050565b6060826000612753846002613566565b6001600160401b0381111561276a5761276a612ca8565b6040519080825280601f01601f191660200182016040528015612794576020820181803683370190505b50905060006127a4856002613566565b90505b8015612823576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106127d5576127d5613371565b1a60f81b826127e5600184613585565b815181106127f5576127f5613371565b60200101906001600160f81b031916908160001a90535060049290921c9161281c8161359c565b90506127a7565b50949350505050565b60606105556001600160a01b03831660145b6060600061284d836002613566565b612858906002613478565b6001600160401b0381111561286f5761286f612ca8565b6040519080825280601f01601f191660200182016040528015612899576020820181803683370190505b509050600360fc1b816000815181106128b4576128b4613371565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106128e3576128e3613371565b60200101906001600160f81b031916908160001a9053506000612907846002613566565b612912906001613478565b90505b600181111561298a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061294657612946613371565b1a60f81b82828151811061295c5761295c613371565b60200101906001600160f81b031916908160001a90535060049490941c936129838161359c565b9050612915565b50831561039357604051636381e58960e11b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161030b565b60606000612a266040518060400160405280602081526020017f3a7661726961626c655f646174613a737570706f727465645f66696c6564733d8152508461176d90919063ffffffff16565b805160208201209091506104d26004860182600081815260208381526040808320805482518185028101850190935280835260609492939192909184015b82821015612b10578382906000526020600020018054612a83906133d3565b80601f0160208091040260200160405190810160405280929190818152602001828054612aaf906133d3565b8015612afc5780601f10612ad157610100808354040283529160200191612afc565b820191906000526020600020905b815481529060010190602001808311612adf57829003601f168201915b505050505081526020019060010190612a64565b50505050905092915050565b828054612b28906133d3565b90600052602060002090601f016020900481019282612b4a5760008555612b90565b82601f10612b6357805160ff1916838001178555612b90565b82800160010185558215612b90579182015b82811115612b90578251825591602001919060010190612b75565b50612b9c929150612bf9565b5090565b828054828255906000526020600020908101928215612bed579160200282015b82811115612bed5782518051612bdd918491602090910190612b1c565b5091602001919060010190612bc0565b50612b9c929150612c0e565b5b80821115612b9c5760008155600101612bfa565b80821115612b9c576000612c228282612c2b565b50600101612c0e565b508054612c37906133d3565b6000825580601f10612c47575050565b601f016020900490600052602060002090810190610e4c9190612bf9565b80356001600160a01b038116811461056357600080fd5b60008060408385031215612c8f57600080fd5b82359150612c9f60208401612c65565b90509250929050565b63b95aa35560e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ce657612ce6612ca8565b604052919050565b600082601f830112612cff57600080fd5b81356001600160401b03811115612d1857612d18612ca8565b612d2b601f8201601f1916602001612cbe565b818152846020838601011115612d4057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112612d6e57600080fd5b813560206001600160401b0380831115612d8a57612d8a612ca8565b8260051b612d99838201612cbe565b9384528581018301938381019088861115612db357600080fd5b84880192505b85831015612def57823584811115612dd15760008081fd5b612ddf8a87838c0101612cee565b8352509184019190840190612db9565b98975050505050505050565b600080600080600060a08688031215612e1357600080fd5b85356001600160401b0380821115612e2a57600080fd5b612e3689838a01612cee565b96506020880135915080821115612e4c57600080fd5b612e5889838a01612cee565b95506040880135915080821115612e6e57600080fd5b612e7a89838a01612d5d565b94506060880135915080821115612e9057600080fd5b612e9c89838a01612d5d565b93506080880135915080821115612eb257600080fd5b50612ebf88828901612d5d565b9150509295509295909350565b60008083601f840112612ede57600080fd5b5081356001600160401b03811115612ef557600080fd5b60208301915083602082850101111561173c57600080fd5b60008060208385031215612f2057600080fd5b82356001600160401b03811115612f3657600080fd5b612f4285828601612ecc565b90969095509350505050565b60008060408385031215612f6157600080fd5b82356001600160401b0380821115612f7857600080fd5b612f8486838701612cee565b93506020850135915080821115612f9a57600080fd5b50612fa785828601612cee565b9150509250929050565b600060208284031215612fc357600080fd5b81356001600160401b03811115612fd957600080fd5b610ce5848285","01612cee565b60008060008060408587031215612ffb57600080fd5b84356001600160401b038082111561301257600080fd5b61301e88838901612ecc565b9096509450602087013591508082111561303757600080fd5b5061304487828801612ecc565b95989497509550505050565b6000806040838503121561306357600080fd5b82356001600160401b0381111561307957600080fd5b61308585828601612cee565b925050612c9f60208401612c65565b803563ffffffff8116811461056357600080fd5b6000806000806000606086880312156130c057600080fd5b85356001600160401b03808211156130d757600080fd5b6130e389838a01612ecc565b909750955060208801359150808211156130fc57600080fd5b5061310988828901612ecc565b909450925061311c905060408701613094565b90509295509295909350565b60005b8381101561314357818101518382015260200161312b565b8381111561088e5750506000910152565b6000815180845261316c816020860160208601613128565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156131c85782840389526131b6848351613154565b9885019893509084019060010161319e565b5091979650505050505050565b83151581526060602082015260006131f06060830185613180565b82810360408401526132028185613180565b9695505050505050565b60006020828403121561321e57600080fd5b81356001600160e01b03198116811461039357600080fd5b60008060006040848603121561324b57600080fd5b83356001600160401b0381111561326157600080fd5b61326d86828701612ecc565b9094509250613280905060208501613094565b90509250925092565b84151581526080602082015260006132a46080830186613154565b82810360408401526132b68186613180565b905082810360608401526132ca8185613180565b979650505050505050565b6000602082840312156132e757600080fd5b5035919050565b63b95aa35560e01b600052601160045260246000fd5b600063ffffffff83811690831681811015613321576133216132ee565b039392505050565b6000825161333b818460208701613128565b9190910192915050565b6020808252601290820152713ab23934903737ba1037b71031b430b4b71760711b604082015260600190565b63b95aa35560e01b600052603260045260246000fd5b600063ffffffff808316818114156133a1576133a16132ee565b6001019392505050565b600063ffffffff8083168185168083038211156133ca576133ca6132ee565b01949350505050565b600181811c908216806133e757607f821691505b602082108114156134085763b95aa35560e01b600052602260045260246000fd5b50919050565b60008351613420818460208801613128565b8351908301906133ca818360208801613128565b60208082526024908201527f45766964656e636553746f726167653a2045766964656e6365206e6f742065786040820152636973747360e01b606082015260800190565b6000821982111561348b5761348b6132ee565b500190565b6000826134ad5763b95aa35560e01b600052601260045260246000fd5b500690565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134ea816017850160208801613128565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161351b816028840160208801613128565b01602801949350505050565b6020815260006103936020830184613154565b600063ffffffff8083168185168183048111821515161561355d5761355d6132ee565b02949350505050565b6000816000190483118215151615613580576135806132ee565b500290565b600082821015613597576135976132ee565b500390565b6000816135ab576135ab6132ee565b50600019019056fecda5c054d055f48a2866e1a28d72f8145e422f1db1872bc4c9fe2888702c9f8d445245766964656e636553746f72616765436f6e7374616e742e45564944454e43455f434f4e54524143545f56455253494f4e5f5631a2646970667358221220721b3a925506bca76397ebf0c36e23450d9efb2bcb1d5a397fc1a9bd5c5deba964736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"NewReviewEvidenceStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"name\":\"NewRightEvidenceStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"usci\",\"type\":\"string\"}],\"name\":\"UserCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"UserRoleChanged\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[2719481311,456278200],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"USERMANAGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[852968231,3061267160],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"reviewDataHash\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"name\":\"addReviewEvidence\",\"outputs\":[],\"selector\":[4024293368,766756406],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"name\":\"getReviewCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reviewCount\",\"type\":\"uint256\"}],\"selector\":[1485793629,1330250274],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"}],\"name\":\"getReviewCountOfReviewer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"selector\":[3868489521,2826438872],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[613063843,4224970943],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifyEvidence\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isWithdraw\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"selector\":[1855339097,4061585395],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifyEvidenceOfReviewer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isWithdraw\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"selector\":[1591648918,3508812136],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"selector\":[791671133,1416757515],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"grantUserManagePermission\",\"outputs\":[],\"selector\":[1037211317,3070963644],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[2446411860,3734140252],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":101,\"value\":[34,245,156,47,2,237,186,229,196,33,36,127,2,159,227,17,44,90,133,247,11,74,72,245,217,59,34,173,169,234,119,46]}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"hasUserManageRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[1290417574,3048132719],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"selector\":[911641278,399928776],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"selector\":[3578229791,4245284822],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"revokeUserManagePermission\",\"outputs\":[],\"selector\":[4233016450,2768200898],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[33540519,3934173080],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"}],\"name\":\"withdrawReviewEvidence\",\"outputs\":[],\"selector\":[932021754,2229502562],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_DEFAULT_ADMIN_ROLE = "DEFAULT_ADMIN_ROLE"; + + public static final String FUNC_USERMANAGE_ROLE = "USERMANAGE_ROLE"; + + public static final String FUNC_ADDREVIEWEVIDENCE = "addReviewEvidence"; + + public static final String FUNC_GETREVIEWCOUNT = "getReviewCount"; + + public static final String FUNC_GETREVIEWCOUNTOFREVIEWER = "getReviewCountOfReviewer"; + + public static final String FUNC_GETROLEADMIN = "getRoleAdmin"; + + public static final String FUNC_GETVERIFYEVIDENCE = "getVerifyEvidence"; + + public static final String FUNC_GETVERIFYEVIDENCEOFREVIEWER = "getVerifyEvidenceOfReviewer"; + + public static final String FUNC_GRANTROLE = "grantRole"; + + public static final String FUNC_GRANTUSERMANAGEPERMISSION = "grantUserManagePermission"; + + public static final String FUNC_HASROLE = "hasRole"; + + public static final String FUNC_HASUSERMANAGEROLE = "hasUserManageRole"; + + public static final String FUNC_RENOUNCEROLE = "renounceRole"; + + public static final String FUNC_REVOKEROLE = "revokeRole"; + + public static final String FUNC_REVOKEUSERMANAGEPERMISSION = "revokeUserManagePermission"; + + public static final String FUNC_SUPPORTSINTERFACE = "supportsInterface"; + + public static final String FUNC_WITHDRAWREVIEWEVIDENCE = "withdrawReviewEvidence"; + + public static final Event INITIALIZED_EVENT = new Event("Initialized", + Arrays.>asList(new TypeReference() {})); + ; + + public static final Event NEWREVIEWEVIDENCESTORED_EVENT = new Event("NewReviewEvidenceStored", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event NEWRIGHTEVIDENCESTORED_EVENT = new Event("NewRightEvidenceStored", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEADMINCHANGED_EVENT = new Event("RoleAdminChanged", + Arrays.>asList(new TypeReference(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEGRANTED_EVENT = new Event("RoleGranted", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event ROLEREVOKED_EVENT = new Event("RoleRevoked", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event USERCREATED_EVENT = new Event("UserCreated", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event USERROLECHANGED_EVENT = new Event("UserRoleChanged", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + protected DREvidenceReviewController(String contractAddress, Client client, + CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getInitializedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(INITIALIZED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + InitializedEventResponse typedResponse = new InitializedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.version = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getNewReviewEvidenceStoredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(NEWREVIEWEVIDENCESTORED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + NewReviewEvidenceStoredEventResponse typedResponse = new NewReviewEvidenceStoredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.udri = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.index = (BigInteger) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getNewRightEvidenceStoredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(NEWRIGHTEVIDENCESTORED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + NewRightEvidenceStoredEventResponse typedResponse = new NewRightEvidenceStoredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.udri = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleAdminChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEADMINCHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleAdminChangedEventResponse typedResponse = new RoleAdminChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.previousAdminRole = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.newAdminRole = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleGrantedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEGRANTED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleGrantedEventResponse typedResponse = new RoleGrantedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleRevokedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEREVOKED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleRevokedEventResponse typedResponse = new RoleRevokedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUserCreatedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(USERCREATED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UserCreatedEventResponse typedResponse = new UserCreatedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.bid = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.usci = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUserRoleChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(USERROLECHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UserRoleChangedEventResponse typedResponse = new UserRoleChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.bid = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public byte[] DEFAULT_ADMIN_ROLE() throws ContractException { + final Function function = new Function(FUNC_DEFAULT_ADMIN_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public byte[] USERMANAGE_ROLE() throws ContractException { + final Function function = new Function(FUNC_USERMANAGE_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public TransactionReceipt addReviewEvidence(String udri, String reviewerBid, + List reviewDataHash, List metaData, List variableData) { + final Function function = new Function( + FUNC_ADDREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(reviewDataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForAddReviewEvidence(String udri, String reviewerBid, + List reviewDataHash, List metaData, List variableData) { + final Function function = new Function( + FUNC_ADDREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(reviewDataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String addReviewEvidence(String udri, String reviewerBid, List reviewDataHash, + List metaData, List variableData, TransactionCallback callback) { + final Function function = new Function( + FUNC_ADDREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(reviewDataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple5, List, List> getAddReviewEvidenceInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_ADDREVIEWEVIDENCE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple5, List, List>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + convertToNative((List) results.get(3).getValue()), + convertToNative((List) results.get(4).getValue()) + ); + } + + public BigInteger getReviewCount(String udri) throws ContractException { + final Function function = new Function(FUNC_GETREVIEWCOUNT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public BigInteger getReviewCountOfReviewer(String udri, String reviewerBid) throws + ContractException { + final Function function = new Function(FUNC_GETREVIEWCOUNTOFREVIEWER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public byte[] getRoleAdmin(byte[] role) throws ContractException { + final Function function = new Function(FUNC_GETROLEADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public Tuple4, List> getVerifyEvidence(String udri, + BigInteger index) throws ContractException { + final Function function = new Function(FUNC_GETVERIFYEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(index)), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple4, List>( + (Boolean) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + convertToNative((List) results.get(3).getValue())); + } + + public Tuple3, List> getVerifyEvidenceOfReviewer(String udri, + String reviewerBid, BigInteger index) throws ContractException { + final Function function = new Function(FUNC_GETVERIFYEVIDENCEOFREVIEWER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(index)), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple3, List>( + (Boolean) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()), + convertToNative((List) results.get(2).getValue())); + } + + public TransactionReceipt grantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String grantRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt grantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserManagePermission(String bid, String user, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public Boolean hasRole(byte[] role, String account) throws ContractException { + final Function function = new Function(FUNC_HASROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public Boolean hasUserManageRole(String bid) throws ContractException { + final Function function = new Function(FUNC_HASUSERMANAGEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public TransactionReceipt renounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRenounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String renounceRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRenounceRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_RENOUNCEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String revokeRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRevokeRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeUserManagePermission(String bid, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getRevokeUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public Boolean supportsInterface(byte[] interfaceId) throws ContractException { + final Function function = new Function(FUNC_SUPPORTSINTERFACE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4(interfaceId)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public TransactionReceipt withdrawReviewEvidence(String udri, String reviewerBid) { + final Function function = new Function( + FUNC_WITHDRAWREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForWithdrawReviewEvidence(String udri, String reviewerBid) { + final Function function = new Function( + FUNC_WITHDRAWREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String withdrawReviewEvidence(String udri, String reviewerBid, + TransactionCallback callback) { + final Function function = new Function( + FUNC_WITHDRAWREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getWithdrawReviewEvidenceInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_WITHDRAWREVIEWEVIDENCE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public static DREvidenceReviewController load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new DREvidenceReviewController(contractAddress, client, credential); + } + + public static DREvidenceReviewController deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(DREvidenceReviewController.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } + + public static class InitializedEventResponse { + public TransactionReceipt.Logs log; + + public BigInteger version; + } + + public static class NewReviewEvidenceStoredEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] udri; + + public BigInteger index; + } + + public static class NewRightEvidenceStoredEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] udri; + } + + public static class RoleAdminChangedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public byte[] previousAdminRole; + + public byte[] newAdminRole; + } + + public static class RoleGrantedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class RoleRevokedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class UserCreatedEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] bid; + + public byte[] usci; + } + + public static class UserRoleChangedEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] bid; + } +} diff --git a/java/DREvidenceRightController.java b/java/DREvidenceRightController.java new file mode 100644 index 0000000000000000000000000000000000000000..52e832dd55076de7c118a3c5270ee4b57cacca95 --- /dev/null +++ b/java/DREvidenceRightController.java @@ -0,0 +1,889 @@ +package com.btsi.contract; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple3; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple6; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class DREvidenceRightController extends Contract { + public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b506135b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80634cea35a6116100ad578063a217fddf11610071578063a217fddf14610293578063c234f9131461029b578063d547741f146102ae578063fb0a9583146102c1578063fc4eb482146102d457600080fd5b80634cea35a6146102345780637f762875146102475780638e93d0ad1461025a57806391d148541461026d5780639d121b951461028057600080fd5b80632f2ff15d116100f45780632f2ff15d146101c457806332d74327146101d957806336568abe146101ee5780633dd296b51461020157806341e0737d1461021457600080fd5b806301ffc9a7146101265780630c6a39811461014e578063248a9ca31461017357806325c5a118146101a4575b600080fd5b610139610134366004612c13565b6102e7565b60405190151581526020015b60405180910390f35b61016161015c366004612cf2565b61031e565b60405161014596959493929190612dd6565b610196610181366004612e4d565b60009081526065602052604090206001015490565b604051908152602001610145565b6101b76101b2366004612e66565b610345565b6040516101459190612ed7565b6101d76101d2366004612f01565b61035a565b005b61019660008051602061355f83398151915281565b6101d76101fc366004612f01565b610384565b6101d761020f366004612f2d565b610407565b610227610222366004612f71565b6104a9565b6040516101459190612fd4565b610139610242366004612cf2565b6104b7565b6101d7610255366004613085565b61053e565b6101d7610268366004613085565b61057f565b61013961027b366004612f01565b610642565b6101d761028e3660046130de565b61066d565b610196600081565b6101d76102a93660046131d2565b6106ba565b6101d76102bc366004612f01565b6106fc565b6101d76102cf3660046131d2565b610721565b6101d76102e2366004612cf2565b610763565b60006001600160e01b03198216637965db0b60e01b148061031857506301ffc9a760e01b6001600160e01b03198316145b92915050565b606080808080600061033160c98861082c565b949c939b5091995097509550909350915050565b606061035360c9848461097a565b9392505050565b600082815260656020526040902060010154610375816109f0565b61037f83836109fd565b505050565b6001600160a01b03811633146103f95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6104038282610a83565b5050565b6000610412816109f0565b60006001600160a01b031660978460405161042d9190613259565b908152604051908190036020019020546001600160a01b0316141561037f5761046460008051602061355f833981519152836109fd565b816097846040516104759190613259565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b606061035360c98484610aea565b6000806001600160a01b03166097836040516104d39190613259565b908152604051908190036020019020546001600160a01b0316146105315761031860008051602061355f8339815191526097846040516105139190613259565b908152604051908190036020019020546001600160a01b0316610642565b506000919050565b919050565b61056a6040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610cd6565b61057382610dfd565b61040360c98383610e57565b6105ab6040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610cd6565b6105b482610f26565b1515600114806105cd57506105c761103f565b15156001145b61062d5760405162461bcd60e51b815260206004820152602b60248201527f53656e646572206e65697468657220746865206f776e6572206e6f722074686560448201526a1030baba3437b934ba3c9760a91b60648201526084016103f0565b61063682610dfd565b61040360c98383611085565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6106996040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610cd6565b6106a960c98787878787876110f4565b6106b2866114df565b505050505050565b6106e66040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610cd6565b6106ef83610dfd565b61037f60c9848484611522565b600082815260656020526040902060010154610717816109f0565b61037f8383610a83565b61074d6040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610cd6565b61075683610dfd565b61037f60c984848461156a565b600061076e816109f0565b60006001600160a01b03166097836040516107899190613259565b908152604051908190036020019020546001600160a01b031614610403576107e760008051602061355f8339815191526097846040516107c99190613259565b908152604051908190036020019020546001600160a01b0316610a83565b60006097836040516107f99190613259565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6060806060806060600061084088886115b2565b151560011461088c5760405162461bcd60e51b81526020600482015260186024820152773ab23934903737ba1032bc34b9ba1037b71031b430b4b71760411b60448201526064016103f0565b6000610898898961160d565b905060006108c28a8360405180604001604052806003815260200162189a5960ea1b81525061165d565b905060006108f18b84604051806040016040528060088152602001670c8c2e8c290c2e6d60c31b8152506116bf565b90506108fe8b8484611723565b15935060008061090e8d86611797565b9350935050508260008151811061092757610927613275565b60200260200101519a508260018151811061094457610944613275565b602002602001015199506109598d8d86610aea565b98508097506109698d8684611931565b965050505050509295509295509295565b606060006109be8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5b92505050565b90506109e78582604051806040016040528060048152602001637564726960e01b81525061165d565b95945050505050565b6109fa8133611b7c565b50565b610a078282610642565b6104035760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610a3f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610a8d8282610642565b156104035760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060610af684846115b2565b1515600114610b425760405162461bcd60e51b81526020600482015260186024820152773ab23934903737ba1032bc34b9ba1037b71031b430b4b71760411b60448201526064016103f0565b6000610b4e858561160d565b90506000610b5b86611bd5565b90506000805b82518163ffffffff161015610bc557610b9b888588868563ffffffff1681518110610b8e57610b8e613275565b6020026020010151611c31565b151560011415610bb357610bb06001836132a1565b91505b80610bbd816132c9565b915050610b61565b5063ffffffff811615610ccc5760008163ffffffff166001600160401b03811115610bf257610bf2612c3d565b604051908082528060200260200182016040528015610c2557816020015b6060815260200190600190039081610c105790505b5090506000805b84518163ffffffff161015610cc657610c598a878a888563ffffffff1681518110610b8e57610b8e613275565b151560011415610cb457848163ffffffff1681518110610c7b57610c7b613275565b6020026020010151838363ffffffff1681518110610c9b57610c9b613275565b6020908102919091010152610cb16001836132a1565b91505b80610cbe816132c9565b915050610c2c565b50909450505b5050509392505050565b600080610ce460c933611cc9565b9092509050600182151514610d0b5760405162461bcd60e51b81526004016103f0906132ed565b6000610d1860c983611d7f565b9050610d9160405180604001604052806005815260200164195e1a5cdd60da1b815250610d8b610d81610d76886040518060400160405280600a8152602001693ab9b2b92fb937b6329d60b11b815250611da990919063ffffffff16565b805160209091012090565b6006850190611dd5565b90611e78565b1515600114610df75760405162461bcd60e51b815260206004820152602c60248201527f5573657220776974686f757420636f72726573706f6e64696e6720726f6c652060448201526b3832b936b4b9b9b4b7b7399760a11b60648201526084016103f0565b50505050565b610e0681610f26565b15156001146109fa5760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206973206e6f742065766964656e6365206f776e65722e00000060448201526064016103f0565b6000815111610ea05760405162461bcd60e51b81526020600482015260156024820152747661726961626c654461746120697320656d70747960581b60448201526064016103f0565b60028151610eae9190613324565b15610ecb5760405162461bcd60e51b81526004016103f090613346565b6040805180820190915260058152641c9a59da1d60da1b6020820152600090610ef49084611da9565b805190602001209050610df78482604051806040016040528060058152602001641c9a59da1d60da1b81525085611e9d565b600080610f5983604051806040016040528060058152602001641c9a59da1d60da1b815250611da990919063ffffffff16565b80516020909101209050600080610f7160c933611cc9565b9092509050600182151514610f985760405162461bcd60e51b81526004016103f0906132ed565b6000610fa560c985611fd6565b9050806008015460001415610ff55760405162461bcd60e51b815260206004820152601660248201527532bb34b232b731b29034b9903737ba10","32bc34b9ba1760511b60448201526064016103f0565b60006110288560405180604001604052806003815260200162189a5960ea1b81525060c961165d9092919063ffffffff16565b90506110348382611e78565b979650505050505050565b6000808061104e60c933611cc9565b90925090506001821515146110755760405162461bcd60e51b81526004016103f0906132ed565b61107e816104b7565b9250505090565b6040805180820190915260058152641c9a59da1d60da1b60208201526000906110ae9084611da9565b80519060200120905060006110df858360405180604001604052806003815260200162189a5960ea1b81525061165d565b90506110ed8583838661201c565b5050505050565b83516002146111455760405162461bcd60e51b815260206004820152601c60248201527f54686572652073686f756c642062652032204461746120486173682e0000000060448201526064016103f0565b61114f87856120b7565b1561119c5760405162461bcd60e51b815260206004820152601b60248201527f44617461204861736820616c7265616479206f6e20636861696e2e000000000060448201526064016103f0565b6111a687876115b2565b156111ec5760405162461bcd60e51b81526020600482015260166024820152753ab239349030b63932b0b23c9037b71031b430b4b71760511b60448201526064016103f0565b6111f6878661213b565b15156001146112395760405162461bcd60e51b815260206004820152600f60248201526e2ab9b2b9103737ba1032bc34b9ba1760891b60448201526064016103f0565b60006112458887611d7f565b9050611251888761216b565b6040805180820190915260058152641c9a59da1d60da1b602082015260009061127a9089611da9565b8051906020012090506112ac8982604051806040016040528060058152602001641c9a59da1d60da1b81525087612203565b6112ef8982604051806040016040528060078152602001663b32b939b4b7b760c91b815250604051806060016040528060368152602001613529603691396122d6565b6113178982604051806040016040528060048152602001637564726960e01b8152508b6122d6565b61133e898260405180604001604052806003815260200162189a5960ea1b8152508a6122d6565b61138689826040518060400160405280600681526020016573746174757360d01b8152506040518060400160405280600681526020016561637469766560d01b8152506122d6565b6113b28982604051806040016040528060088152602001670c8c2e8c290c2e6d60c31b815250896122fe565b6113bd898783612331565b6113c98982898861239b565b6113f1898289604051806040016040528060048152602001631a1bdb1960e21b815250611c31565b151560011461144d5760405162461bcd60e51b815260206004820152602260248201527f5468652064617461207269676874205b686f6c645d2069732072657175697265604482015261321760f11b60648201526084016103f0565b611458898983612429565b611463898883612472565b61148c8982604051806040016040528060058152602001641c9a59da1d60da1b81525086611e9d565b60006114bf61149a8361250a565b60408051808201909152600881526732b4b21d3732bb9d60c11b602082015290611da9565b90506114d38a828051906020012084612521565b50505050505050505050565b806040516114ed9190613259565b6040519081900381209033907f1e9e705b89a3a7e6d3b40713f80e40e7caa22dd69d1a218b45b11050ddf9cda890600090a350565b61152c848361216b565b6040805180820190915260058152641c9a59da1d60da1b60208201526000906115559085611da9565b8051906020012090506110ed8582858561239b565b611574848361216b565b6040805180820190915260058152641c9a59da1d60da1b602082015260009061159d9085611da9565b8051906020012090506110ed8582858561201c565b6000806116036115e784604051806040016040528060048152602001637564726960e01b815250611da990919063ffffffff16565b8051602091820120600090815260078701909152604090205490565b1515949350505050565b600061035361164183604051806040016040528060048152602001637564726960e01b815250611da990919063ffffffff16565b8051602091820120600090815260078601909152604090205490565b60008281526002840160205260409020600801546060906116905760405162461bcd60e51b81526004016103f09061337d565b815160208084019190912060008581526002808801909352604090206116b7920190611dd5565b949350505050565b60008281526002840160205260409020600801546060906116f25760405162461bcd60e51b81526004016103f09061337d565b6116b782805190602001208560020160008681526020019081526020016000206001016125b290919063ffffffff16565b60008061172f85611bd5565b90506000805b82518163ffffffff16101561178a57611762878787868563ffffffff1681518110610b8e57610b8e613275565b1515600114156117785760019350505050610353565b80611782816132c9565b915050611735565b5060009695505050505050565b60008181526002830160205260408120600881015481548392606092839281151591908390600682019082906117cc906133c1565b80601f01602080910402602001604051908101604052809291908181526020018280546117f8906133c1565b80156118455780601f1061181a57610100808354040283529160200191611845565b820191906000526020600020905b81548152906001019060200180831161182857829003601f168201915b5050505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561191957838290600052602060002001805461188c906133c1565b80601f01602080910402602001604051908101604052809291908181526020018280546118b8906133c1565b80156119055780601f106118da57610100808354040283529160200191611905565b820191906000526020600020905b8154815290600101906020018083116118e857829003601f168201915b50505050508152602001906001019061186d565b50505050905094509450945094505092959194509250565b6060600281516119419190613324565b1561195e5760405162461bcd60e51b81526004016103f090613346565b600061196a8585611fd6565b905060006119788685612696565b90506000805b82518163ffffffff1610156119fd576000838263ffffffff16815181106119a7576119a7613275565b6020026020010151905060006119d0828051906020012087600701611dd590919063ffffffff16565b8051909150156119e857836119e4816132c9565b9450505b505080806119f5906132c9565b91505061197e565b5063ffffffff811615610ccc57600080611a188360026133fc565b63ffffffff166001600160401b03811115611a3557611a35612c3d565b604051908082528060200260200182016040528015611a6857816020015b6060815260200190600190039081611a535790505b50905060005b84518163ffffffff161015611b4e576000858263ffffffff1681518110611a9757611a97613275565b602002602001015190506000611ac0828051906020012089600701611dd590919063ffffffff16565b805190915015611b395781848663ffffffff1681518110611ae357611ae3613275565b60209081029190910101528084611afb8760016132a1565b63ffffffff1681518110611b1157611b11613275565b60200260200101819052508580611b27906132c9565b9650611b3690508560026132a1565b94505b50508080611b46906132c9565b915050611a6e565b5098975050505050505050565b80516020808301919091206000908152600784019091526040812054610353565b611b868282610642565b61040357611b93816126f9565b611b9e83602061270b565b604051602001611baf929190613428565b60408051601f198184030181529082905262461bcd60e51b82526103f091600401612ed7565b6040805180820190915260148152733230ba30afb934b3b43a2fb1b0ba32b3b7b93c9d60611b60209091015260607fb67aaf8c3d37a20d791807426a86a6bbc7b112706f57e87aecb8da953695759461035360048401826125b2565b60408051808201909152600a8152693230ba30a934b3b43a1d60b11b602082015260009081611c6a84611c648488611da9565b90611da9565b90506000611c7988888461165d565b604080518082019091526005815264195e1a5cdd60da1b60209182015281519101207fb0b4e07bb5592f3d3821b2c1331b436763d7be555cf452d6c6836f74d5201e851498975050505050505050565b6001600160a01b038116600090815260208390526040812080546060918391611cf1906133c1565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1d906133c1565b8015611d6a5780601f10611d3f57610100808354040283529160200191611d6a565b820191906000526020600020905b815481529060010190602001808311611d4d57829003601f168201915b50508351151599939850929650505050505050565b60008260010182604051611d939190613259565b9081526020016040518091039020905092915050565b60608282604051602001611dbe92919061349d565b604051602081830303815290604052905092915050565b6000818152602083905260409020805460609190611df2906133c1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1e906133c1565b8015611e6b5780601f10611e4057610100808354040283529160200191611e6b565b820191906000526020600020905b815481529060010190602001808311611e4e57829003601f168201915b5050505050905092915050565b6000815183511480156103535750508051602091820120825192909101919091201490565b60028151611eab9190613324565b15611ec85760405162461bcd60e51b81526004016103f090613346565b6000611ed48585611fd6565b905060005b82518163ffffffff1610156106b2576000838263ffffffff1681518110611f0257611f02613275565b60200260200101519050600084836001611f1c91906132a1565b63ffffffff1681518110611f3257611f32613275565b60200260200101519050611f478887846128a6565b1515600114611fa95760405162461bcd60e51b815260206004820152602860248201527f50617274206f66207661726961626c6544617461206669656c64206973206e6f6044820152673a1030b63637bbb760c11b60648201526084016103f0565b81516020830120611fbf90600786019083612929565b505050600281611fcf91906132a1565b9050611ed9565b600081815260028301","60205260408120600801546120065760405162461bcd60e51b81526004016103f09061337d565b5060009081526002919091016020526040902090565b60408051808201909152600a8152693230ba30a934b3b43a1d60b11b602082015260005b82518163ffffffff1610156106b2576000612087848363ffffffff168151811061206c5761206c613275565b6020026020010151611c648786611da990919063ffffffff16565b90506120a4878783604051806020016040528060008152506122d6565b50806120af816132c9565b915050612040565b6000805b82518163ffffffff16101561213157600061210b848363ffffffff16815181106120e7576120e7613275565b6020026020010151805190602001208660040160030161259f90919063ffffffff16565b9050801561211e57600192505050610318565b5080612129816132c9565b9150506120bb565b5060009392505050565b6000826001018260405161214f9190613259565b908152604051908190036020019020600b015415159392505050565b60008151116121a85760405162461bcd60e51b81526020600482015260096024820152683134b21032b93937b960b91b60448201526064016103f0565b6121b2828261213b565b15156001146104035760405162461bcd60e51b815260206004820152601e60248201527f626974206e6f74207265676973746572206f6e207468697320636861696e000060448201526064016103f0565b6000838152600285016020526040902060080154156122705760405162461bcd60e51b8152602060048201526024808201527f45766964656e636553746f726167653a207564726920616c72656164792065786044820152636973747360e01b60648201526084016103f0565b60008381526002850160209081526040909120835161229192850190612aca565b506000838152600285016020908152604090912082516122b992600690920191840190612b4e565b505050600090815260029091016020526040902042600890910155565b815160208084019190912060008581526002808801909352604090206110ed92019083612929565b6110ed8280519060200120828660020160008781526020019081526020016000206001016129509092919063ffffffff16565b60005b82518163ffffffff161015610df757612388838263ffffffff168151811061235e5761235e613275565b60209081029190910181015180519082012060009081526007870190915260409020839055600190565b5080612393816132c9565b915050612334565b60408051808201909152600a8152693230ba30a934b3b43a1d60b11b602082015260005b82518163ffffffff1610156106b25760006123eb848363ffffffff168151811061206c5761206c613275565b905061241687878360405180604001604052806005815260200164195e1a5cdd60da1b8152506122d6565b5080612421816132c9565b9150506123bf565b6040805180820190915260048152637564726960e01b6020820152610df7906124529084611da9565b805160209182012060009081526007860190915260409020829055600190565b600083600101836040516124869190613259565b9081526020016040518091039020905060006124d6610d766124ab846003015461296c565b60408051808201909152600e81526d32afb934b3b43a1d34b73232bc1d60911b602082015290611da9565b60008181526008840160205260409020849055905060038201546124fb9060016134c3565b82600301819055505050505050565b60606103188261251981612977565b6001016129e1565b60008281526003840160205260409020541561258b5760405162461bcd60e51b815260206004820152602360248201527f45766964656e636553746f726167653a2062696420616c72656164792065786960448201526273747360e81b60648201526084016103f0565b600091825260039092016020526040902055565b6000908152602091909152604090205490565b600081815260208381526040808320805482518185028101850190935280835260609492939192909184015b8282101561268a5783829060005260206000200180546125fd906133c1565b80601f0160208091040260200160405190810160405280929190818152602001828054612629906133c1565b80156126765780601f1061264b57610100808354040283529160200191612676565b820191906000526020600020905b81548152906001019060200180831161265957829003601f168201915b5050505050815260200190600101906125de565b50505050905092915050565b606060006126e26040518060400160405280602081526020017f3a7661726961626c655f646174613a737570706f727465645f66696c6564733d81525084611da990919063ffffffff16565b805160208201209091506109e760048601826125b2565b60606103186001600160a01b03831660145b6060600061271a8360026134db565b6127259060026134c3565b6001600160401b0381111561273c5761273c612c3d565b6040519080825280601f01601f191660200182016040528015612766576020820181803683370190505b509050600360fc1b8160008151811061278157612781613275565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106127b0576127b0613275565b60200101906001600160f81b031916908160001a90535060006127d48460026134db565b6127df9060016134c3565b90505b6001811115612857576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061281357612813613275565b1a60f81b82828151811061282957612829613275565b60200101906001600160f81b031916908160001a90535060049490941c93612850816134fa565b90506127e2565b5083156103535760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016103f0565b6000806128ea83611c64604051806040016040528060128152602001717661726961626c655f646174613a6b65793d60701b81525087611da990919063ffffffff16565b8051602082012090915061291560068701826000908152602091909152604090205463ffffffff1690565b63ffffffff16600114925050509392505050565b6000828152602084815260408220835161294592850190612aca565b506001949350505050565b6000828152602084815260408220835161294592850190612b4e565b606061031882612519845b600080608083901c1561298f5760809290921c916010015b604083901c156129a45760409290921c916008015b602083901c156129b95760209290921c916004015b601083901c156129ce5760109290921c916002015b600883901c156103185760010192915050565b60608260006129f18460026134db565b6001600160401b03811115612a0857612a08612c3d565b6040519080825280601f01601f191660200182016040528015612a32576020820181803683370190505b5090506000612a428560026134db565b90505b8015612ac1576f181899199a1a9b1b9c1cb0b131b232b360811b83600f1660108110612a7357612a73613275565b1a60f81b82612a83600184613511565b81518110612a9357612a93613275565b60200101906001600160f81b031916908160001a90535060049290921c91612aba816134fa565b9050612a45565b50949350505050565b828054612ad6906133c1565b90600052602060002090601f016020900481019282612af85760008555612b3e565b82601f10612b1157805160ff1916838001178555612b3e565b82800160010185558215612b3e579182015b82811115612b3e578251825591602001919060010190612b23565b50612b4a929150612ba7565b5090565b828054828255906000526020600020908101928215612b9b579160200282015b82811115612b9b5782518051612b8b918491602090910190612aca565b5091602001919060010190612b6e565b50612b4a929150612bbc565b5b80821115612b4a5760008155600101612ba8565b80821115612b4a576000612bd08282612bd9565b50600101612bbc565b508054612be5906133c1565b6000825580601f10612bf5575050565b601f0160209004906000526020600020908101906109fa9190612ba7565b600060208284031215612c2557600080fd5b81356001600160e01b03198116811461035357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612c7b57612c7b612c3d565b604052919050565b600082601f830112612c9457600080fd5b81356001600160401b03811115612cad57612cad612c3d565b612cc0601f8201601f1916602001612c53565b818152846020838601011115612cd557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612d0457600080fd5b81356001600160401b03811115612d1a57600080fd5b6116b784828501612c83565b60005b83811015612d41578181015183820152602001612d29565b83811115610df75750506000910152565b60008151808452612d6a816020860160208601612d26565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612dc957601f19868403018952612db7838351612d52565b98840198925090830190600101612d9b565b5090979650505050505050565b60c081526000612de960c0830189612d52565b8281036020840152612dfb8189612d52565b90508281036040840152612e0f8188612d7e565b90508281036060840152612e238187612d7e565b90508281036080840152612e378186612d7e565b91505082151560a0830152979650505050505050565b600060208284031215612e5f57600080fd5b5035919050565b60008060208385031215612e7957600080fd5b82356001600160401b0380821115612e9057600080fd5b818501915085601f830112612ea457600080fd5b813581811115612eb357600080fd5b866020828501011115612ec557600080fd5b60209290920196919550909350505050565b6020815260006103536020830184612d52565b80356001600160a01b038116811461053957600080fd5b60008060408385031215612f1457600080fd5b82359150612f2460208401612eea565b90509250929050565b60008060408385031215612f4057600080fd5b82356001600160401b03811115612f5657600080fd5b612f6285828601612c83565b925050612f2460208401612eea565b60008060408385031215612f8457600080fd5b82356001600160401b0380821115612f9b57600080fd5b612fa786838701612c83565b93506020850135915080821115612fbd57600080fd5b50612fca85828601612c83565b9150509250929050565b6020815260006103536020","830184612d7e565b600082601f830112612ff857600080fd5b813560206001600160401b038083111561301457613014612c3d565b8260051b613023838201612c53565b938452858101830193838101908886111561303d57600080fd5b84880192505b858310156130795782358481111561305b5760008081fd5b6130698a87838c0101612c83565b8352509184019190840190613043565b98975050505050505050565b6000806040838503121561309857600080fd5b82356001600160401b03808211156130af57600080fd5b6130bb86838701612c83565b935060208501359150808211156130d157600080fd5b50612fca85828601612fe7565b60008060008060008060c087890312156130f757600080fd5b86356001600160401b038082111561310e57600080fd5b61311a8a838b01612c83565b9750602089013591508082111561313057600080fd5b61313c8a838b01612c83565b9650604089013591508082111561315257600080fd5b61315e8a838b01612fe7565b9550606089013591508082111561317457600080fd5b6131808a838b01612fe7565b9450608089013591508082111561319657600080fd5b6131a28a838b01612fe7565b935060a08901359150808211156131b857600080fd5b506131c589828a01612fe7565b9150509295509295509295565b6000806000606084860312156131e757600080fd5b83356001600160401b03808211156131fe57600080fd5b61320a87838801612c83565b9450602086013591508082111561322057600080fd5b61322c87838801612c83565b9350604086013591508082111561324257600080fd5b5061324f86828701612fe7565b9150509250925092565b6000825161326b818460208701612d26565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8083168185168083038211156132c0576132c061328b565b01949350505050565b600063ffffffff808316818114156132e3576132e361328b565b6001019392505050565b60208082526019908201527f53656e646572206973206e6f7420726567697374657265642e00000000000000604082015260600190565b60008261334157634e487b7160e01b600052601260045260246000fd5b500690565b60208082526019908201527f7661726961626c6544617461206c656e677468206572726f7200000000000000604082015260600190565b60208082526024908201527f45766964656e636553746f726167653a2045766964656e6365206e6f742065786040820152636973747360e01b606082015260800190565b600181811c908216806133d557607f821691505b602082108114156133f657634e487b7160e01b600052602260045260246000fd5b50919050565b600063ffffffff8083168185168183048111821515161561341f5761341f61328b565b02949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613460816017850160208801612d26565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613491816028840160208801612d26565b01602801949350505050565b600083516134af818460208801612d26565b8351908301906132c0818360208801612d26565b600082198211156134d6576134d661328b565b500190565b60008160001904831182151516156134f5576134f561328b565b500290565b6000816135095761350961328b565b506000190190565b6000828210156135235761352361328b565b50039056fe445245766964656e636553746f72616765436f6e7374616e742e45564944454e43455f434f4e54524143545f56455253494f4e5f563122f59c2f02edbae5c421247f029fe3112c5a85f70b4a48f5d93b22ada9ea772ea26469706673582212200229e7e811b585cd42e06ba74a85127d892fba60ce5b91337ffaf488e61e77ab64736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b506135d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063b6773ad8116100ad578063de92755c11610071578063de92755c14610266578063ea7eb79814610279578063eaa4244d1461028c578063fbd3f0bf146102b1578063fd09e7d6146102d457600080fd5b8063b6773ad8146101f8578063b70b2fbc1461020d578063c82ab81314610220578063d7fcb79114610233578063de1e5c901461024657600080fd5b80634d97da50116100f45780634d97da50146101895780635472010b1461019c578063a4ff64c2146101af578063a8666327146101c2578063b5aed06f146101d557600080fd5b806317d66dc8146101265780631b3240b81461013b5780634653e3a814610156578063474768bd14610169575b600080fd5b610139610134366004612c4e565b6102e7565b005b610143600081565b6040519081526020015b60405180910390f35b610139610164366004612dcd565b61036b565b61017c610177366004612e30565b61042f565b60405161014d9190612f36565b610139610197366004612dcd565b610446565b6101396101aa366004612c4e565b610487565b6101396101bd366004612f49565b6104b1565b6101396101d0366004612f7d565b61057a565b6101e86101e3366004612f49565b6105bc565b604051901515815260200161014d565b61014360008051602061354a83398151915281565b61013961021b366004613004565b610643565b61013961022e366004612f7d565b6106e5565b610139610241366004613048565b610727565b61025961025436600461313c565b610774565b60405161014d91906131ad565b6101e8610274366004612c4e565b610782565b6101e86102873660046131c0565b6107ad565b61029f61029a366004612f49565b6107e2565b60405161014d969594939291906131ea565b6101436102bf366004613261565b60009081526065602052604090206001015490565b6101396102e2366004612c4e565b610809565b6001600160a01b038116331461035d57604051636381e58960e11b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610367828261082a565b5050565b6103976040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610891565b6103a0826109ba565b1515600114806103b957506103b3610ad5565b15156001145b61041a57604051636381e58960e11b815260206004820152602b60248201527f53656e646572206e65697468657220746865206f776e6572206e6f722074686560448201526a1030baba3437b934ba3c9760a91b6064820152608401610354565b61042382610b1c565b61036760c98383610b7a565b606061043d60c98484610be9565b90505b92915050565b6104726040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610891565b61047b82610b1c565b61036760c98383610dd6565b6000828152606560205260409020600101546104a281610ea7565b6104ac8383610eb1565b505050565b60006104bc81610ea7565b60006001600160a01b03166097836040516104d7919061327a565b908152604051908190036020019020546001600160a01b0316146103675761053560008051602061354a833981519152609784604051610517919061327a565b908152604051908190036020019020546001600160a01b031661082a565b6000609783604051610547919061327a565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6105a66040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610891565b6105af83610b1c565b6104ac60c9848484610f37565b6000806001600160a01b03166097836040516105d8919061327a565b908152604051908190036020019020546001600160a01b0316146106365761044060008051602061354a833981519152609784604051610618919061327a565b908152604051908190036020019020546001600160a01b0316610782565b506000919050565b919050565b600061064e81610ea7565b60006001600160a01b0316609784604051610669919061327a565b908152604051908190036020019020546001600160a01b031614156104ac576106a060008051602061354a83398151915283610eb1565b816097846040516106b1919061327a565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6107116040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610891565b61071a83610b1c565b6104ac60c9848484610f7f565b6107536040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250610891565b61076360c9878787878787610fc7565b61076c866113b7565b505050505050565b606061043d60c984846113fa565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006001600160e01b03198216634df6077b60e11b14806104405750631d4fd6f360e31b6001600160e01b0319831614610440565b60608080808060006107f560c988611472565b949c939b5091995097509550909350915050565b60008281526065602052604090206001015461082481610ea7565b6104ac83835b6108348282610782565b156103675760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917fddf24a0d777ab37f0cd0acf6e2b0a75570d42c6500405e008f7f9a61836cf2a39190a45050565b60008061089f60c9336115c1565b90925090506001821515146108c757604051636381e58960e11b815260040161035490613296565b60006108d460c983611677565b905061094d60405180604001604052806005815260200164195e1a5cdd60da1b81525061094761093d610932886040518060400160405280600a8152602001693ab9b2b92fb937b6329d60b11b8152506116a190919063ffffffff16565b805160209091012090565b60068501906116cd565b90611770565b15156001146109b457604051636381e58960e11b815260206004820152602c60248201527f5573657220776974686f757420636f72726573706f6e64696e6720726f6c652060448201526b3832b936b4b9b9b4b7b7399760a11b6064820152608401610354565b50505050565b6000806109ed83604051806040016040528060058152602001641c9a59da1d60da1b8152506116a190919063ffffffff16565b80516020909101209050600080610a0560c9336115c1565b9092509050600182151514610a2d57604051636381e58960e11b815260040161035490613296565b6000610a3a60c985611795565b9050806008015460001415610a8b57604051636381e58960e11b815260206004820152601660248201527532bb34b232b731b29034b9903737ba1032bc34b9ba1760511b6044820152606401610354565b6000610abe8560405180604001604052806003815260200162189a5960ea1b81525060c96117dc9092919063ffffffff16565b9050610aca8382611770565b979650505050505050565b60008080610ae460c9336115c1565b9092509050600182151514610b0c57604051636381e58960e11b815260040161035490613296565b610b15816105bc565b9250505090565b610b25816109ba565b1515600114610b7757604051636381e58960e11b815260206004820152601d60248201527f53656e646572206973206e6f742065766964656e6365206f776e65722e0000006044820152606401610354565b50565b6040805180820190915260058152641c9a59da1d60da1b6020820152600090610ba390846116a1565b8051906020012090506000610bd4858360405180604001604052806003815260200162189a5960ea1b8152506117dc565b9050610be28583838661183f565b5050505050565b6060610bf584846118e0565b1515600114610c4257604051636381e58960e11b81526020600482015260186024820152773ab23934903737ba1032bc34b9ba1037b71031b430b4b71760411b6044820152606401610354565b6000610c4e858561193b565b90506000610c5b8661198b565b90506000805b82518163ffffffff161015610cc557610c9b888588868563ffffffff1681518110610c8e57610c8e6132cd565b60200260200101516119e7565b151560011415610cb357610cb06001836132f9565b91505b80610cbd81613321565b915050610c61565b5063ffffffff811615610dcc5760008163ffffffff166001600160401b03811115610cf257610cf2612c7a565b604051908082528060200260200182016040528015610d2557816020015b6060815260200190600190039081610d105790505b5090506000805b84518163ffffffff161015610dc657610d598a878a888563ffffffff1681518110610c8e57610c8e6132cd565b151560011415610db457848163ffffffff1681518110610d7b57610d7b6132cd565b6020026020010151838363ffffffff1681518110610d9b57610d9b6132cd565b6020908102919091010152610db16001836132f9565b91505b80610dbe81613321565b915050610d2c565b50909450505b5050509392505050565b6000815111610e2057604051636381e58960e11b81526020600482015260156024820152747661726961626c654461746120697320656d70747960581b6044820152606401610354565b60028151610e2e9190613345565b15610e4c57604051636381e58960e11b815260040161035490613367565b6040805180820190915260058152641c9a59da1d60da1b6020820152600090610e7590846116a1565b8051906020012090506109b48482604051806040016040528060058152602001641c9a59da1d60da1b81525085611a79565b610b778133611bb4565b610ebb8282610782565b6103675760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610ef33390565b6001600160a01b0316816001600160a01b0316837f3a8c19c5eddb5ca7fdd091f00e2b3978b86344c928af4d2d7f6733572cc06b4c60405160405180910390a45050565b610f418483611c0e565b6040805180820190915260058152641c9a59da1d60da1b6020820152600090610f6a90856116a1565b805190602001209050610be28582858561183f565b610f898483611c0e565b6040805180820190915260058152641c9a59da1d60da1b6020820152600090610fb290856116a1565b805190602001209050610be285828585611ca8565b835160021461101957604051636381e58960e11b81526020","6004820152601c60248201527f54686572652073686f756c642062652032204461746120486173682e000000006044820152606401610354565b6110238785611d36565b1561107157604051636381e58960e11b815260206004820152601b60248201527f44617461204861736820616c7265616479206f6e20636861696e2e00000000006044820152606401610354565b61107b87876118e0565b156110c257604051636381e58960e11b81526020600482015260166024820152753ab239349030b63932b0b23c9037b71031b430b4b71760511b6044820152606401610354565b6110cc8786611dba565b151560011461111057604051636381e58960e11b815260206004820152600f60248201526e2ab9b2b9103737ba1032bc34b9ba1760891b6044820152606401610354565b600061111c8887611677565b90506111288887611c0e565b6040805180820190915260058152641c9a59da1d60da1b602082015260009061115190896116a1565b8051906020012090506111838982604051806040016040528060058152602001641c9a59da1d60da1b81525087611dea565b6111c68982604051806040016040528060078152602001663b32b939b4b7b760c91b81525060405180606001604052806036815260200161356a60369139611ebe565b6111ee8982604051806040016040528060048152602001637564726960e01b8152508b611ebe565b611215898260405180604001604052806003815260200162189a5960ea1b8152508a611ebe565b61125d89826040518060400160405280600681526020016573746174757360d01b8152506040518060400160405280600681526020016561637469766560d01b815250611ebe565b6112898982604051806040016040528060088152602001670c8c2e8c290c2e6d60c31b81525089611ee6565b611294898783611f19565b6112a089828988611ca8565b6112c8898289604051806040016040528060048152602001631a1bdb1960e21b8152506119e7565b151560011461132557604051636381e58960e11b815260206004820152602260248201527f5468652064617461207269676874205b686f6c645d2069732072657175697265604482015261321760f11b6064820152608401610354565b611330898983611f83565b61133b898883611fcc565b6113648982604051806040016040528060058152602001641c9a59da1d60da1b81525086611a79565b600061139761137283612064565b60408051808201909152600881526732b4b21d3732bb9d60c11b6020820152906116a1565b90506113ab8a82805190602001208461207b565b50505050505050505050565b806040516113c5919061327a565b6040519081900381209033907f40c157c35684156b3087e01a6aaea91b9b4c2413c455634b6750f638d21160ed90600090a350565b6060600061143e8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120fa92505050565b90506114678582604051806040016040528060048152602001637564726960e01b8152506117dc565b9150505b9392505050565b6060806060806060600061148688886118e0565b15156001146114d357604051636381e58960e11b81526020600482015260186024820152773ab23934903737ba1032bc34b9ba1037b71031b430b4b71760411b6044820152606401610354565b60006114df898961193b565b905060006115098a8360405180604001604052806003815260200162189a5960ea1b8152506117dc565b905060006115388b84604051806040016040528060088152602001670c8c2e8c290c2e6d60c31b81525061211b565b90506115458b8484612180565b1593506000806115558d866121f4565b9350935050508260008151811061156e5761156e6132cd565b60200260200101519a508260018151811061158b5761158b6132cd565b602002602001015199506115a08d8d86610be9565b98508097506115b08d868461238e565b965050505050509295509295509295565b6001600160a01b0381166000908152602083905260408120805460609183916115e99061339e565b80601f01602080910402602001604051908101604052809291908181526020018280546116159061339e565b80156116625780601f1061163757610100808354040283529160200191611662565b820191906000526020600020905b81548152906001019060200180831161164557829003601f168201915b50508351151599939850929650505050505050565b6000826001018260405161168b919061327a565b9081526020016040518091039020905092915050565b606082826040516020016116b69291906133d9565b604051602081830303815290604052905092915050565b60008181526020839052604090208054606091906116ea9061339e565b80601f01602080910402602001604051908101604052809291908181526020018280546117169061339e565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b5050505050905092915050565b60008151835114801561043d5750508051602091820120825192909101919091201490565b60008181526002830160205260408120600801546117c657604051636381e58960e11b8152600401610354906133ff565b5060009081526002919091016020526040902090565b600082815260028401602052604090206008015460609061181057604051636381e58960e11b8152600401610354906133ff565b815160208084019190912060008581526002808801909352604090206118379201906116cd565b949350505050565b60408051808201909152600a8152693230ba30a934b3b43a1d60b11b602082015260005b82518163ffffffff16101561076c5760006118b0848363ffffffff168151811061188f5761188f6132cd565b60200260200101516118aa87866116a190919063ffffffff16565b906116a1565b90506118cd87878360405180602001604052806000815250611ebe565b50806118d881613321565b915050611863565b60008061193161191584604051806040016040528060048152602001637564726960e01b8152506116a190919063ffffffff16565b8051602091820120600090815260078701909152604090205490565b1515949350505050565b600061043d61196f83604051806040016040528060048152602001637564726960e01b8152506116a190919063ffffffff16565b8051602091820120600090815260078601909152604090205490565b6040805180820190915260148152733230ba30afb934b3b43a2fb1b0ba32b3b7b93c9d60611b60209091015260607f1ef121f667bed00cfcfc37c32099dffa7438068261cb3a514d9463678184448261146b60048401826125cc565b60408051808201909152600a8152693230ba30a934b3b43a1d60b11b602082015260009081611a1a846118aa84886116a1565b90506000611a298888846117dc565b604080518082019091526005815264195e1a5cdd60da1b60209182015281519101207f333682e8896f9ac5ad40b64ca8defda834eba071426a71626de981219247a47e1498975050505050505050565b60028151611a879190613345565b15611aa557604051636381e58960e11b815260040161035490613367565b6000611ab18585611795565b905060005b82518163ffffffff16101561076c576000838263ffffffff1681518110611adf57611adf6132cd565b60200260200101519050600084836001611af991906132f9565b63ffffffff1681518110611b0f57611b0f6132cd565b60200260200101519050611b248887846126b0565b1515600114611b8757604051636381e58960e11b815260206004820152602860248201527f50617274206f66207661726961626c6544617461206669656c64206973206e6f6044820152673a1030b63637bbb760c11b6064820152608401610354565b81516020830120611b9d90600786019083612733565b505050600281611bad91906132f9565b9050611ab6565b611bbe8282610782565b61036757611bcb8161275a565b611bd683602061276c565b604051602001611be7929190613443565b60408051601f1981840301815290829052636381e58960e11b8252610354916004016131ad565b6000815111611c4c57604051636381e58960e11b81526020600482015260096024820152683134b21032b93937b960b91b6044820152606401610354565b611c568282611dba565b151560011461036757604051636381e58960e11b815260206004820152601e60248201527f626974206e6f74207265676973746572206f6e207468697320636861696e00006044820152606401610354565b60408051808201909152600a8152693230ba30a934b3b43a1d60b11b602082015260005b82518163ffffffff16101561076c576000611cf8848363ffffffff168151811061188f5761188f6132cd565b9050611d2387878360405180604001604052806005815260200164195e1a5cdd60da1b815250611ebe565b5080611d2e81613321565b915050611ccc565b6000805b82518163ffffffff161015611db0576000611d8a848363ffffffff1681518110611d6657611d666132cd565b602002602001015180519060200120866004016003016125b990919063ffffffff16565b90508015611d9d57600192505050610440565b5080611da881613321565b915050611d3a565b5060009392505050565b60008260010182604051611dce919061327a565b908152604051908190036020019020600b015415159392505050565b600083815260028501602052604090206008015415611e5857604051636381e58960e11b8152602060048201526024808201527f45766964656e636553746f726167653a207564726920616c72656164792065786044820152636973747360e01b6064820152608401610354565b600083815260028501602090815260409091208351611e7992850190612aee565b50600083815260028501602090815260409091208251611ea192600690920191840190612b72565b505050600090815260029091016020526040902042600890910155565b81516020808401919091206000858152600280880190935260409020610be292019083612733565b610be28280519060200120828660020160008781526020019081526020016000206001016129089092919063ffffffff16565b60005b82518163ffffffff1610156109b457611f70838263ffffffff1681518110611f4657611f466132cd565b60209081029190910181015180519082012060009081526007870190915260409020839055600190565b5080611f7b81613321565b915050611f1c565b6040805180820190915260048152637564726960e01b60208201526109b490611fac90846116a1565b805160209182012060009081526007860190915260409020829055600190565b60008360010183604051611fe0919061327a56","5b9081526020016040518091039020905060006120306109326120058460030154612924565b60408051808201909152600e81526d32afb934b3b43a1d34b73232bc1d60911b6020820152906116a1565b60008181526008840160205260409020849055905060038201546120559060016134b8565b82600301819055505050505050565b6060610440826120738161292f565b600101612999565b6000828152600384016020526040902054156120e657604051636381e58960e11b815260206004820152602360248201527f45766964656e636553746f726167653a2062696420616c72656164792065786960448201526273747360e81b6064820152608401610354565b600091825260039092016020526040902055565b8051602080830191909120600090815260078401909152604081205461043d565b600082815260028401602052604090206008015460609061214f57604051636381e58960e11b8152600401610354906133ff565b61183782805190602001208560020160008681526020019081526020016000206001016125cc90919063ffffffff16565b60008061218c8561198b565b90506000805b82518163ffffffff1610156121e7576121bf878787868563ffffffff1681518110610c8e57610c8e6132cd565b1515600114156121d5576001935050505061146b565b806121df81613321565b915050612192565b5060009695505050505050565b60008181526002830160205260408120600881015481548392606092839281151591908390600682019082906122299061339e565b80601f01602080910402602001604051908101604052809291908181526020018280546122559061339e565b80156122a25780601f10612277576101008083540402835291602001916122a2565b820191906000526020600020905b81548152906001019060200180831161228557829003601f168201915b5050505050915080805480602002602001604051908101604052809291908181526020016000905b828210156123765783829060005260206000200180546122e99061339e565b80601f01602080910402602001604051908101604052809291908181526020018280546123159061339e565b80156123625780601f1061233757610100808354040283529160200191612362565b820191906000526020600020905b81548152906001019060200180831161234557829003601f168201915b5050505050815260200190600101906122ca565b50505050905094509450945094505092959194509250565b60606002815161239e9190613345565b156123bc57604051636381e58960e11b815260040161035490613367565b60006123c88585611795565b905060006123d68685612a82565b90506000805b82518163ffffffff16101561245b576000838263ffffffff1681518110612405576124056132cd565b60200260200101519050600061242e8280519060200120876007016116cd90919063ffffffff16565b805190915015612446578361244281613321565b9450505b5050808061245390613321565b9150506123dc565b5063ffffffff811615610dcc576000806124768360026134d0565b63ffffffff166001600160401b0381111561249357612493612c7a565b6040519080825280602002602001820160405280156124c657816020015b60608152602001906001900390816124b15790505b50905060005b84518163ffffffff1610156125ac576000858263ffffffff16815181106124f5576124f56132cd565b60200260200101519050600061251e8280519060200120896007016116cd90919063ffffffff16565b8051909150156125975781848663ffffffff1681518110612541576125416132cd565b602090810291909101015280846125598760016132f9565b63ffffffff168151811061256f5761256f6132cd565b6020026020010181905250858061258590613321565b965061259490508560026132f9565b94505b505080806125a490613321565b9150506124cc565b5098975050505050505050565b6000908152602091909152604090205490565b600081815260208381526040808320805482518185028101850190935280835260609492939192909184015b828210156126a45783829060005260206000200180546126179061339e565b80601f01602080910402602001604051908101604052809291908181526020018280546126439061339e565b80156126905780601f1061266557610100808354040283529160200191612690565b820191906000526020600020905b81548152906001019060200180831161267357829003601f168201915b5050505050815260200190600101906125f8565b50505050905092915050565b6000806126f4836118aa604051806040016040528060128152602001717661726961626c655f646174613a6b65793d60701b815250876116a190919063ffffffff16565b8051602082012090915061271f60068701826000908152602091909152604090205463ffffffff1690565b63ffffffff16600114925050509392505050565b6000828152602084815260408220835161274f92850190612aee565b506001949350505050565b60606104406001600160a01b03831660145b6060600061277b8360026134fc565b6127869060026134b8565b6001600160401b0381111561279d5761279d612c7a565b6040519080825280601f01601f1916602001820160405280156127c7576020820181803683370190505b509050600360fc1b816000815181106127e2576127e26132cd565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612811576128116132cd565b60200101906001600160f81b031916908160001a90535060006128358460026134fc565b6128409060016134b8565b90505b60018111156128b8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612874576128746132cd565b1a60f81b82828151811061288a5761288a6132cd565b60200101906001600160f81b031916908160001a90535060049490941c936128b18161351b565b9050612843565b50831561043d57604051636381e58960e11b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610354565b6000828152602084815260408220835161274f92850190612b72565b606061044082612073845b600080608083901c156129475760809290921c916010015b604083901c1561295c5760409290921c916008015b602083901c156129715760209290921c916004015b601083901c156129865760109290921c916002015b600883901c156104405760010192915050565b60608260006129a98460026134fc565b6001600160401b038111156129c0576129c0612c7a565b6040519080825280601f01601f1916602001820160405280156129ea576020820181803683370190505b50905060006129fa8560026134fc565b90505b8015612a79576f181899199a1a9b1b9c1cb0b131b232b360811b83600f1660108110612a2b57612a2b6132cd565b1a60f81b82612a3b600184613532565b81518110612a4b57612a4b6132cd565b60200101906001600160f81b031916908160001a90535060049290921c91612a728161351b565b90506129fd565b50949350505050565b60606000612ace6040518060400160405280602081526020017f3a7661726961626c655f646174613a737570706f727465645f66696c6564733d815250846116a190919063ffffffff16565b80516020820120909150612ae560048601826125cc565b95945050505050565b828054612afa9061339e565b90600052602060002090601f016020900481019282612b1c5760008555612b62565b82601f10612b3557805160ff1916838001178555612b62565b82800160010185558215612b62579182015b82811115612b62578251825591602001919060010190612b47565b50612b6e929150612bcb565b5090565b828054828255906000526020600020908101928215612bbf579160200282015b82811115612bbf5782518051612baf918491602090910190612aee565b5091602001919060010190612b92565b50612b6e929150612be0565b5b80821115612b6e5760008155600101612bcc565b80821115612b6e576000612bf48282612bfd565b50600101612be0565b508054612c099061339e565b6000825580601f10612c19575050565b601f016020900490600052602060002090810190610b779190612bcb565b80356001600160a01b038116811461063e57600080fd5b60008060408385031215612c6157600080fd5b82359150612c7160208401612c37565b90509250929050565b63b95aa35560e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cb857612cb8612c7a565b604052919050565b600082601f830112612cd157600080fd5b81356001600160401b03811115612cea57612cea612c7a565b612cfd601f8201601f1916602001612c90565b818152846020838601011115612d1257600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112612d4057600080fd5b813560206001600160401b0380831115612d5c57612d5c612c7a565b8260051b612d6b838201612c90565b9384528581018301938381019088861115612d8557600080fd5b84880192505b85831015612dc157823584811115612da35760008081fd5b612db18a87838c0101612cc0565b8352509184019190840190612d8b565b98975050505050505050565b60008060408385031215612de057600080fd5b82356001600160401b0380821115612df757600080fd5b612e0386838701612cc0565b93506020850135915080821115612e1957600080fd5b50612e2685828601612d2f565b9150509250929050565b60008060408385031215612e4357600080fd5b82356001600160401b0380821115612e5a57600080fd5b612e6686838701612cc0565b93506020850135915080821115612e7c57600080fd5b50612e2685828601612cc0565b60005b83811015612ea4578181015183820152602001612e8c565b838111156109b45750506000910152565b60008151808452612ecd816020860160208601612e89565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015612f29578284038952612f17848351612eb5565b98850198935090840190600101612eff565b5091979650505050505050565b60208152600061043d6020830184612ee1565b600060208284031215612f5b57600080fd5b81356001600160401b03811115612f7157600080fd5b61183784828501612cc0565b600080600060608486031215612f9257600080fd5b83356001600160401b0380821115612fa957600080fd5b612fb587838801612cc0565b94506020860135915080821115612fcb57600080fd5b612fd787838801612cc0565b9350604086013591","5080821115612fed57600080fd5b50612ffa86828701612d2f565b9150509250925092565b6000806040838503121561301757600080fd5b82356001600160401b0381111561302d57600080fd5b61303985828601612cc0565b925050612c7160208401612c37565b60008060008060008060c0878903121561306157600080fd5b86356001600160401b038082111561307857600080fd5b6130848a838b01612cc0565b9750602089013591508082111561309a57600080fd5b6130a68a838b01612cc0565b965060408901359150808211156130bc57600080fd5b6130c88a838b01612d2f565b955060608901359150808211156130de57600080fd5b6130ea8a838b01612d2f565b9450608089013591508082111561310057600080fd5b61310c8a838b01612d2f565b935060a089013591508082111561312257600080fd5b5061312f89828a01612d2f565b9150509295509295509295565b6000806020838503121561314f57600080fd5b82356001600160401b038082111561316657600080fd5b818501915085601f83011261317a57600080fd5b81358181111561318957600080fd5b86602082850101111561319b57600080fd5b60209290920196919550909350505050565b60208152600061043d6020830184612eb5565b6000602082840312156131d257600080fd5b81356001600160e01b03198116811461043d57600080fd5b60c0815260006131fd60c0830189612eb5565b828103602084015261320f8189612eb5565b905082810360408401526132238188612ee1565b905082810360608401526132378187612ee1565b9050828103608084015261324b8186612ee1565b91505082151560a0830152979650505050505050565b60006020828403121561327357600080fd5b5035919050565b6000825161328c818460208701612e89565b9190910192915050565b60208082526019908201527f53656e646572206973206e6f7420726567697374657265642e00000000000000604082015260600190565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052601160045260246000fd5b600063ffffffff808316818516808303821115613318576133186132e3565b01949350505050565b600063ffffffff8083168181141561333b5761333b6132e3565b6001019392505050565b6000826133625763b95aa35560e01b600052601260045260246000fd5b500690565b60208082526019908201527f7661726961626c6544617461206c656e677468206572726f7200000000000000604082015260600190565b600181811c908216806133b257607f821691505b602082108114156133d35763b95aa35560e01b600052602260045260246000fd5b50919050565b600083516133eb818460208801612e89565b835190830190613318818360208801612e89565b60208082526024908201527f45766964656e636553746f726167653a2045766964656e6365206e6f742065786040820152636973747360e01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161347b816017850160208801612e89565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134ac816028840160208801612e89565b01602801949350505050565b600082198211156134cb576134cb6132e3565b500190565b600063ffffffff808316818516818304811182151516156134f3576134f36132e3565b02949350505050565b6000816000190483118215151615613516576135166132e3565b500290565b60008161352a5761352a6132e3565b506000190190565b600082821015613544576135446132e3565b50039056fecda5c054d055f48a2866e1a28d72f8145e422f1db1872bc4c9fe2888702c9f8d445245766964656e636553746f72616765436f6e7374616e742e45564944454e43455f434f4e54524143545f56455253494f4e5f5631a2646970667358221220b332bee4c58bd03e45f71ffbc76c1cef64051471ae87ac7826efba3c32f56ea764736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"NewReviewEvidenceStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"name\":\"NewRightEvidenceStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"usci\",\"type\":\"string\"}],\"name\":\"UserCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"UserRoleChanged\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[2719481311,456278200],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"USERMANAGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[852968231,3061267160],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataHash\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"name\":\"addDataRightEvidence\",\"outputs\":[],\"selector\":[2635209621,3623663505],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"name\":\"appendVariableData\",\"outputs\":[],\"selector\":[2138450037,1301797456],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"name\":\"getRegisteredData\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"dataHashSM\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"dataHashSHA\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"},{\"internalType\":\"bool\",\"name\":\"isWithdraw\",\"type\":\"bool\"}],\"selector\":[208288129,3936625741],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[613063843,4224970943],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"dataHash\",\"type\":\"string\"}],\"name\":\"getUdriByDatahash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"selector\":[633708824,3726531728],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"getUserDataRight\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"}],\"selector\":[1105228669,1195862205],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"selector\":[791671133,1416757515],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"}],\"name\":\"grantUserDataRight\",\"outputs\":[],\"selector\":[3258251539,3358242835],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"grantUserManagePermission\",\"outputs\":[],\"selector\":[1037211317,3070963644],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[2446411860,3734140252],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":101,\"value\":[34,245,156,47,2,237,186,229,196,33,36,127,2,159,227,17,44,90,133,247,11,74,72,245,217,59,34,173,169,234,119,46]}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"hasUserManageRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[1290417574,3048132719],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"selector\":[911641278,399928776],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"selector\":[3578229791,4245284822],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"revokeUserManagePermission\",\"outputs\":[],\"selector\":[4233016450,2768200898],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[33540519,3934173080],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":2,\"slot\":201,\"value\":[0]},{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"}],\"name\":\"withdrawDataRightRegister\",\"outputs\":[],\"selector\":[2392051885,1179902888],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"}],\"name\":\"withdrawUserDataRight\",\"outputs\":","[],\"selector\":[4211774851,2825282343],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_DEFAULT_ADMIN_ROLE = "DEFAULT_ADMIN_ROLE"; + + public static final String FUNC_USERMANAGE_ROLE = "USERMANAGE_ROLE"; + + public static final String FUNC_ADDDATARIGHTEVIDENCE = "addDataRightEvidence"; + + public static final String FUNC_APPENDVARIABLEDATA = "appendVariableData"; + + public static final String FUNC_GETREGISTEREDDATA = "getRegisteredData"; + + public static final String FUNC_GETROLEADMIN = "getRoleAdmin"; + + public static final String FUNC_GETUDRIBYDATAHASH = "getUdriByDatahash"; + + public static final String FUNC_GETUSERDATARIGHT = "getUserDataRight"; + + public static final String FUNC_GRANTROLE = "grantRole"; + + public static final String FUNC_GRANTUSERDATARIGHT = "grantUserDataRight"; + + public static final String FUNC_GRANTUSERMANAGEPERMISSION = "grantUserManagePermission"; + + public static final String FUNC_HASROLE = "hasRole"; + + public static final String FUNC_HASUSERMANAGEROLE = "hasUserManageRole"; + + public static final String FUNC_RENOUNCEROLE = "renounceRole"; + + public static final String FUNC_REVOKEROLE = "revokeRole"; + + public static final String FUNC_REVOKEUSERMANAGEPERMISSION = "revokeUserManagePermission"; + + public static final String FUNC_SUPPORTSINTERFACE = "supportsInterface"; + + public static final String FUNC_WITHDRAWDATARIGHTREGISTER = "withdrawDataRightRegister"; + + public static final String FUNC_WITHDRAWUSERDATARIGHT = "withdrawUserDataRight"; + + public static final Event INITIALIZED_EVENT = new Event("Initialized", + Arrays.>asList(new TypeReference() {})); + ; + + public static final Event NEWREVIEWEVIDENCESTORED_EVENT = new Event("NewReviewEvidenceStored", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event NEWRIGHTEVIDENCESTORED_EVENT = new Event("NewRightEvidenceStored", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEADMINCHANGED_EVENT = new Event("RoleAdminChanged", + Arrays.>asList(new TypeReference(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEGRANTED_EVENT = new Event("RoleGranted", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event ROLEREVOKED_EVENT = new Event("RoleRevoked", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event USERCREATED_EVENT = new Event("UserCreated", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event USERROLECHANGED_EVENT = new Event("UserRoleChanged", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + protected DREvidenceRightController(String contractAddress, Client client, + CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getInitializedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(INITIALIZED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + InitializedEventResponse typedResponse = new InitializedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.version = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getNewReviewEvidenceStoredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(NEWREVIEWEVIDENCESTORED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + NewReviewEvidenceStoredEventResponse typedResponse = new NewReviewEvidenceStoredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.udri = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.index = (BigInteger) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getNewRightEvidenceStoredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(NEWRIGHTEVIDENCESTORED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + NewRightEvidenceStoredEventResponse typedResponse = new NewRightEvidenceStoredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.udri = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleAdminChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEADMINCHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleAdminChangedEventResponse typedResponse = new RoleAdminChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.previousAdminRole = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.newAdminRole = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleGrantedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEGRANTED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleGrantedEventResponse typedResponse = new RoleGrantedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleRevokedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEREVOKED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleRevokedEventResponse typedResponse = new RoleRevokedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUserCreatedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(USERCREATED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UserCreatedEventResponse typedResponse = new UserCreatedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.bid = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.usci = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUserRoleChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(USERROLECHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UserRoleChangedEventResponse typedResponse = new UserRoleChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.bid = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public byte[] DEFAULT_ADMIN_ROLE() throws ContractException { + final Function function = new Function(FUNC_DEFAULT_ADMIN_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public byte[] USERMANAGE_ROLE() throws ContractException { + final Function function = new Function(FUNC_USERMANAGE_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public TransactionReceipt addDataRightEvidence(String udri, String bid, List dataHash, + List dataRight, List metaData, List variableData) { + final Function function = new Function( + FUNC_ADDDATARIGHTEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForAddDataRightEvidence(String udri, String bid, + List dataHash, List dataRight, List metaData, + List variableData) { + final Function function = new Function( + FUNC_ADDDATARIGHTEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String addDataRightEvidence(String udri, String bid, List dataHash, + List dataRight, List metaData, List variableData, + TransactionCallback callback) { + final Function function = new Function( + FUNC_ADDDATARIGHTEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple6, List, List, List> getAddDataRightEvidenceInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_ADDDATARIGHTEVIDENCE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple6, List, List, List>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + convertToNative((List) results.get(3).getValue()), + convertToNative((List) results.get(4).getValue()), + convertToNative((List) results.get(5).getValue()) + ); + } + + public TransactionReceipt appendVariableData(String udri, List variableData) { + final Function function = new Function( + FUNC_APPENDVARIABLEDATA, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForAppendVariableData(String udri, + List variableData) { + final Function function = new Function( + FUNC_APPENDVARIABLEDATA, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String appendVariableData(String udri, List variableData, + TransactionCallback callback) { + final Function function = new Function( + FUNC_APPENDVARIABLEDATA, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getAppendVariableDataInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_APPENDVARIABLEDATA, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public Tuple6, List, List, Boolean> getRegisteredData( + String udri) throws ContractException { + final Function function = new Function(FUNC_GETREGISTEREDDATA, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri)), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple6, List, List, Boolean>( + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + convertToNative((List) results.get(3).getValue()), + convertToNative((List) results.get(4).getValue()), + (Boolean) results.get(5).getValue()); + } + + public byte[] getRoleAdmin(byte[] role) throws ContractException { + final Function function = new Function(FUNC_GETROLEADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public String getUdriByDatahash(String dataHash) throws ContractException { + final Function function = new Function(FUNC_GETUDRIBYDATAHASH, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(dataHash)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public List getUserDataRight(String udri, String bid) throws ContractException { + final Function function = new Function(FUNC_GETUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public TransactionReceipt grantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String grantRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt grantUserDataRight(String udri, String bid, List dataRight) { + final Function function = new Function( + FUNC_GRANTUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserDataRight(String udri, String bid, + List dataRight) { + final Function function = new Function( + FUNC_GRANTUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String grantUserDataRight(String udri, String bid, List dataRight, + TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple3> getGrantUserDataRightInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERDATARIGHT, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple3>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()) + ); + } + + public TransactionReceipt grantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserManagePermission(String bid, String user, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public Boolean hasRole(byte[] role, String account) throws ContractException { + final Function function = new Function(FUNC_HASROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public Boolean hasUserManageRole(String bid) throws ContractException { + final Function function = new Function(FUNC_HASUSERMANAGEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public TransactionReceipt renounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRenounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String renounceRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRenounceRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_RENOUNCEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String revokeRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRevokeRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeUserManagePermission(String bid, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getRevokeUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public Boolean supportsInterface(byte[] interfaceId) throws ContractException { + final Function function = new Function(FUNC_SUPPORTSINTERFACE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4(interfaceId)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public TransactionReceipt withdrawDataRightRegister(String udri, List dataRight) { + final Function function = new Function( + FUNC_WITHDRAWDATARIGHTREGISTER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForWithdrawDataRightRegister(String udri, + List dataRight) { + final Function function = new Function( + FUNC_WITHDRAWDATARIGHTREGISTER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String withdrawDataRightRegister(String udri, List dataRight, + TransactionCallback callback) { + final Function function = new Function( + FUNC_WITHDRAWDATARIGHTREGISTER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getWithdrawDataRightRegisterInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_WITHDRAWDATARIGHTREGISTER, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public TransactionReceipt withdrawUserDataRight(String udri, String bid, + List dataRight) { + final Function function = new Function( + FUNC_WITHDRAWUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForWithdrawUserDataRight(String udri, String bid, + List dataRight) { + final Function function = new Function( + FUNC_WITHDRAWUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String withdrawUserDataRight(String udri, String bid, List dataRight, + TransactionCallback callback) { + final Function function = new Function( + FUNC_WITHDRAWUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple3> getWithdrawUserDataRightInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_WITHDRAWUSERDATARIGHT, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple3>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()) + ); + } + + public static DREvidenceRightController load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new DREvidenceRightController(contractAddress, client, credential); + } + + public static DREvidenceRightController deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(DREvidenceRightController.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } + + public static class InitializedEventResponse { + public TransactionReceipt.Logs log; + + public BigInteger version; + } + + public static class NewReviewEvidenceStoredEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] udri; + + public BigInteger index; + } + + public static class NewRightEvidenceStoredEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] udri; + } + + public static class RoleAdminChangedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public byte[] previousAdminRole; + + public byte[] newAdminRole; + } + + public static class RoleGrantedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class RoleRevokedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class UserCreatedEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] bid; + + public byte[] usci; + } + + public static class UserRoleChangedEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] bid; + } +} diff --git a/java/DREvidenceUserController.java b/java/DREvidenceUserController.java new file mode 100644 index 0000000000000000000000000000000000000000..a813e3090e791f42da27d774658de86461e87583 --- /dev/null +++ b/java/DREvidenceUserController.java @@ -0,0 +1,781 @@ +package com.btsi.contract; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple3; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple5; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class DREvidenceUserController extends Contract { + public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b5061253f806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a6c5203116100ad578063a484094511610071578063a48409451461028b578063abf0d06c1461029e578063c115b334146102b1578063d547741f146102c4578063fc4eb482146102d757600080fd5b80638a6c52031461022857806391d148541461023b578063948f88a41461024e578063996b4f6514610261578063a217fddf1461028357600080fd5b806330a76b38116100f457806330a76b38146101c757806332d74327146101da57806336568abe146101ef5780633dd296b5146102025780634cea35a61461021557600080fd5b806301ffc9a714610131578063114003c014610159578063236419ae1461016e578063248a9ca3146101835780632f2ff15d146101b4575b600080fd5b61014461013f366004611d19565b6102ea565b60405190151581526020015b60405180910390f35b610161610321565b6040516101509190611df7565b61018161017c366004611f5d565b610330565b005b6101a6610191366004611fc0565b60009081526065602052604090206001015490565b604051908152602001610150565b6101816101c2366004611ff0565b610362565b6101a66101d536600461201c565b610387565b6101a66000805160206124ea83398151915281565b6101816101fd366004611ff0565b61039c565b61018161021036600461208d565b61041f565b6101446102233660046120d1565b6104c1565b610181610236366004611f5d565b610548565b610144610249366004611ff0565b61056c565b61016161025c366004612105565b610597565b61027461026f3660046120d1565b6105ae565b60405161015093929190612152565b6101a6600081565b6101a661029936600461201c565b6105ca565b6101616102ac366004612105565b6105d8565b6101816102bf366004612195565b6105e7565b6101816102d2366004611ff0565b610620565b6101816102e53660046120d1565b610645565b60006001600160e01b03198216637965db0b60e01b148061031b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606061032b61070e565b905090565b6000805160206124ea83398151915261034881610845565b61035460c98484610852565b61035d83610936565b505050565b60008281526065602052604090206001015461037d81610845565b61035d8383610979565b600061039560c984846109ff565b9392505050565b6001600160a01b03811633146104115760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61041b8282610ab1565b5050565b600061042a81610845565b60006001600160a01b03166097846040516104459190612252565b908152604051908190036020019020546001600160a01b0316141561035d5761047c6000805160206124ea83398151915283610979565b8160978460405161048d9190612252565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6000806001600160a01b03166097836040516104dd9190612252565b908152604051908190036020019020546001600160a01b03161461053b5761031b6000805160206124ea83398151915260978460405161051d9190612252565b908152604051908190036020019020546001600160a01b031661056c565b506000919050565b919050565b6000805160206124ea83398151915261056081610845565b61035460c98484610b18565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606105a660c9858585610bbe565b949350505050565b606080806105bd60c985610d65565b9250925092509193909250565b600061039560c98484611090565b60606105a660c985858561119b565b6000805160206124ea8339815191526105ff81610845565b61060e60c98787878787611361565b61061886866113f3565b505050505050565b60008281526065602052604090206001015461063b81610845565b61035d8383610ab1565b600061065081610845565b60006001600160a01b031660978360405161066b9190612252565b908152604051908190036020019020546001600160a01b03161461041b576106c96000805160206124ea8339815191526097846040516106ab9190612252565b908152604051908190036020019020546001600160a01b0316610ab1565b60006097836040516106db9190612252565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161072a5790505090506040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b815250816000815181106107785761077861226e565b6020026020010181905250604051806040016040528060088152602001673932bb34b2bbb2b960c11b815250816001815181106107b7576107b761226e565b602002602001018190525060405180604001604052806008815260200167726567697374727960c01b815250816002815181106107f6576107f661226e565b602002602001018190525060405180604001604052806008815260200167706c6174666f726d60c01b815250816003815181106108355761083561226e565b6020908102919091010152919050565b61084f813361144d565b50565b61085c83836114a6565b151560011461087d5760405162461bcd60e51b815260040161040890612284565b600061088984846114d6565b905060005b82518163ffffffff16101561092f5761091c6109026108f7858463ffffffff16815181106108be576108be61226e565b60200260200101516040518060400160405280600a8152602001693ab9b2b92fb937b6329d60b11b81525061150090919063ffffffff16565b805160209091012090565b60408051602081019091526000815260068501919061152c565b5080610927816122c3565b91505061088e565b5050505050565b806040516109449190612252565b6040519081900381209033907fdd2f0ff624b9c92ddbabb6bf255ed1f136e703bc61e7f3f5a9be8383f9a3b81390600090a350565b610983828261056c565b61041b5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556109bb3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610a418484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a692505050565b1515600114610a625760405162461bcd60e51b8152600401610408906122e7565b6000610aa48585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b6003015495945050505050565b610abb828261056c565b1561041b5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610b2283836114a6565b1515600114610b435760405162461bcd60e51b815260040161040890612284565b6000610b4f84846114d6565b905060005b82518163ffffffff16101561092f57610bab610b846108f7858463ffffffff16815181106108be576108be61226e565b604080518082019091526005815264195e1a5cdd60da1b602082015260068501919061152c565b5080610bb6816122c3565b915050610b54565b6060610bca85856114a6565b1515600114610beb5760405162461bcd60e51b8152600401610408906122e7565b60008211610c2f5760405162461bcd60e51b815260206004820152601160248201527031b7bab73a1034b99034b73b30b634b21760791b6044820152606401610408565b6000610c3b86866114d6565b9050600080846001600160401b03811115610c5857610c58611e0a565b604051908082528060200260200182016040528015610c8b57816020015b6060815260200190600190039081610c765790505b509050855b610c9a8688612314565b811015610d59576000610cdd6108f7610cb284611553565b60408051808201909152600e81526d32afb934b3b43a1d34b73232bc1d60911b602082015290611500565b600081815260088701602052604081205491925050610d198b82604051806040016040528060048152602001637564726960e01b81525061156a565b848681518110610d2b57610d2b61226e565b60200260200101819052508480610d419061232c565b95505050508080610d519061232c565b915050610c90565b50979650505050505050565b6060806060610d7485856114a6565b1515600114610d955760405162461bcd60e51b815260040161040890612284565b6000610da186866114d6565b9050806001018054610db290612347565b80601f0160208091040260200160405190810160405280929190818152602001828054610dde90612347565b8015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b50505050509350806002018054610e4190612347565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6d90612347565b8015610eba5780601f10610e8f57610100808354040283529160200191610eba565b820191906000526020600020905b815481529060010190602001808311610e9d57829003601f168201915b505050505092506000610ecb61070e565b90506000805b82518163ffffffff161015610f5757610f3260405180604001604052806005815260200164195e1a5cdd60da1b815250610f2c610f226108f7878663ffffffff16815181106108be576108be61226e565b60068801906115c0565b90611663565b15610f4557610f42826001612382565b91505b80610f4f816122c3565b915050610ed1565b5063ffffffff811615611086576000808263ffffffff166001600160401b03811115610f8557610f85611e0a565b604051908082528060200260200182016040528015610fb857816020015b6060815260200190600190039081610fa35790505b50905060005b84518163ffffffff16101561108157611019604051806040016040528060058152","60200164195e1a5cdd60da1b815250610f2c61100f6108f7898663ffffffff16815181106108be576108be61226e565b60068a01906115c0565b1561106f57848163ffffffff16815181106110365761103661226e565b6020026020010151828463ffffffff16815181106110565761105661226e565b602090810291909101015261106c836001612382565b92505b80611079816122c3565b915050610fbe565b509450505b5050509250925092565b60006110d28484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a692505050565b15156001146110f35760405162461bcd60e51b8152600401610408906122e7565b60006111358585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114d692505050565b60408051808201825260158152741d5cd95c8e9c995d9a595dce995a590e98dbdd5b9d605a1b6020918201527f8e7e22a149a62d266f1366830ad13fadc3d0c42cdbb2dca110769fc88fb0ddbb6000908152600993909301905290205495945050505050565b60606111a785856114a6565b15156001146111c85760405162461bcd60e51b8152600401610408906122e7565b6000821161120c5760405162461bcd60e51b815260206004820152601160248201527031b7bab73a1034b99034b73b30b634b21760791b6044820152606401610408565b600061121886866114d6565b9050600080846001600160401b0381111561123557611235611e0a565b60405190808252806020026020018201604052801561126857816020015b60608152602001906001900390816112535790505b509050855b6112778688612314565b811015610d595760006112bb6108f761128f84611553565b60408051808201909152600f81526e32afb932bb34b2bb9d34b73232bc1d60891b602082015290611500565b60008181526008870160205260408120549192505060006113038c836040518060400160405280600e81526020016d0e4caecd2caee88c2e8c290c2e6d60931b815250611688565b9050806000815181106113185761131861226e565b60200260200101518587815181106113325761133261226e565b602002602001018190525085806113489061232c565b96505050505080806113599061232c565b91505061126d565b61136b86866114a6565b156113885760405162461bcd60e51b8152600401610408906122e7565b61139586868686866116ec565b60006113a187876114d6565b905060005b82518163ffffffff1610156113e9576113d6610b846108f7858463ffffffff16815181106108be576108be61226e565b50806113e1816122c3565b9150506113a6565b5050505050505050565b806040516114019190612252565b6040518091039020826040516114179190612252565b6040519081900381209033907fa2e1d286e25c6fce64acccdfd7a54d53cce2f617ddff648ab1dbb3458ccdd95b90600090a45050565b611457828261056c565b61041b576114648161189c565b61146f8360206118ae565b6040516020016114809291906123aa565b60408051601f198184030181529082905262461bcd60e51b82526104089160040161241f565b600082600101826040516114ba9190612252565b908152604051908190036020019020600b015415159392505050565b600082600101826040516114ea9190612252565b9081526020016040518091039020905092915050565b60608282604051602001611515929190612432565b604051602081830303815290604052905092915050565b6000828152602084815260408220835161154892850190611c80565b506001949350505050565b606061031b8261156284611a49565b600101611ab3565b600082815260028401602052604090206008015460609061159d5760405162461bcd60e51b815260040161040890612458565b815160208084019190912060008581526002808801909352604090206105a69201905b60008181526020839052604090208054606091906115dd90612347565b80601f016020809104026020016040519081016040528092919081815260200182805461160990612347565b80156116565780601f1061162b57610100808354040283529160200191611656565b820191906000526020600020905b81548152906001019060200180831161163957829003601f168201915b5050505050905092915050565b6000815183511480156103955750508051602091820120825192909101919091201490565b60008281526002840160205260409020600801546060906116bb5760405162461bcd60e51b815260040161040890612458565b6105a68280519060200120856002016000868152602001908152602001600020600101611b9c90919063ffffffff16565b84600101846040516116fe9190612252565b9081526020016040518091039020600b015460001461175f5760405162461bcd60e51b815260206004820152601f60248201527f5573657253746f726167653a2062696420616c726561647920657869737473006044820152606401610408565b6001600160a01b0381166000908152602086905260409020805461178290612347565b1590506117e15760405162461bcd60e51b815260206004820152602760248201527f45766964656e636553746f726167653a206163636f756e7420616c72656164796044820152662065786973747360c81b6064820152608401610408565b600085600101856040516117f59190612252565b908152602001604051809103902090508481600001908051906020019061181d929190611c80565b5083516118339060018301906020870190611c80565b5082516118499060028301906020860190611c80565b506000600382018190556004820180546001600160a01b0319166001600160a01b03851690811790915542600b840155815260208781526040909120865161189392880190611c80565b50505050505050565b606061031b6001600160a01b03831660145b606060006118bd83600261249c565b6118c8906002612314565b6001600160401b038111156118df576118df611e0a565b6040519080825280601f01601f191660200182016040528015611909576020820181803683370190505b509050600360fc1b816000815181106119245761192461226e565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106119535761195361226e565b60200101906001600160f81b031916908160001a905350600061197784600261249c565b611982906001612314565b90505b60018111156119fa576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119b6576119b661226e565b1a60f81b8282815181106119cc576119cc61226e565b60200101906001600160f81b031916908160001a90535060049490941c936119f3816124bb565b9050611985565b5083156103955760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610408565b600080608083901c15611a615760809290921c916010015b604083901c15611a765760409290921c916008015b602083901c15611a8b5760209290921c916004015b601083901c15611aa05760109290921c916002015b600883901c1561031b5760010192915050565b6060826000611ac384600261249c565b6001600160401b03811115611ada57611ada611e0a565b6040519080825280601f01601f191660200182016040528015611b04576020820181803683370190505b5090506000611b1485600261249c565b90505b8015611b93576f181899199a1a9b1b9c1cb0b131b232b360811b83600f1660108110611b4557611b4561226e565b1a60f81b82611b556001846124d2565b81518110611b6557611b6561226e565b60200101906001600160f81b031916908160001a90535060049290921c91611b8c816124bb565b9050611b17565b50949350505050565b600081815260208381526040808320805482518185028101850190935280835260609492939192909184015b82821015611c74578382906000526020600020018054611be790612347565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1390612347565b8015611c605780601f10611c3557610100808354040283529160200191611c60565b820191906000526020600020905b815481529060010190602001808311611c4357829003601f168201915b505050505081526020019060010190611bc8565b50505050905092915050565b828054611c8c90612347565b90600052602060002090601f016020900481019282611cae5760008555611cf4565b82601f10611cc757805160ff1916838001178555611cf4565b82800160010185558215611cf4579182015b82811115611cf4578251825591602001919060010190611cd9565b50611d00929150611d04565b5090565b5b80821115611d005760008155600101611d05565b600060208284031215611d2b57600080fd5b81356001600160e01b03198116811461039557600080fd5b60005b83811015611d5e578181015183820152602001611d46565b83811115611d6d576000848401525b50505050565b60008151808452611d8b816020860160208601611d43565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015611dea57601f19868403018952611dd8838351611d73565b98840198925090830190600101611dbc565b5090979650505050505050565b6020815260006103956020830184611d9f565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611e4857611e48611e0a565b604052919050565b600082601f830112611e6157600080fd5b81356001600160401b03811115611e7a57611e7a611e0a565b611e8d601f8201601f1916602001611e20565b818152846020838601011115611ea257600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611ed057600080fd5b813560206001600160401b0380831115611eec57611eec611e0a565b8260051b611efb838201611e20565b9384528581018301938381019088861115611f1557600080fd5b84880192505b85831015611f5157823584811115611f335760008081fd5b611f418a87838c0101611e50565b8352509184019190840190611f1b565b98975050505050505050565b60008060408385031215611f7057600080fd5b82356001600160401b0380821115611f8757600080fd5b611f9386838701611e50565b93506020850135915080821115611fa957600080fd5b50611fb685828601611ebf565b9150509250929050565b600060208284031215611fd257600080fd5b5035919050565b803560016001","60a01b038116811461054357600080fd5b6000806040838503121561200357600080fd5b8235915061201360208401611fd9565b90509250929050565b6000806020838503121561202f57600080fd5b82356001600160401b038082111561204657600080fd5b818501915085601f83011261205a57600080fd5b81358181111561206957600080fd5b86602082850101111561207b57600080fd5b60209290920196919550909350505050565b600080604083850312156120a057600080fd5b82356001600160401b038111156120b657600080fd5b6120c285828601611e50565b92505061201360208401611fd9565b6000602082840312156120e357600080fd5b81356001600160401b038111156120f957600080fd5b6105a684828501611e50565b60008060006060848603121561211a57600080fd5b83356001600160401b0381111561213057600080fd5b61213c86828701611e50565b9660208601359650604090950135949350505050565b6060815260006121656060830186611d73565b82810360208401526121778186611d73565b9050828103604084015261218b8185611d9f565b9695505050505050565b600080600080600060a086880312156121ad57600080fd5b85356001600160401b03808211156121c457600080fd5b6121d089838a01611e50565b965060208801359150808211156121e657600080fd5b6121f289838a01611e50565b9550604088013591508082111561220857600080fd5b61221489838a01611e50565b945061222260608901611fd9565b9350608088013591508082111561223857600080fd5b5061224588828901611ebf565b9150509295509295909350565b60008251612264818460208701611d43565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600f908201526e2ab9b2b9103737ba1032bc34b9ba1760891b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156122dd576122dd6122ad565b6001019392505050565b6020808252601390820152722ab9b2b91030b63932b0b23c9032bc34b9ba1760691b604082015260600190565b60008219821115612327576123276122ad565b500190565b6000600019821415612340576123406122ad565b5060010190565b600181811c9082168061235b57607f821691505b6020821081141561237c57634e487b7160e01b600052602260045260246000fd5b50919050565b600063ffffffff8083168185168083038211156123a1576123a16122ad565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123e2816017850160208801611d43565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612413816028840160208801611d43565b01602801949350505050565b6020815260006103956020830184611d73565b60008351612444818460208801611d43565b8351908301906123a1818360208801611d43565b60208082526024908201527f45766964656e636553746f726167653a2045766964656e6365206e6f742065786040820152636973747360e01b606082015260800190565b60008160001904831182151516156124b6576124b66122ad565b500290565b6000816124ca576124ca6122ad565b506000190190565b6000828210156124e4576124e46122ad565b50039056fe22f59c2f02edbae5c421247f029fe3112c5a85f70b4a48f5d93b22ada9ea772ea2646970667358221220262340464206a9776f9a143ef1563f6e0968d9e8fa5815451233128415eeabbf64736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b50612555806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063b4385765116100ad578063de92755c11610071578063de92755c1461027b578063df857c3f1461028e578063ea7eb798146102a1578063fbd3f0bf146102b4578063fd09e7d6146102d757600080fd5b8063b43857651461020a578063b5aed06f1461021d578063b6773ad814610240578063b70b2fbc14610255578063d9ad467b1461026857600080fd5b80635e84b511116100f45780635e84b511146101a75780636af9402e146101c957806371f7025c146101dc5780638766c78c146101e4578063a4ff64c2146101f757600080fd5b806306decf4c1461013157806317d66dc8146101465780631b3240b814610159578063470d7c57146101745780635472010b14610194575b600080fd5b61014461013f366004611e85565b6102ea565b005b610144610154366004611eff565b61031c565b610161600081565b6040519081526020015b60405180910390f35b610187610182366004611f2b565b6103a0565b60405161016b9190612029565b6101446101a2366004611eff565b6103b7565b6101ba6101b536600461203c565b6103dc565b60405161016b93929190612070565b6101876101d7366004611f2b565b6103f8565b610187610407565b6101446101f2366004611e85565b610416565b61014461020536600461203c565b61043a565b6101616102183660046120b3565b610503565b61023061022b36600461203c565b610518565b604051901515815260200161016b565b61016160008051602061250083398151915281565b610144610263366004612124565b6105a5565b610144610276366004612168565b610647565b610230610289366004611eff565b610680565b61016161029c3660046120b3565b6106ab565b6102306102af366004612225565b6106b9565b6101616102c236600461224f565b60009081526065602052604090206001015490565b6101446102e5366004611eff565b6106ee565b60008051602061250083398151915261030281610713565b61030e60c98484610720565b61031783610812565b505050565b6001600160a01b038116331461039257604051636381e58960e11b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61039c8282610855565b5050565b60606103af60c98585856108bc565b949350505050565b6000828152606560205260409020600101546103d281610713565b6103178383610a90565b606080806103eb60c985610b16565b9250925092509193909250565b60606103af60c9858585610e42565b6060610411610fdf565b905090565b60008051602061250083398151915261042e81610713565b61030e60c98484611116565b600061044581610713565b60006001600160a01b03166097836040516104609190612268565b908152604051908190036020019020546001600160a01b03161461039c576104be6000805160206125008339815191526097846040516104a09190612268565b908152604051908190036020019020546001600160a01b0316610855565b60006097836040516104d09190612268565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b600061051160c984846111b0565b9392505050565b6000806001600160a01b03166097836040516105349190612268565b908152604051908190036020019020546001600160a01b031614610598576105926000805160206125008339815191526097846040516105749190612268565b908152604051908190036020019020546001600160a01b0316610680565b92915050565b506000919050565b919050565b60006105b081610713565b60006001600160a01b03166097846040516105cb9190612268565b908152604051908190036020019020546001600160a01b031614156103175761060260008051602061250083398151915283610a90565b816097846040516106139190612268565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b60008051602061250083398151915261065f81610713565b61066e60c98787878787611263565b61067886866112f6565b505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061051160c98484611350565b60006001600160e01b03198216634df6077b60e11b14806105925750631d4fd6f360e31b6001600160e01b0319831614610592565b60008281526065602052604090206001015461070981610713565b6103178383610855565b61071d813361145c565b50565b61072a83836114b6565b151560011461074c57604051636381e58960e11b815260040161038990612284565b600061075884846114e6565b905060005b82518163ffffffff16101561080b576107f86107d16107c6858463ffffffff168151811061078d5761078d6122ad565b60200260200101516040518060400160405280600a8152602001693ab9b2b92fb937b6329d60b11b81525061151090919063ffffffff16565b805160209091012090565b604080518082019091526005815264195e1a5cdd60da1b602082015260068501919061153c565b5080610803816122d9565b91505061075d565b5050505050565b806040516108209190612268565b6040519081900381209033907f9268f66168b4bc4859411872e57bf474a6faf0800ac24c0ab63969775f07013590600090a350565b61085f8282610680565b1561039c5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917fddf24a0d777ab37f0cd0acf6e2b0a75570d42c6500405e008f7f9a61836cf2a39190a45050565b60606108c885856114b6565b15156001146108ea57604051636381e58960e11b8152600401610389906122fd565b6000821161092f57604051636381e58960e11b815260206004820152601160248201527031b7bab73a1034b99034b73b30b634b21760791b6044820152606401610389565b600061093b86866114e6565b9050600080846001600160401b0381111561095857610958611d32565b60405190808252806020026020018201604052801561098b57816020015b60608152602001906001900390816109765790505b509050855b61099a868861232a565b811015610a845760006109de6107c66109b284611563565b60408051808201909152600f81526e32afb932bb34b2bb9d34b73232bc1d60891b602082015290611510565b6000818152600887016020526040812054919250506000610a268c836040518060400160405280600e81526020016d0e4caecd2caee88c2e8c290c2e6d60931b81525061157a565b905080600081518110610a3b57610a3b6122ad565b6020026020010151858781518110610a5557610a556122ad565b60200260200101819052508580610a6b90612342565b9650505050508080610a7c90612342565b915050610990565b50979650505050505050565b610a9a8282610680565b61039c5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610ad23390565b6001600160a01b0316816001600160a01b0316837f3a8c19c5eddb5ca7fdd091f00e2b3978b86344c928af4d2d7f6733572cc06b4c60405160405180910390a45050565b6060806060610b2585856114b6565b1515600114610b4757604051636381e58960e11b815260040161038990612284565b6000610b5386866114e6565b9050806001018054610b649061235d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b909061235d565b8015610bdd5780601f10610bb257610100808354040283529160200191610bdd565b820191906000526020600020905b815481529060010190602001808311610bc057829003601f168201915b50505050509350806002018054610bf39061235d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1f9061235d565b8015610c6c5780601f10610c4157610100808354040283529160200191610c6c565b820191906000526020600020905b815481529060010190602001808311610c4f57829003601f168201915b505050505092506000610c7d610fdf565b90506000805b82518163ffffffff161015610d0957610ce460405180604001604052806005815260200164195e1a5cdd60da1b815250610cde610cd46107c6878663ffffffff168151811061078d5761078d6122ad565b60068801906115df565b90611682565b15610cf757610cf4826001612398565b91505b80610d01816122d9565b915050610c83565b5063ffffffff811615610e38576000808263ffffffff166001600160401b03811115610d3757610d37611d32565b604051908082528060200260200182016040528015610d6a57816020015b6060815260200190600190039081610d555790505b50905060005b84518163ffffffff161015610e3357610dcb60405180604001604052806005815260200164195e1a5cdd60da1b815250610cde610dc16107c6898663ffffffff168151811061078d5761078d6122ad565b60068a01906115df565b15610e2157848163ffffffff1681518110610de857610de86122ad565b6020026020010151828463ffffffff1681518110610e0857610e086122ad565b6020908102919091010152610e1e836001612398565b92505b80610e2b816122d9565b915050610d70565b509450505b5050509250925092565b6060610e4e85856114b6565b1515600114610e7057604051636381e58960e11b8152600401610389906122fd565b60008211610eb557604051636381e58960e11b815260206004820152601160248201527031b7bab73a1034b99034b73b30b634b21760791b6044820152606401610389565b6000610ec186866114e6565b9050600080846001600160401b03811115610ede57610ede611d32565b604051908082528060200260200182016040528015610f1157816020015b6060815260200190600190039081610efc5790505b509050855b610f20868861232a565b811015610a84576000610f636107c6610f3884611563565b60408051808201909152600e81526d32afb934b3b43a1d34b73232bc1d60911b602082015290611510565b600081815260088701602052604081205491925050610f9f8b82604051806040016040528060048152602001637564726960e01b8152506116a7565b848681518110610fb157610fb16122ad565b60200260200101819052508480610fc790612342565b95505050508080610fd790612342565b915050610f16565b","60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610ffb5790505090506040518060400160405280600b81526020016a3230ba30afb437b63232b960a91b81525081600081518110611049576110496122ad565b6020026020010181905250604051806040016040528060088152602001673932bb34b2bbb2b960c11b81525081600181518110611088576110886122ad565b602002602001018190525060405180604001604052806008815260200167726567697374727960c01b815250816002815181106110c7576110c76122ad565b602002602001018190525060405180604001604052806008815260200167706c6174666f726d60c01b81525081600381518110611106576111066122ad565b6020908102919091010152919050565b61112083836114b6565b151560011461114257604051636381e58960e11b815260040161038990612284565b600061114e84846114e6565b905060005b82518163ffffffff16101561080b5761119d6111836107c6858463ffffffff168151811061078d5761078d6122ad565b60408051602081019091526000815260068501919061153c565b50806111a8816122d9565b915050611153565b60006111f28484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114b692505050565b151560011461121457604051636381e58960e11b8152600401610389906122fd565b60006112568585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e692505050565b6003015495945050505050565b61126d86866114b6565b1561128b57604051636381e58960e11b8152600401610389906122fd565b6112988686868686611702565b60006112a487876114e6565b905060005b82518163ffffffff1610156112ec576112d96107d16107c6858463ffffffff168151811061078d5761078d6122ad565b50806112e4816122d9565b9150506112a9565b5050505050505050565b806040516113049190612268565b60405180910390208260405161131a9190612268565b6040519081900381209033907f9d6662ba6d5a95ec0e1994138d55966397bf87303de34c157ed3c818715f213390600090a45050565b60006113928484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114b692505050565b15156001146113b457604051636381e58960e11b8152600401610389906122fd565b60006113f68585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e692505050565b60408051808201825260158152741d5cd95c8e9c995d9a595dce995a590e98dbdd5b9d605a1b6020918201527fc87fd76dcb254b470588f43d2dd39ad8a7f86e49142e501a49eaca8ce0f863dc6000908152600993909301905290205495945050505050565b6114668282610680565b61039c57611473816118b4565b61147e8360206118c6565b60405160200161148f9291906123c0565b60408051601f1981840301815290829052636381e58960e11b825261038991600401612435565b600082600101826040516114ca9190612268565b908152604051908190036020019020600b015415159392505050565b600082600101826040516114fa9190612268565b9081526020016040518091039020905092915050565b60608282604051602001611525929190612448565b604051602081830303815290604052905092915050565b6000828152602084815260408220835161155892850190611c99565b506001949350505050565b60606105928261157284611a62565b600101611acc565b60008281526002840160205260409020600801546060906115ae57604051636381e58960e11b81526004016103899061246e565b6103af8280519060200120856002016000868152602001908152602001600020600101611bb590919063ffffffff16565b60008181526020839052604090208054606091906115fc9061235d565b80601f01602080910402602001604051908101604052809291908181526020018280546116289061235d565b80156116755780601f1061164a57610100808354040283529160200191611675565b820191906000526020600020905b81548152906001019060200180831161165857829003601f168201915b5050505050905092915050565b6000815183511480156105115750508051602091820120825192909101919091201490565b60008281526002840160205260409020600801546060906116db57604051636381e58960e11b81526004016103899061246e565b815160208084019190912060008581526002808801909352604090206103af9201906115df565b84600101846040516117149190612268565b9081526020016040518091039020600b015460001461177657604051636381e58960e11b815260206004820152601f60248201527f5573657253746f726167653a2062696420616c726561647920657869737473006044820152606401610389565b6001600160a01b038116600090815260208690526040902080546117999061235d565b1590506117f957604051636381e58960e11b815260206004820152602760248201527f45766964656e636553746f726167653a206163636f756e7420616c72656164796044820152662065786973747360c81b6064820152608401610389565b6000856001018560405161180d9190612268565b9081526020016040518091039020905084816000019080519060200190611835929190611c99565b50835161184b9060018301906020870190611c99565b5082516118619060028301906020860190611c99565b506000600382018190556004820180546001600160a01b0319166001600160a01b03851690811790915542600b84015581526020878152604090912086516118ab92880190611c99565b50505050505050565b60606105926001600160a01b03831660145b606060006118d58360026124b2565b6118e090600261232a565b6001600160401b038111156118f7576118f7611d32565b6040519080825280601f01601f191660200182016040528015611921576020820181803683370190505b509050600360fc1b8160008151811061193c5761193c6122ad565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061196b5761196b6122ad565b60200101906001600160f81b031916908160001a905350600061198f8460026124b2565b61199a90600161232a565b90505b6001811115611a12576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119ce576119ce6122ad565b1a60f81b8282815181106119e4576119e46122ad565b60200101906001600160f81b031916908160001a90535060049490941c93611a0b816124d1565b905061199d565b50831561051157604051636381e58960e11b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610389565b600080608083901c15611a7a5760809290921c916010015b604083901c15611a8f5760409290921c916008015b602083901c15611aa45760209290921c916004015b601083901c15611ab95760109290921c916002015b600883901c156105925760010192915050565b6060826000611adc8460026124b2565b6001600160401b03811115611af357611af3611d32565b6040519080825280601f01601f191660200182016040528015611b1d576020820181803683370190505b5090506000611b2d8560026124b2565b90505b8015611bac576f181899199a1a9b1b9c1cb0b131b232b360811b83600f1660108110611b5e57611b5e6122ad565b1a60f81b82611b6e6001846124e8565b81518110611b7e57611b7e6122ad565b60200101906001600160f81b031916908160001a90535060049290921c91611ba5816124d1565b9050611b30565b50949350505050565b600081815260208381526040808320805482518185028101850190935280835260609492939192909184015b82821015611c8d578382906000526020600020018054611c009061235d565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2c9061235d565b8015611c795780601f10611c4e57610100808354040283529160200191611c79565b820191906000526020600020905b815481529060010190602001808311611c5c57829003601f168201915b505050505081526020019060010190611be1565b50505050905092915050565b828054611ca59061235d565b90600052602060002090601f016020900481019282611cc75760008555611d0d565b82601f10611ce057805160ff1916838001178555611d0d565b82800160010185558215611d0d579182015b82811115611d0d578251825591602001919060010190611cf2565b50611d19929150611d1d565b5090565b5b80821115611d195760008155600101611d1e565b63b95aa35560e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611d7057611d70611d32565b604052919050565b600082601f830112611d8957600080fd5b81356001600160401b03811115611da257611da2611d32565b611db5601f8201601f1916602001611d48565b818152846020838601011115611dca57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611df857600080fd5b813560206001600160401b0380831115611e1457611e14611d32565b8260051b611e23838201611d48565b9384528581018301938381019088861115611e3d57600080fd5b84880192505b85831015611e7957823584811115611e5b5760008081fd5b611e698a87838c0101611d78565b8352509184019190840190611e43565b98975050505050505050565b60008060408385031215611e9857600080fd5b82356001600160401b0380821115611eaf57600080fd5b611ebb86838701611d78565b93506020850135915080821115611ed157600080fd5b50611ede85828601611de7565b9150509250929050565b80356001600160a01b03811681146105a057600080fd5b60008060408385031215611f1257600080fd5b82359150611f2260208401611ee8565b90509250929050565b600080600060608486031215611f4057600080fd5b83356001600160401b03811115611f5657600080fd5b611f6286828701611d78565b9660208601359650604090950135949350505050565b60005b83811015611f93578181015183820152602001611f7b565b83811115611fa2576000848401525b50505050565b60008151808452611fc0816020860160208601611f78565b601f01601f19169290920160200192915050565b6000815180845260208085","01808196508360051b8101915082860160005b8581101561201c57828403895261200a848351611fa8565b98850198935090840190600101611ff2565b5091979650505050505050565b6020815260006105116020830184611fd4565b60006020828403121561204e57600080fd5b81356001600160401b0381111561206457600080fd5b6103af84828501611d78565b6060815260006120836060830186611fa8565b82810360208401526120958186611fa8565b905082810360408401526120a98185611fd4565b9695505050505050565b600080602083850312156120c657600080fd5b82356001600160401b03808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b81358181111561210057600080fd5b86602082850101111561211257600080fd5b60209290920196919550909350505050565b6000806040838503121561213757600080fd5b82356001600160401b0381111561214d57600080fd5b61215985828601611d78565b925050611f2260208401611ee8565b600080600080600060a0868803121561218057600080fd5b85356001600160401b038082111561219757600080fd5b6121a389838a01611d78565b965060208801359150808211156121b957600080fd5b6121c589838a01611d78565b955060408801359150808211156121db57600080fd5b6121e789838a01611d78565b94506121f560608901611ee8565b9350608088013591508082111561220b57600080fd5b5061221888828901611de7565b9150509295509295909350565b60006020828403121561223757600080fd5b81356001600160e01b03198116811461051157600080fd5b60006020828403121561226157600080fd5b5035919050565b6000825161227a818460208701611f78565b9190910192915050565b6020808252600f908201526e2ab9b2b9103737ba1032bc34b9ba1760891b604082015260600190565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052601160045260246000fd5b600063ffffffff808316818114156122f3576122f36122c3565b6001019392505050565b6020808252601390820152722ab9b2b91030b63932b0b23c9032bc34b9ba1760691b604082015260600190565b6000821982111561233d5761233d6122c3565b500190565b6000600019821415612356576123566122c3565b5060010190565b600181811c9082168061237157607f821691505b602082108114156123925763b95aa35560e01b600052602260045260246000fd5b50919050565b600063ffffffff8083168185168083038211156123b7576123b76122c3565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123f8816017850160208801611f78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612429816028840160208801611f78565b01602801949350505050565b6020815260006105116020830184611fa8565b6000835161245a818460208801611f78565b8351908301906123b7818360208801611f78565b60208082526024908201527f45766964656e636553746f726167653a2045766964656e6365206e6f742065786040820152636973747360e01b606082015260800190565b60008160001904831182151516156124cc576124cc6122c3565b500290565b6000816124e0576124e06122c3565b506000190190565b6000828210156124fa576124fa6122c3565b50039056fecda5c054d055f48a2866e1a28d72f8145e422f1db1872bc4c9fe2888702c9f8da264697066735822122087edf67dc631718108cb0d874ef74a0be48d9f7245fe7472930911a6d2657e6764736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"NewReviewEvidenceStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"name\":\"NewRightEvidenceStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"usci\",\"type\":\"string\"}],\"name\":\"UserCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"UserRoleChanged\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[2719481311,456278200],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"USERMANAGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[852968231,3061267160],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"usci\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"roles\",\"type\":\"string[]\"}],\"name\":\"addUser\",\"outputs\":[],\"selector\":[3239424820,3652011643],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"getDataCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dataCount\",\"type\":\"uint256\"}],\"selector\":[816278328,3023591269],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getDataList\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"udriArray\",\"type\":\"string[]\"}],\"selector\":[2492434596,1794719790],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"selector\":[613063843,4224970943],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"getUserReviewCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dataCount\",\"type\":\"uint256\"}],\"selector\":[2760116549,3750067263],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getUserReviewList\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"hashArray\",\"type\":\"string[]\"}],\"selector\":[2884685932,1192066135],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"getUserRoles\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"usci\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"roles\",\"type\":\"string[]\"}],\"selector\":[2573946725,1585755409],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"selector\":[791671133,1416757515],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"grantUserManagePermission\",\"outputs\":[],\"selector\":[1037211317,3070963644],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"roles\",\"type\":\"string[]\"}],\"name\":\"grantUserRoles\",\"outputs\":[],\"selector\":[2322354691,115265356],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[2446411860,3734140252],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"slot\":101,\"value\":[34,245,156,47,2,237,186,229,196,33,36,127,2,159,227,17,44,90,133,247,11,74,72,245,217,59,34,173,169,234,119,46]}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"hasUserManageRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[1290417574,3048132719],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[],\"name\":\"queryUserRole\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[289407936,1912013404],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"selector\":[911641278,399928776],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":3,\"slot\":101,\"value\":[0]}],\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"selector\":[3578229791,4245284822],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"revokeUserManagePermission\",\"outputs\":[],\"selector\":[4233016450,2768200898],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"roles\",\"type\":\"string[]\"}],\"name\":\"revokeUserRoles\",\"outputs\":[],\"selector\":[593762734,2271659916],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":5}],\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[33540519,3934173080],\"stateMutability\":\"view\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_DEFAULT_ADMIN_ROLE = "DEFAULT_ADMIN_ROLE"; + + public static final String FUNC_USERMANAGE_ROLE = "USERMANAGE_ROLE"; + + public static final String FUNC_ADDUSER = "addUser"; + + public static final String FUNC_GETDATACOUNT = "getDataCount"; + + public static final String FUNC_GETDATALIST = "getDataList"; + + public static final String FUNC_GETROLEADMIN = "getRoleAdmin"; + + public static final String FUNC_GETUSERREVIEWCOUNT = "getUserReviewCount"; + + public static final String FUNC_GETUSERREVIEWLIST = "getUserReviewList"; + + public static final String FUNC_GETUSERROLES = "getUserRoles"; + + public static final String FUNC_GRANTROLE = "grantRole"; + + public static final String FUNC_GRANTUSERMANAGEPERMISSION = "grantUserManagePermission"; + + public static final String FUNC_GRANTUSERROLES = "grantUserRoles"; + + public static final String FUNC_HASROLE = "hasRole"; + + public static final String FUNC_HASUSERMANAGEROLE = "hasUserManageRole"; + + public static final String FUNC_QUERYUSERROLE = "queryUserRole"; + + public static final String FUNC_RENOUNCEROLE = "renounceRole"; + + public static final String FUNC_REVOKEROLE = "revokeRole"; + + public static final String FUNC_REVOKEUSERMANAGEPERMISSION = "revokeUserManagePermission"; + + public static final String FUNC_REVOKEUSERROLES = "revokeUserRoles"; + + public static final String FUNC_SUPPORTSINTERFACE = "supportsInterface"; + + public static final Event INITIALIZED_EVENT = new Event("Initialized", + Arrays.>asList(new TypeReference() {})); + ; + + public static final Event NEWREVIEWEVIDENCESTORED_EVENT = new Event("NewReviewEvidenceStored", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event NEWRIGHTEVIDENCESTORED_EVENT = new Event("NewRightEvidenceStored", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEADMINCHANGED_EVENT = new Event("RoleAdminChanged", + Arrays.>asList(new TypeReference(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event ROLEGRANTED_EVENT = new Event("RoleGranted", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event ROLEREVOKED_EVENT = new Event("RoleRevoked", + Arrays.>asList(new TypeReference(true) {}, new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event USERCREATED_EVENT = new Event("UserCreated", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference(true) {})); + ; + + public static final Event USERROLECHANGED_EVENT = new Event("UserRoleChanged", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + protected DREvidenceUserController(String contractAddress, Client client, + CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getInitializedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(INITIALIZED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + InitializedEventResponse typedResponse = new InitializedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.version = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getNewReviewEvidenceStoredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(NEWREVIEWEVIDENCESTORED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + NewReviewEvidenceStoredEventResponse typedResponse = new NewReviewEvidenceStoredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.udri = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.index = (BigInteger) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getNewRightEvidenceStoredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(NEWRIGHTEVIDENCESTORED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + NewRightEvidenceStoredEventResponse typedResponse = new NewRightEvidenceStoredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.udri = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleAdminChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEADMINCHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleAdminChangedEventResponse typedResponse = new RoleAdminChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.previousAdminRole = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.newAdminRole = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleGrantedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEGRANTED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleGrantedEventResponse typedResponse = new RoleGrantedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getRoleRevokedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ROLEREVOKED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + RoleRevokedEventResponse typedResponse = new RoleRevokedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUserCreatedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(USERCREATED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UserCreatedEventResponse typedResponse = new UserCreatedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.bid = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.usci = (byte[]) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUserRoleChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(USERROLECHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UserRoleChangedEventResponse typedResponse = new UserRoleChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.sender = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.bid = (byte[]) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public byte[] DEFAULT_ADMIN_ROLE() throws ContractException { + final Function function = new Function(FUNC_DEFAULT_ADMIN_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public byte[] USERMANAGE_ROLE() throws ContractException { + final Function function = new Function(FUNC_USERMANAGE_ROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public TransactionReceipt addUser(String bid, String usci, String name, String account, + List roles) { + final Function function = new Function( + FUNC_ADDUSER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(usci), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForAddUser(String bid, String usci, String name, + String account, List roles) { + final Function function = new Function( + FUNC_ADDUSER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(usci), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String addUser(String bid, String usci, String name, String account, List roles, + TransactionCallback callback) { + final Function function = new Function( + FUNC_ADDUSER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(usci), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple5> getAddUserInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_ADDUSER, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference() {}, new TypeReference
() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple5>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + (String) results.get(2).getValue(), + (String) results.get(3).getValue(), + convertToNative((List) results.get(4).getValue()) + ); + } + + public BigInteger getDataCount(String bid) throws ContractException { + final Function function = new Function(FUNC_GETDATACOUNT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public List getDataList(String bid, BigInteger start, BigInteger count) throws + ContractException { + final Function function = new Function(FUNC_GETDATALIST, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(start), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(count)), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public byte[] getRoleAdmin(byte[] role) throws ContractException { + final Function function = new Function(FUNC_GETROLEADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, byte[].class); + } + + public BigInteger getUserReviewCount(String bid) throws ContractException { + final Function function = new Function(FUNC_GETUSERREVIEWCOUNT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public List getUserReviewList(String bid, BigInteger start, BigInteger count) throws + ContractException { + final Function function = new Function(FUNC_GETUSERREVIEWLIST, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(start), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(count)), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public Tuple3> getUserRoles(String bid) throws ContractException { + final Function function = new Function(FUNC_GETUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple3>( + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue())); + } + + public TransactionReceipt grantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantRole(byte[] role, String account) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String grantRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt grantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserManagePermission(String bid, String user) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserManagePermission(String bid, String user, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(user)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt grantUserRoles(String bid, List roles) { + final Function function = new Function( + FUNC_GRANTUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserRoles(String bid, List roles) { + final Function function = new Function( + FUNC_GRANTUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserRoles(String bid, List roles, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getGrantUserRolesInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERROLES, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public Boolean hasRole(byte[] role, String account) throws ContractException { + final Function function = new Function(FUNC_HASROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public Boolean hasUserManageRole(String bid) throws ContractException { + final Function function = new Function(FUNC_HASUSERMANAGEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public List queryUserRole() throws ContractException { + final Function function = new Function(FUNC_QUERYUSERROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public TransactionReceipt renounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRenounceRole(byte[] role, String account) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String renounceRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_RENOUNCEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRenounceRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_RENOUNCEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeRole(byte[] role, String account) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return createSignedTransaction(function); + } + + public String revokeRole(byte[] role, String account, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32(role), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 4); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getRevokeRoleInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (byte[]) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt revokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeUserManagePermission(String bid, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getRevokeUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt revokeUserRoles(String bid, List roles) { + final Function function = new Function( + FUNC_REVOKEUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeUserRoles(String bid, List roles) { + final Function function = new Function( + FUNC_REVOKEUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeUserRoles(String bid, List roles, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getRevokeUserRolesInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEUSERROLES, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public Boolean supportsInterface(byte[] interfaceId) throws ContractException { + final Function function = new Function(FUNC_SUPPORTSINTERFACE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4(interfaceId)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public static DREvidenceUserController load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new DREvidenceUserController(contractAddress, client, credential); + } + + public static DREvidenceUserController deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(DREvidenceUserController.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } + + public static class InitializedEventResponse { + public TransactionReceipt.Logs log; + + public BigInteger version; + } + + public static class NewReviewEvidenceStoredEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] udri; + + public BigInteger index; + } + + public static class NewRightEvidenceStoredEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] udri; + } + + public static class RoleAdminChangedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public byte[] previousAdminRole; + + public byte[] newAdminRole; + } + + public static class RoleGrantedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class RoleRevokedEventResponse { + public TransactionReceipt.Logs log; + + public byte[] role; + + public String account; + + public String sender; + } + + public static class UserCreatedEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] bid; + + public byte[] usci; + } + + public static class UserRoleChangedEventResponse { + public TransactionReceipt.Logs log; + + public String sender; + + public byte[] bid; + } +} diff --git a/java/DREvidenceUtils.java b/java/DREvidenceUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..b1d21b6948fe57c19a4767c39898addb3d7a43ca --- /dev/null +++ b/java/DREvidenceUtils.java @@ -0,0 +1,45 @@ +package com.btsi.contract; + +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class DREvidenceUtils extends Contract { + public static final String[] BINARY_ARRAY = {"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bee5805a79b2eb63be9c8e900ef47681675505d4c69b1148d1e1fd417ad4552f64736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"60566037600b82828239805160001a607314602a5763b95aa35560e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203fbbaa7232f1c9310aa0b2a76c041f8aa11ceffc61c5fec83c96d5e785e9735664736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + protected DREvidenceUtils(String contractAddress, Client client, CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public static DREvidenceUtils load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new DREvidenceUtils(contractAddress, client, credential); + } + + public static DREvidenceUtils deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(DREvidenceUtils.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } +} diff --git a/java/IDREvidence.java b/java/IDREvidence.java new file mode 100644 index 0000000000000000000000000000000000000000..9d2b817b95a8d2ffd820b0f5723e837f201fa493 --- /dev/null +++ b/java/IDREvidence.java @@ -0,0 +1,1194 @@ +package com.btsi.contract; + +import java.math.BigInteger; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple3; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple4; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple5; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple6; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class IDREvidence extends Contract { + public static final String[] BINARY_ARRAY = {}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataHash\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"name\":\"addDataRightEvidence\",\"outputs\":[],\"selector\":[2635209621,3623663505],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"reviewDataHash\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"name\":\"addReviewEvidence\",\"outputs\":[],\"selector\":[4024293368,766756406],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"usci\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"roles\",\"type\":\"string[]\"}],\"name\":\"addUser\",\"outputs\":[],\"selector\":[3239424820,3652011643],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"name\":\"appendVariableData\",\"outputs\":[],\"selector\":[2138450037,1301797456],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableAccessControl\",\"outputs\":[],\"selector\":[1980433629,2854924890],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableAccessControl\",\"outputs\":[],\"selector\":[922088542,1158894738],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccessControl\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"status\",\"type\":\"uint32\"}],\"selector\":[4229803393,1904329564],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"selector\":[3609374908,728140679],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"getDataCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dataCount\",\"type\":\"uint256\"}],\"selector\":[816278328,3023591269],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getDataList\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"udriArray\",\"type\":\"string[]\"}],\"selector\":[2492434596,1794719790],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataRightCategory\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"selector\":[2324699571,3796759802],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"name\":\"getRegisteredData\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"dataHashSM\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"dataHashSHA\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"},{\"internalType\":\"bool\",\"name\":\"isWithdraw\",\"type\":\"bool\"}],\"selector\":[208288129,3936625741],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"name\":\"getReviewCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reviewCount\",\"type\":\"uint256\"}],\"selector\":[1485793629,1330250274],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"}],\"name\":\"getReviewCountOfReviewer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"selector\":[3868489521,2826438872],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"}],\"name\":\"getSupportVariableDataFields\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"fileds\",\"type\":\"string[]\"}],\"selector\":[3869446330,376683502],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTextMaxLen\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"len\",\"type\":\"uint32\"}],\"selector\":[3460282540,1588090095],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"dataHash\",\"type\":\"string\"}],\"name\":\"getUdriByDatahash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"}],\"selector\":[633708824,3726531728],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"getUserDataRight\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"}],\"selector\":[1105228669,1195862205],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"getUserRoles\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"usci\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"roles\",\"type\":\"string[]\"}],\"selector\":[2573946725,1585755409],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifyEvidence\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isWithdraw\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"selector\":[1855339097,4061585395],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifyEvidenceOfReviewer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isWithdraw\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"metaData\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"variableData\",\"type\":\"string[]\"}],\"selector\":[1591648918,3508812136],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getstrArrayMaxLen\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"len\",\"type\":\"uint32\"}],\"selector\":[905356897,1921885619],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"}],\"name\":\"grantUserDataRight\",\"outputs\":[],\"selector\":[3258251539,3358242835],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantUserManagePermission\",\"outputs\":[],\"selector\":[1037211317,3070963644],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"roles\",\"type\":\"string[]\"}],\"name\":\"grantUserRoles\",\"outputs\":[],\"selector\":[2322354691,115265356],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"hasUserManageRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"selector\":[1290417574,3048132719],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryUserRole\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[289407936,1912013404],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"}],\"name\":\"revokeUserManagePermission\",\"outputs\":[],\"selector\":[4233016450,2768200898],\"stateMutability\":\"nonpayable\",\"type\":\"func","tion\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"roles\",\"type\":\"string[]\"}],\"name\":\"revokeUserRoles\",\"outputs\":[],\"selector\":[593762734,2271659916],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setChainName\",\"outputs\":[],\"selector\":[3234078498,3307895570],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"setDataRightCategory\",\"outputs\":[],\"selector\":[2472945857,2087572871],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"setDataRightSupportVariableDataFields\",\"outputs\":[],\"selector\":[1199116808,2135762870],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"len\",\"type\":\"uint32\"}],\"name\":\"setTextMaxLen\",\"outputs\":[],\"selector\":[1356933702,1285167137],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"len\",\"type\":\"uint32\"}],\"name\":\"setstrArrayMaxLen\",\"outputs\":[],\"selector\":[453424020,3279923519],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"}],\"name\":\"withdrawDataRightRegister\",\"outputs\":[],\"selector\":[2392051885,1179902888],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"reviewerBid\",\"type\":\"string\"}],\"name\":\"withdrawReviewEvidence\",\"outputs\":[],\"selector\":[932021754,2229502562],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"udri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bid\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"dataRight\",\"type\":\"string[]\"}],\"name\":\"withdrawUserDataRight\",\"outputs\":[],\"selector\":[4211774851,2825282343],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_ADDDATARIGHTEVIDENCE = "addDataRightEvidence"; + + public static final String FUNC_ADDREVIEWEVIDENCE = "addReviewEvidence"; + + public static final String FUNC_ADDUSER = "addUser"; + + public static final String FUNC_APPENDVARIABLEDATA = "appendVariableData"; + + public static final String FUNC_DISABLEACCESSCONTROL = "disableAccessControl"; + + public static final String FUNC_ENABLEACCESSCONTROL = "enableAccessControl"; + + public static final String FUNC_GETACCESSCONTROL = "getAccessControl"; + + public static final String FUNC_GETCHAINNAME = "getChainName"; + + public static final String FUNC_GETDATACOUNT = "getDataCount"; + + public static final String FUNC_GETDATALIST = "getDataList"; + + public static final String FUNC_GETDATARIGHTCATEGORY = "getDataRightCategory"; + + public static final String FUNC_GETREGISTEREDDATA = "getRegisteredData"; + + public static final String FUNC_GETREVIEWCOUNT = "getReviewCount"; + + public static final String FUNC_GETREVIEWCOUNTOFREVIEWER = "getReviewCountOfReviewer"; + + public static final String FUNC_GETSUPPORTVARIABLEDATAFIELDS = "getSupportVariableDataFields"; + + public static final String FUNC_GETTEXTMAXLEN = "getTextMaxLen"; + + public static final String FUNC_GETUDRIBYDATAHASH = "getUdriByDatahash"; + + public static final String FUNC_GETUSERDATARIGHT = "getUserDataRight"; + + public static final String FUNC_GETUSERROLES = "getUserRoles"; + + public static final String FUNC_GETVERIFYEVIDENCE = "getVerifyEvidence"; + + public static final String FUNC_GETVERIFYEVIDENCEOFREVIEWER = "getVerifyEvidenceOfReviewer"; + + public static final String FUNC_GETSTRARRAYMAXLEN = "getstrArrayMaxLen"; + + public static final String FUNC_GRANTUSERDATARIGHT = "grantUserDataRight"; + + public static final String FUNC_GRANTUSERMANAGEPERMISSION = "grantUserManagePermission"; + + public static final String FUNC_GRANTUSERROLES = "grantUserRoles"; + + public static final String FUNC_HASUSERMANAGEROLE = "hasUserManageRole"; + + public static final String FUNC_QUERYUSERROLE = "queryUserRole"; + + public static final String FUNC_REVOKEUSERMANAGEPERMISSION = "revokeUserManagePermission"; + + public static final String FUNC_REVOKEUSERROLES = "revokeUserRoles"; + + public static final String FUNC_SETCHAINNAME = "setChainName"; + + public static final String FUNC_SETDATARIGHTCATEGORY = "setDataRightCategory"; + + public static final String FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS = "setDataRightSupportVariableDataFields"; + + public static final String FUNC_SETTEXTMAXLEN = "setTextMaxLen"; + + public static final String FUNC_SETSTRARRAYMAXLEN = "setstrArrayMaxLen"; + + public static final String FUNC_WITHDRAWDATARIGHTREGISTER = "withdrawDataRightRegister"; + + public static final String FUNC_WITHDRAWREVIEWEVIDENCE = "withdrawReviewEvidence"; + + public static final String FUNC_WITHDRAWUSERDATARIGHT = "withdrawUserDataRight"; + + protected IDREvidence(String contractAddress, Client client, CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public TransactionReceipt addDataRightEvidence(String udri, String bid, List dataHash, + List dataRight, List metaData, List variableData) { + final Function function = new Function( + FUNC_ADDDATARIGHTEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForAddDataRightEvidence(String udri, String bid, + List dataHash, List dataRight, List metaData, + List variableData) { + final Function function = new Function( + FUNC_ADDDATARIGHTEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String addDataRightEvidence(String udri, String bid, List dataHash, + List dataRight, List metaData, List variableData, + TransactionCallback callback) { + final Function function = new Function( + FUNC_ADDDATARIGHTEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple6, List, List, List> getAddDataRightEvidenceInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_ADDDATARIGHTEVIDENCE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple6, List, List, List>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + convertToNative((List) results.get(3).getValue()), + convertToNative((List) results.get(4).getValue()), + convertToNative((List) results.get(5).getValue()) + ); + } + + public TransactionReceipt addReviewEvidence(String udri, String reviewerBid, + List reviewDataHash, List metaData, List variableData) { + final Function function = new Function( + FUNC_ADDREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(reviewDataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForAddReviewEvidence(String udri, String reviewerBid, + List reviewDataHash, List metaData, List variableData) { + final Function function = new Function( + FUNC_ADDREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(reviewDataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String addReviewEvidence(String udri, String reviewerBid, List reviewDataHash, + List metaData, List variableData, TransactionCallback callback) { + final Function function = new Function( + FUNC_ADDREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(reviewDataHash, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(metaData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class)), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple5, List, List> getAddReviewEvidenceInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_ADDREVIEWEVIDENCE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple5, List, List>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + convertToNative((List) results.get(3).getValue()), + convertToNative((List) results.get(4).getValue()) + ); + } + + public TransactionReceipt addUser(String bid, String usci, String name, String account, + List roles) { + final Function function = new Function( + FUNC_ADDUSER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(usci), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForAddUser(String bid, String usci, String name, + String account, List roles) { + final Function function = new Function( + FUNC_ADDUSER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(usci), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String addUser(String bid, String usci, String name, String account, List roles, + TransactionCallback callback) { + final Function function = new Function( + FUNC_ADDUSER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(usci), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple5> getAddUserInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_ADDUSER, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference() {}, new TypeReference
() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple5>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + (String) results.get(2).getValue(), + (String) results.get(3).getValue(), + convertToNative((List) results.get(4).getValue()) + ); + } + + public TransactionReceipt appendVariableData(String udri, List variableData) { + final Function function = new Function( + FUNC_APPENDVARIABLEDATA, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForAppendVariableData(String udri, + List variableData) { + final Function function = new Function( + FUNC_APPENDVARIABLEDATA, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String appendVariableData(String udri, List variableData, + TransactionCallback callback) { + final Function function = new Function( + FUNC_APPENDVARIABLEDATA, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(variableData, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getAppendVariableDataInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_APPENDVARIABLEDATA, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public TransactionReceipt disableAccessControl() { + final Function function = new Function( + FUNC_DISABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForDisableAccessControl() { + final Function function = new Function( + FUNC_DISABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String disableAccessControl(TransactionCallback callback) { + final Function function = new Function( + FUNC_DISABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public TransactionReceipt enableAccessControl() { + final Function function = new Function( + FUNC_ENABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForEnableAccessControl() { + final Function function = new Function( + FUNC_ENABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String enableAccessControl(TransactionCallback callback) { + final Function function = new Function( + FUNC_ENABLEACCESSCONTROL, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public BigInteger getAccessControl() throws ContractException { + final Function function = new Function(FUNC_GETACCESSCONTROL, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public String getChainName() throws ContractException { + final Function function = new Function(FUNC_GETCHAINNAME, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public BigInteger getDataCount(String bid) throws ContractException { + final Function function = new Function(FUNC_GETDATACOUNT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public List getDataList(String bid, BigInteger start, BigInteger count) throws + ContractException { + final Function function = new Function(FUNC_GETDATALIST, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(start), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(count)), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public List getDataRightCategory() throws ContractException { + final Function function = new Function(FUNC_GETDATARIGHTCATEGORY, + Arrays.asList(), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public Tuple6, List, List, Boolean> getRegisteredData( + String udri) throws ContractException { + final Function function = new Function(FUNC_GETREGISTEREDDATA, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri)), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference>() {}, new TypeReference() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple6, List, List, Boolean>( + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + convertToNative((List) results.get(3).getValue()), + convertToNative((List) results.get(4).getValue()), + (Boolean) results.get(5).getValue()); + } + + public BigInteger getReviewCount(String udri) throws ContractException { + final Function function = new Function(FUNC_GETREVIEWCOUNT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public BigInteger getReviewCountOfReviewer(String udri, String reviewerBid) throws + ContractException { + final Function function = new Function(FUNC_GETREVIEWCOUNTOFREVIEWER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public List getSupportVariableDataFields(String category) throws ContractException { + final Function function = new Function(FUNC_GETSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(category)), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public BigInteger getTextMaxLen() throws ContractException { + final Function function = new Function(FUNC_GETTEXTMAXLEN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public String getUdriByDatahash(String dataHash) throws ContractException { + final Function function = new Function(FUNC_GETUDRIBYDATAHASH, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(dataHash)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public List getUserDataRight(String udri, String bid) throws ContractException { + final Function function = new Function(FUNC_GETUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public Tuple3> getUserRoles(String bid) throws ContractException { + final Function function = new Function(FUNC_GETUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple3>( + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue())); + } + + public Tuple4, List> getVerifyEvidence(String udri, + BigInteger index) throws ContractException { + final Function function = new Function(FUNC_GETVERIFYEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(index)), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple4, List>( + (Boolean) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + convertToNative((List) results.get(3).getValue())); + } + + public Tuple3, List> getVerifyEvidenceOfReviewer(String udri, + String reviewerBid, BigInteger index) throws ContractException { + final Function function = new Function(FUNC_GETVERIFYEVIDENCEOFREVIEWER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid), + new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(index)), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {}, new TypeReference>() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple3, List>( + (Boolean) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()), + convertToNative((List) results.get(2).getValue())); + } + + public BigInteger getstrArrayMaxLen() throws ContractException { + final Function function = new Function(FUNC_GETSTRARRAYMAXLEN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public TransactionReceipt grantUserDataRight(String udri, String bid, List dataRight) { + final Function function = new Function( + FUNC_GRANTUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserDataRight(String udri, String bid, + List dataRight) { + final Function function = new Function( + FUNC_GRANTUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserDataRight(String udri, String bid, List dataRight, + TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple3> getGrantUserDataRightInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERDATARIGHT, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple3>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()) + ); + } + + public TransactionReceipt grantUserManagePermission(String bid, String account) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserManagePermission(String bid, String account) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserManagePermission(String bid, String account, + TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getGrantUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt grantUserRoles(String bid, List roles) { + final Function function = new Function( + FUNC_GRANTUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForGrantUserRoles(String bid, List roles) { + final Function function = new Function( + FUNC_GRANTUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String grantUserRoles(String bid, List roles, TransactionCallback callback) { + final Function function = new Function( + FUNC_GRANTUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getGrantUserRolesInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_GRANTUSERROLES, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public Boolean hasUserManageRole(String bid) throws ContractException { + final Function function = new Function(FUNC_HASUSERMANAGEROLE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public List queryUserRole() throws ContractException { + final Function function = new Function(FUNC_QUERYUSERROLE, + Arrays.asList(), + Arrays.>asList(new TypeReference>() {})); + List result = (List) executeCallWithSingleValueReturn(function, List.class); + return convertToNative(result); + } + + public TransactionReceipt revokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeUserManagePermission(String bid) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeUserManagePermission(String bid, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getRevokeUserManagePermissionInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEUSERMANAGEPERMISSION, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt revokeUserRoles(String bid, List roles) { + final Function function = new Function( + FUNC_REVOKEUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForRevokeUserRoles(String bid, List roles) { + final Function function = new Function( + FUNC_REVOKEUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String revokeUserRoles(String bid, List roles, TransactionCallback callback) { + final Function function = new Function( + FUNC_REVOKEUSERROLES, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(roles, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getRevokeUserRolesInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_REVOKEUSERROLES, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public TransactionReceipt setChainName(String name) { + final Function function = new Function( + FUNC_SETCHAINNAME, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetChainName(String name) { + final Function function = new Function( + FUNC_SETCHAINNAME, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setChainName(String name, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETCHAINNAME, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(name)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getSetChainNameInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETCHAINNAME, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt setDataRightCategory(List fields) { + final Function function = new Function( + FUNC_SETDATARIGHTCATEGORY, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetDataRightCategory(List fields) { + final Function function = new Function( + FUNC_SETDATARIGHTCATEGORY, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setDataRightCategory(List fields, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETDATARIGHTCATEGORY, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1> getSetDataRightCategoryInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETDATARIGHTCATEGORY, + Arrays.asList(), + Arrays.>asList(new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1>( + + convertToNative((List) results.get(0).getValue()) + ); + } + + public TransactionReceipt setDataRightSupportVariableDataFields(String category, + List fields) { + final Function function = new Function( + FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(category), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetDataRightSupportVariableDataFields(String category, + List fields) { + final Function function = new Function( + FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(category), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setDataRightSupportVariableDataFields(String category, List fields, + TransactionCallback callback) { + final Function function = new Function( + FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(category), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getSetDataRightSupportVariableDataFieldsInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETDATARIGHTSUPPORTVARIABLEDATAFIELDS, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public TransactionReceipt setTextMaxLen(BigInteger len) { + final Function function = new Function( + FUNC_SETTEXTMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetTextMaxLen(BigInteger len) { + final Function function = new Function( + FUNC_SETTEXTMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setTextMaxLen(BigInteger len, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETTEXTMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getSetTextMaxLenInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETTEXTMAXLEN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (BigInteger) results.get(0).getValue() + ); + } + + public TransactionReceipt setstrArrayMaxLen(BigInteger len) { + final Function function = new Function( + FUNC_SETSTRARRAYMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForSetstrArrayMaxLen(BigInteger len) { + final Function function = new Function( + FUNC_SETSTRARRAYMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String setstrArrayMaxLen(BigInteger len, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETSTRARRAYMAXLEN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32(len)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple1 getSetstrArrayMaxLenInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETSTRARRAYMAXLEN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (BigInteger) results.get(0).getValue() + ); + } + + public TransactionReceipt withdrawDataRightRegister(String udri, List dataRight) { + final Function function = new Function( + FUNC_WITHDRAWDATARIGHTREGISTER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForWithdrawDataRightRegister(String udri, + List dataRight) { + final Function function = new Function( + FUNC_WITHDRAWDATARIGHTREGISTER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String withdrawDataRightRegister(String udri, List dataRight, + TransactionCallback callback) { + final Function function = new Function( + FUNC_WITHDRAWDATARIGHTREGISTER, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2> getWithdrawDataRightRegisterInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_WITHDRAWDATARIGHTREGISTER, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2>( + + (String) results.get(0).getValue(), + convertToNative((List) results.get(1).getValue()) + ); + } + + public TransactionReceipt withdrawReviewEvidence(String udri, String reviewerBid) { + final Function function = new Function( + FUNC_WITHDRAWREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForWithdrawReviewEvidence(String udri, String reviewerBid) { + final Function function = new Function( + FUNC_WITHDRAWREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String withdrawReviewEvidence(String udri, String reviewerBid, + TransactionCallback callback) { + final Function function = new Function( + FUNC_WITHDRAWREVIEWEVIDENCE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(reviewerBid)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple2 getWithdrawReviewEvidenceInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_WITHDRAWREVIEWEVIDENCE, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt withdrawUserDataRight(String udri, String bid, + List dataRight) { + final Function function = new Function( + FUNC_WITHDRAWUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String getSignedTransactionForWithdrawUserDataRight(String udri, String bid, + List dataRight) { + final Function function = new Function( + FUNC_WITHDRAWUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public String withdrawUserDataRight(String udri, String bid, List dataRight, + TransactionCallback callback) { + final Function function = new Function( + FUNC_WITHDRAWUSERDATARIGHT, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(udri), + new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(bid), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray( + org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(dataRight, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public Tuple3> getWithdrawUserDataRightInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_WITHDRAWUSERDATARIGHT, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple3>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()) + ); + } + + public static IDREvidence load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new IDREvidence(contractAddress, client, credential); + } + + public static IDREvidence deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(IDREvidence.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } +} diff --git a/package-lock.json b/package-lock.json index 2d85391f4de697a7b8c81b7c5071e06f2e2824fb..1ae0366365229f9f6545b22d3c0dd261835156c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "daevidence", + "name": "drevidence", "version": "1.0.0", "lockfileVersion": 1, "requires": true, diff --git a/package.json b/package.json index 976e55b203ba350bccee3c7f2266172194b46cd7..4c93db1f4fa49f80526f43fe96032f9de8723ece 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "daevidence", + "name": "drevidence", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/scripts/deploy.js b/scripts/deploy.js index b34d9951e6ed3062b5de5f2b8df97b4197e6c32f..6974438a2b00836d873aaf54625ca55344c8eab4 100644 --- a/scripts/deploy.js +++ b/scripts/deploy.js @@ -10,21 +10,21 @@ async function main() { //deploy logic contract const DAEvidenceController = await ethers.getContractFactory("DAEvidenceController"); - daevidenceController = await DAEvidenceController.deploy(); + drevidenceController = await DAEvidenceController.deploy(); //deploy proxy admin contract - const DAEvProxyAdmin = await ethers.getContractFactory("DAEvProxyAdmin"); - daevProxyAdmin = await DAEvProxyAdmin.deploy(); + const DREvProxyAdmin = await ethers.getContractFactory("DREvProxyAdmin"); + daevProxyAdmin = await DREvProxyAdmin.deploy(); //deploy proxy contract - const DAEvProxy = await ethers.getContractFactory("DAEvProxy"); + const DREvProxy = await ethers.getContractFactory("DREvProxy"); //caculate function signature of initialize() //For ethereum-like chain, function signature of initialize() is 0x8129fc1c //For fisco bcos using sm2, function signature of initialize() is 0xea605f3d initCode = ethers.utils.id("initialize()").substring(0,10); - daevProxy = await DAEvProxy.deploy(daevidenceController.address, daevProxyAdmin.address, initCode); + daevProxy = await DREvProxy.deploy(drevidenceController.address, daevProxyAdmin.address, initCode); console.log("EvidenceController deployed at:", daevProxy.address); } diff --git a/test/daevidence.test.js b/test/drevidence.test.js similarity index 38% rename from test/daevidence.test.js rename to test/drevidence.test.js index cd9fbff015042224c06cd79eb5440f06a2bc9fb7..94f1957a8d646814a92af3153fa1f9fc4fbfc145 100644 --- a/test/daevidence.test.js +++ b/test/drevidence.test.js @@ -15,6 +15,14 @@ let evidenceData = { variableData: [varibleDataKey.right[0], "value_001"], } +let evidenceData2 = { + udri: "urd:002", + dataHash: ["2_hash001", "2_hash002"], + dataRight: ["hold", "process", "operate"], + metaData: ["key_meata_data_001", "key_meata_value_001"], + variableData: [varibleDataKey.right[0], "value_001"], +} + let reviewData = { udri: "urd:101", dataHash: ["hash101", "hash102"], @@ -83,8 +91,135 @@ async function run_and_expect_error(func, expectMsg) { expect(error).to.not.equal(undefined); } -describe("DAEvidence System", function () { - let accessController, identity, daevidenceStorage, daevidenceController, daevidenceController2; +function show_contract_size(contract) { + const artifact = contract.getDeployTransaction().data; + const sizeInBytes = artifact.length / 2; // 因为每两个十六进制字符表示一个字节 + const sizeInKilobytes = sizeInBytes / 1024; // 转换为千字节,如果需要的话 + + console.log(`合约大小为: ${sizeInBytes} 字节 (${sizeInKilobytes.toFixed(2)} KB)`); +} + +async function getContractFactory(contractNameArray) { + let ret = {} + for (let i = 0; i < contractNameArray.length; i++) { + let contract = await ethers.getContractFactory(contractNameArray[i]); + ret[contractNameArray[i]] = contract + } + return ret; +} + +function toHexStringWithPadding(number, paddingLength) { + let hex = number.toString(16) + const paddingZeros = '0'.repeat(Math.max(0, paddingLength - hex.length)) + hex = '0x' + paddingZeros + hex + return hex +} + +async function setFunctions(drEvProxy, proxyAddress, deployer, contract) { + + let adminFunctions = [ + { "type": "function", "name": "disableAccessControl", "selector": ["1980433629", "2854924890"] }, + { "type": "function", "name": "enableAccessControl", "selector": ["922088542", "1158894738"] }, + { "type": "function", "name": "getDataRightCategory", "selector": ["2324699571", "3796759802"] }, + { "type": "function", "name": "getSupportVariableDataFields", "selector": ["3869446330", "376683502"] }, + { "type": "function", "name": "grantUserManagePermission", "selector": ["1037211317", "3070963644"] }, + { "type": "function", "name": "hasUserManageRole", "selector": ["1290417574", "3048132719"] }, + { "type": "function", "name": "initialize", "selector": ["2167012380", "3932184381"] }, + { "type": "function", "name": "setChainName", "selector": ["3234078498", "3307895570"] }, + { "type": "function", "name": "setDataRightCategory", "selector": ["2472945857", "2087572871"] }, + { "type": "function", "name": "setDataRightSupportVariableDataFields", "selector": ["1199116808", "2135762870"] }, + { "type": "function", "name": "setTextMaxLen", "selector": ["1356933702", "1285167137"] }, + + { "type": "function", "name": "getChainName", "selector": ["3609374908", "728140679"] }, + { "type": "function", "name": "getTextMaxLen", "selector": ["3460282540", "1588090095"] }, + { "type": "function", "name": "getstrArrayMaxLen", "selector": ["905356897", "1921885619"] }, + { "type": "function", "name": "getAccessControl", "selector": ["4229803393", "1904329564"] }, + + ] + + let userFunctions = [ + { "type": "function", "name": "addUser", "selector": ["3239424820", "3652011643"] }, + { "type": "function", "name": "getUserRoles", "selector": ["2573946725", "1585755409"] }, + { "type": "function", "name": "grantUserRoles", "selector": ["2322354691", "115265356"] }, + { "type": "function", "name": "revokeUserRoles", "selector": ["593762734", "2271659916"] }, + { "type": "function", "name": "getDataCount", "selector": ["816278328", "3023591269"] }, + { "type": "function", "name": "getDataList", "selector": ["2492434596", "1794719790"] }, + { "type": "function", "name": "getUserReviewCount", "selector": ["2760116549", "3750067263"] }, + { "type": "function", "name": "getUserReviewList", "selector": ["2884685932", "1192066135"] }, + { "type": "function", "name": "queryUserRole", "selector": ["289407936", "1912013404"] }, + { "type": "function", "name": "revokeUserManagePermission", "selector": ["4233016450", "2768200898"] }] + + + let rightEvidenceFunctions = [ + { "type": "function", "name": "addDataRightEvidence", "selector": ["2635209621", "3623663505"] }, + { "type": "function", "name": "appendVariableData", "selector": ["2138450037", "1301797456"] }, + { "type": "function", "name": "getRegisteredData", "selector": ["208288129", "3936625741"] }, + { "type": "function", "name": "getUdriByDatahash", "selector": ["633708824", "3726531728"] }, + { "type": "function", "name": "getUserDataRight", "selector": ["1105228669", "1195862205"] }, + { "type": "function", "name": "withdrawDataRightRegister", "selector": ["2392051885", "1179902888"] }, + { "type": "function", "name": "withdrawUserDataRight", "selector": ["4211774851", "2825282343"] }, + { "type": "function", "name": "grantUserDataRight", "selector": ["3258251539", "3358242835"] }] + + let reviewEvidenceFunctions = [ + { "type": "function", "name": "addReviewEvidence", "selector": ["4024293368", "766756406"] }, + { "type": "function", "name": "getReviewCount", "selector": ["1485793629", "1330250274"] }, + { "type": "function", "name": "getReviewCountOfReviewer", "selector": ["3868489521", "2826438872"] }, + { "type": "function", "name": "getVerifyEvidence", "selector": ["1855339097", "4061585395"] }, + { "type": "function", "name": "getVerifyEvidenceOfReviewer", "selector": ["1591648918", "3508812136"] }, + { "type": "function", "name": "withdrawReviewEvidence", "selector": ["932021754", "2229502562"] }] + + // async function setFunc(drEvProxy, deployer, funcInfo, address) { + // let selector = funcInfo.selector[0] + // await drEvProxy.connect(deployer).setSelector(proxyAddress, `${toHexStringWithPadding(Number(selector), 8)}`, address); + // } + + // for (let i = 0; i < adminFunctions.length; i++) { + // await setFunc(drEvProxy, deployer, adminFunctions[i], contract["DREvidenceAdminController"].address) + // } + + // for (let i = 0; i < userFunctions.length; i++) { + // await setFunc(drEvProxy, deployer, userFunctions[i], contract["DREvidenceUserController"].address) + // } + + // for (let i = 0; i < rightEvidenceFunctions.length; i++) { + // await setFunc(drEvProxy, deployer, rightEvidenceFunctions[i], contract["DREvidenceRightController"].address) + // } + + // for (let i = 0; i < reviewEvidenceFunctions.length; i++) { + // await setFunc(drEvProxy, deployer, reviewEvidenceFunctions[i], contract["DREvidenceReviewController"].address) + // } + + let selectors = [] + let logicAddresses = [] + + function addSelectors(funcInfo, address) { + selectors.push(`${toHexStringWithPadding(Number(funcInfo.selector[0]), 8)}`) + logicAddresses.push(address) + } + + for (let i = 0; i < adminFunctions.length; i++) { + addSelectors(adminFunctions[i], contract["DREvidenceAdminController"].address) + } + + for (let i = 0; i < userFunctions.length; i++) { + addSelectors(userFunctions[i], contract["DREvidenceUserController"].address) + } + + for (let i = 0; i < rightEvidenceFunctions.length; i++) { + addSelectors(rightEvidenceFunctions[i], contract["DREvidenceRightController"].address) + } + + for (let i = 0; i < reviewEvidenceFunctions.length; i++) { + addSelectors(reviewEvidenceFunctions[i], contract["DREvidenceReviewController"].address) + } + + await drEvProxy.connect(deployer).setSelectors(proxyAddress, selectors, logicAddresses); + +} + +describe("DREvidence System", function () { + let factory = {}, contract = {}; + let accessController, identity, drEvidenceStorage, daEvidenceController, drEvidenceInterface, drEvidenceAdminController, daEvidenceController2; let deployer, user1, user2, approver; let user1Info, user2Info, reviewerInfo, reviewer2Info; @@ -102,35 +237,50 @@ describe("DAEvidence System", function () { reviewerInfo.address = reviewer.address; reviewer2Info.address = reviewer2.address; - //deploy logic contract - const DAEvidenceController = await ethers.getContractFactory("DAEvidenceController"); - daevidenceController = await DAEvidenceController.deploy(); - //daevidenceController = await upgrades.deployProxy(DAEvidenceController, [deployer.address]); + let contractName = ""; + + + factory = await getContractFactory(["DREvProxyAdmin", "DREvProxy", "DREvidenceAdminController", "DREvidenceUserController", "DREvidenceRightController", "DREvidenceReviewController"]); + + contractName = "DREvidenceAdminController"; + contract[contractName] = await factory[contractName].deploy(); + drEvidenceAdminController = contract[contractName]; + // show_contract_size(factory[contractName]); + + contractName = "DREvidenceUserController"; + contract[contractName] = await factory[contractName].deploy(); + // show_contract_size(factory[contractName]); + + contractName = "DREvidenceRightController"; + contract[contractName] = await factory[contractName].deploy(); + // show_contract_size(factory[contractName]); + + contractName = "DREvidenceReviewController"; + contract[contractName] = await factory[contractName].deploy(); + // show_contract_size(factory[contractName]); //deploy proxy admin contract - const DAEvProxyAdmin = await ethers.getContractFactory("DAEvProxyAdmin"); - let daevProxyAdmin = await DAEvProxyAdmin.deploy(); + let drEvProxyAdmin = await factory["DREvProxyAdmin"].deploy(); //deploy proxy contract - const DAEvProxy = await ethers.getContractFactory("DAEvProxy"); - initCode = ethers.utils.id("initialize()").substring(0, 10); //function signature of initialize(): 0x8129fc1c //For fisco bcos sm2, methodId of initialize() is 0xea605f3d //console.log("function signature of initialize(): ", initCode ); + let drEvProxy = await factory["DREvProxy"].deploy(contract["DREvidenceAdminController"].address, drEvProxyAdmin.address, initCode); - let daevProxy = await DAEvProxy.deploy(daevidenceController.address, daevProxyAdmin.address, initCode); - - daevidenceController = DAEvidenceController.attach(daevProxy.address); + // await setFunctions(drEvProxy, deployer, contract) + await setFunctions(drEvProxyAdmin, drEvProxy.address, deployer, contract) + drEvidenceInterface = await ethers.getContractAt("IDREvidence", drEvProxy.address); - await daevidenceController.connect(deployer).grantUserManagePermission("bid-manerge", approver.address); + await drEvidenceInterface.connect(deployer).grantUserManagePermission("bid-manerge", approver.address); // 添加数据权限类别 - await daevidenceController.connect(deployer).setDataRightCategory(["hold", "process", "operate"]); + await drEvidenceInterface.connect(deployer).setDataRightCategory(["hold", "process", "operate"]); }); it("query system roles", async function () { - let roles = await daevidenceController.queryUserRole(); + let roles = await drEvidenceInterface.queryUserRole(); expect(array_equal(["data_holder", "reviewer", "registry", "platform"], roles)).to.equal(true); }) @@ -142,8 +292,8 @@ describe("DAEvidence System", function () { describe("User", function () { describe("Add", function () { it("Add new user (via approver)", async function () { - await daevidenceController.connect(deployer).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); - let user = await daevidenceController.getUserRoles(user1Info.bid); + await drEvidenceInterface.connect(deployer).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); + let user = await drEvidenceInterface.getUserRoles(user1Info.bid); expect(array_equal(user1Info.roles, user.roles)).to.equal(true); expect(user.usci).to.equal(user1Info.usci); expect(user.name).to.equal(user1Info.name); @@ -151,8 +301,8 @@ describe("DAEvidence System", function () { }); it("Add new user (via deployer)", async function () { - await daevidenceController.connect(approver).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); - let user = await daevidenceController.getUserRoles(user1Info.bid); + await drEvidenceInterface.connect(approver).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); + let user = await drEvidenceInterface.getUserRoles(user1Info.bid); expect(array_equal(user1Info.roles, user.roles)).to.equal(true); expect(user.usci).to.equal(user1Info.usci); expect(user.name).to.equal(user1Info.name); @@ -161,7 +311,7 @@ describe("DAEvidence System", function () { it("Add new user (via user)", async function () { let error = undefined try { - await daevidenceController.connect(user1).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); + await drEvidenceInterface.connect(user1).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); } catch (e) { error = e; @@ -175,19 +325,19 @@ describe("DAEvidence System", function () { // 撤回用户权限 describe("Revoke", function () { beforeEach(async function () { - await daevidenceController.connect(deployer).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); + await drEvidenceInterface.connect(deployer).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); }) // via approver it("Via approver)", async function () { - await daevidenceController.connect(approver).revokeUserRoles(user1Info.bid, user1Info.roles); - let user = await daevidenceController.getUserRoles(user1Info.bid); + await drEvidenceInterface.connect(approver).revokeUserRoles(user1Info.bid, user1Info.roles); + let user = await drEvidenceInterface.getUserRoles(user1Info.bid); expect(array_equal([], user.roles)).to.equal(true); }); // via deployer it("Via deployer)", async function () { - await daevidenceController.connect(deployer).revokeUserRoles(user1Info.bid, user1Info.roles); - let user = await daevidenceController.getUserRoles(user1Info.bid); + await drEvidenceInterface.connect(deployer).revokeUserRoles(user1Info.bid, user1Info.roles); + let user = await drEvidenceInterface.getUserRoles(user1Info.bid); expect(array_equal([], user.roles)).to.equal(true); }); @@ -197,7 +347,7 @@ describe("DAEvidence System", function () { await run_and_expect_error( async () => { // 添加Variable Data 支持的字段 - await daevidenceController.connect(user1).revokeUserRoles(user1Info.bid, user1Info.roles); + await drEvidenceInterface.connect(user1).revokeUserRoles(user1Info.bid, user1Info.roles); }, "missing role" ) @@ -210,29 +360,29 @@ describe("DAEvidence System", function () { it("Right Evidence ", async function () { // 添加一个确权存证, 期待失败 await run_and_expect_error( - async () => { await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); }, + async () => { await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); }, "Sender is not registered." ) }); it("Review Evidence", async function () { // 添加Variable Data 支持的字段 - await daevidenceController.connect(deployer).setDataRightSupportVariableDataFields("right", [evidenceData.variableData[0]]); + await drEvidenceInterface.connect(deployer).setDataRightSupportVariableDataFields("right", [evidenceData.variableData[0]]); // 添加一个用户,确保成功 - await daevidenceController.connect(approver).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); + await drEvidenceInterface.connect(approver).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); // 添加一个确权存证,确保成功 - await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); // 未被授权的用户添加审核存证, 期待失败 await run_and_expect_error( async () => { // 添加Variable Data 支持的字段 - await daevidenceController.connect(deployer).setDataRightSupportVariableDataFields("review", [reviewData.variableData[0]]); + await drEvidenceInterface.connect(deployer).setDataRightSupportVariableDataFields("review", [reviewData.variableData[0]]); // string memory udri, string memory reviewerBid, string[] memory reviewDataHash, string[] memory metaData, string[] memory variableData - await daevidenceController.connect(user1).addReviewEvidence(evidenceData.udri, user1Info.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); + await drEvidenceInterface.connect(user1).addReviewEvidence(evidenceData.udri, user1Info.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); }, "User without corresponding role permissions." ) @@ -242,36 +392,36 @@ describe("DAEvidence System", function () { describe("Unauthorized users Evidence (after revoke user roles)", function () { beforeEach(async function () { // 添加一个用户 - await daevidenceController.connect(deployer).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); - await daevidenceController.connect(deployer).addUser(user2Info.bid, user2Info.usci, user2Info.name, user2Info.address, user2Info.roles); + await drEvidenceInterface.connect(deployer).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); + await drEvidenceInterface.connect(deployer).addUser(user2Info.bid, user2Info.usci, user2Info.name, user2Info.address, user2Info.roles); // 添加Variable Data 支持的字段 - await daevidenceController.connect(deployer).setDataRightSupportVariableDataFields("right", varibleDataKey.right); // EVIDENCE_CATEGORY_RIGHT - await daevidenceController.connect(deployer).setDataRightSupportVariableDataFields("review", varibleDataKey.review); // EVIDENCE_CATEGORY_REVIEW + await drEvidenceInterface.connect(deployer).setDataRightSupportVariableDataFields("right", varibleDataKey.right); // EVIDENCE_CATEGORY_RIGHT + await drEvidenceInterface.connect(deployer).setDataRightSupportVariableDataFields("review", varibleDataKey.review); // EVIDENCE_CATEGORY_REVIEW }) it("Right Evidence ", async function () { - await daevidenceController.connect(deployer).revokeUserRoles(user1Info.bid, user1Info.roles); + await drEvidenceInterface.connect(deployer).revokeUserRoles(user1Info.bid, user1Info.roles); // 添加一个确权存证, 期待失败 await run_and_expect_error( - async () => { await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); }, + async () => { await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); }, "User without corresponding role permissions." ) }); it("Review Evidence", async function () { // user1 添加一个确权存证,确保成功 - await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); - await daevidenceController.connect(deployer).revokeUserRoles(user2Info.bid, user2Info.roles); + await drEvidenceInterface.connect(deployer).revokeUserRoles(user2Info.bid, user2Info.roles); // 未被授权的用户添加审核存证, 期待失败 await run_and_expect_error( async () => { // 添加Variable Data 支持的字段 - await daevidenceController.connect(deployer).setDataRightSupportVariableDataFields("review", [reviewData.variableData[0]]); + await drEvidenceInterface.connect(deployer).setDataRightSupportVariableDataFields("review", [reviewData.variableData[0]]); // string memory udri, string memory reviewerBid, string[] memory reviewDataHash, string[] memory metaData, string[] memory variableData - await daevidenceController.connect(user1).addReviewEvidence(evidenceData.udri, user1Info.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); + await drEvidenceInterface.connect(user1).addReviewEvidence(evidenceData.udri, user1Info.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); }, "User without corresponding role permissions." ) @@ -281,30 +431,63 @@ describe("DAEvidence System", function () { describe("Authorized users Evidence", function () { beforeEach(async function () { // 添加一个用户 - await daevidenceController.connect(deployer).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); - await daevidenceController.connect(deployer).addUser(user2Info.bid, user2Info.usci, user2Info.name, user2Info.address, user2Info.roles); + await drEvidenceInterface.connect(deployer).addUser(user1Info.bid, user1Info.usci, user1Info.name, user1Info.address, user1Info.roles); + await drEvidenceInterface.connect(deployer).addUser(user2Info.bid, user2Info.usci, user2Info.name, user2Info.address, user2Info.roles); // 添加Variable Data 支持的字段 - await daevidenceController.connect(deployer).setDataRightSupportVariableDataFields("right", varibleDataKey.right); // EVIDENCE_CATEGORY_RIGHT - await daevidenceController.connect(deployer).setDataRightSupportVariableDataFields("review", varibleDataKey.review); // EVIDENCE_CATEGORY_REVIEW + await drEvidenceInterface.connect(deployer).setDataRightSupportVariableDataFields("right", varibleDataKey.right); // EVIDENCE_CATEGORY_RIGHT + await drEvidenceInterface.connect(deployer).setDataRightSupportVariableDataFields("review", varibleDataKey.review); // EVIDENCE_CATEGORY_REVIEW }) it("Add right Evidence ", async function () { // 添加一个确权存证,确保成功 - await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); - let urdi = await daevidenceController.connect(user1).getUdriByDatahash(evidenceData.dataHash[0]) + let urdi = await drEvidenceInterface.connect(user1).getUdriByDatahash(evidenceData.dataHash[0]) expect(urdi).to.equal(evidenceData.udri); - urdi = await daevidenceController.connect(user1).getUdriByDatahash(evidenceData.dataHash[1]) + urdi = await drEvidenceInterface.connect(user1).getUdriByDatahash(evidenceData.dataHash[1]) expect(urdi).to.equal(evidenceData.udri); }); + // it("Get count of User's right Evidence", async function () { + // // 添加一个确权存证,确保成功 + // await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + + // // 获取该用户 确权存证数目 + // let count = await drEvidenceInterface.connect(user1).getDataCount(user1Info.bid) + // expect(count).to.equal(1); + + // // 再添加一个确权存证 + // await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData2.udri, user1Info.bid, evidenceData2.dataHash, evidenceData2.dataRight, evidenceData2.metaData, evidenceData2.variableData); + // count = await drEvidenceInterface.connect(user1).getDataCount(user1Info.bid) + // expect(count).to.equal(2); + // }); + + // it("Get User's right Evidence urdi list", async function () { + // // 添加一个确权存证,确保成功 + // await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + + // // 获取该用户 确权存证数目 + // let count = await drEvidenceInterface.connect(user1).getDataCount(user1Info.bid) + + // // 获取该用户 确权存证list + // let urdiList = await drEvidenceInterface.connect(user1).getDataList(user1Info.bid, 0, count) + // expect(array_equal(urdiList, [evidenceData.udri])).to.equal(true); + + // // 再添加一个确权存证 + // await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData2.udri, user1Info.bid, evidenceData2.dataHash, evidenceData2.dataRight, evidenceData2.metaData, evidenceData2.variableData); + + // count = await drEvidenceInterface.connect(user1).getDataCount(user1Info.bid) + // urdiList = await drEvidenceInterface.connect(user1).getDataList(user1Info.bid, 0, count) + // expect(array_equal(urdiList, [evidenceData.udri, evidenceData2.udri])).to.equal(true) + // }); + it("Add right Evidence without data rights ", async function () { // 添加一个确权存证没有 hold 数据权限 await run_and_expect_error( - async () => { await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, [], evidenceData.metaData, evidenceData.variableData) }, + async () => { await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, [], evidenceData.metaData, evidenceData.variableData) }, "The data right [hold] is required." ) }); @@ -314,13 +497,13 @@ describe("DAEvidence System", function () { describe("Grant data right to other user", function () { beforeEach(async function () { // 添加一个确权存证 - await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); }) // 非 oner 授权 it("None-owner grant data right", async function () { await run_and_expect_error( - async () => { await daevidenceController.connect(user2).grantUserDataRight(evidenceData.udri, user2Info.bid, ["hold", "process", "operate"]) }, + async () => { await drEvidenceInterface.connect(user2).grantUserDataRight(evidenceData.udri, user2Info.bid, ["hold", "process", "operate"]) }, "Sender is not evidence owner." ) }) @@ -329,10 +512,10 @@ describe("DAEvidence System", function () { it("owner grant data right", async function () { // 给其他用户添加数据权限 ["hold", "process", "operate"] let setRights = ["process", "operate"] - await daevidenceController.connect(user1).grantUserDataRight(evidenceData.udri, user2Info.bid, setRights); + await drEvidenceInterface.connect(user1).grantUserDataRight(evidenceData.udri, user2Info.bid, setRights); // 检查数据权限 - let rights = await daevidenceController.connect(user2).getUserDataRight(evidenceData.udri, user2Info.bid); + let rights = await drEvidenceInterface.connect(user2).getUserDataRight(evidenceData.udri, user2Info.bid); // console.log("rights:", rights) expect(array_equal(rights, setRights)).to.equal(true); }) @@ -341,10 +524,10 @@ describe("DAEvidence System", function () { it("owner grant Unknown data right", async function () { // 给其他用户添加数据权限 ["hold", "process", "operate"] let setRights = ["process", "operate", "admin-op"]// "admin-op" is not supported - await daevidenceController.connect(user1).grantUserDataRight(evidenceData.udri, user2Info.bid, setRights); + await drEvidenceInterface.connect(user1).grantUserDataRight(evidenceData.udri, user2Info.bid, setRights); // 检查数据权限 - let rights = await daevidenceController.connect(user2).getUserDataRight(evidenceData.udri, user2Info.bid); + let rights = await drEvidenceInterface.connect(user2).getUserDataRight(evidenceData.udri, user2Info.bid); // console.log("rights:", rights) expect(array_equal(rights, ["process", "operate"])).to.equal(true); }) @@ -353,14 +536,14 @@ describe("DAEvidence System", function () { describe("Append Variable Data", function () { it("Append Variable Data", async function () { - let ret1 = await daevidenceController.connect(user2).getRegisteredData(evidenceData.udri); + let ret1 = await drEvidenceInterface.connect(user2).getRegisteredData(evidenceData.udri); expect(array_equal(ret1.variableData, ['key_001', 'value_001'])).to.equal(true); let appendData = ["key_002", "new_value2"] - await daevidenceController.connect(user1).appendVariableData(evidenceData.udri, appendData); + await drEvidenceInterface.connect(user1).appendVariableData(evidenceData.udri, appendData); - let ret2 = await daevidenceController.connect(user2).getRegisteredData(evidenceData.udri); + let ret2 = await drEvidenceInterface.connect(user2).getRegisteredData(evidenceData.udri); expect(array_equal(ret2.variableData, ['key_001', 'value_001', 'key_002', 'new_value2'])).to.equal(true); @@ -370,7 +553,7 @@ describe("DAEvidence System", function () { let appendData = ["unknown_key_002", "new_value2"] await run_and_expect_error( async () => { - await daevidenceController.connect(user1).appendVariableData(evidenceData.udri, appendData); + await drEvidenceInterface.connect(user1).appendVariableData(evidenceData.udri, appendData); }, "Part of variableData field is not allown" ) @@ -384,8 +567,8 @@ describe("DAEvidence System", function () { beforeEach(async function () { let setRights = ["process", "operate"] // 添加一个确权存证 - await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); - await daevidenceController.connect(user1).grantUserDataRight(evidenceData.udri, user2Info.bid, setRights); + await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + await drEvidenceInterface.connect(user1).grantUserDataRight(evidenceData.udri, user2Info.bid, setRights); }) @@ -394,7 +577,7 @@ describe("DAEvidence System", function () { let setRights = ["process", "operate"] await run_and_expect_error( async () => { - await daevidenceController.connect(user2).withdrawDataRightRegister(evidenceData.udri, setRights); + await drEvidenceInterface.connect(user2).withdrawDataRightRegister(evidenceData.udri, setRights); }, "Sender neither the owner nor the authority." ) @@ -403,12 +586,12 @@ describe("DAEvidence System", function () { // owner 撤回确权存证 it("Owner", async function () { let setRights = ["process", "operate"] - await daevidenceController.connect(user1).withdrawDataRightRegister(evidenceData.udri, setRights); + await drEvidenceInterface.connect(user1).withdrawDataRightRegister(evidenceData.udri, setRights); - let rights = await daevidenceController.connect(user1).getUserDataRight(evidenceData.udri, user1Info.bid); + let rights = await drEvidenceInterface.connect(user1).getUserDataRight(evidenceData.udri, user1Info.bid); expect(array_equal(["hold"], rights)).to.equal(true); - let ret = await daevidenceController.connect(approver).getRegisteredData(evidenceData.udri); + let ret = await drEvidenceInterface.connect(approver).getRegisteredData(evidenceData.udri); expect(array_equal(["hold"], ret.dataRight)).to.equal(true); expect(ret.isWithdraw).to.equal(false); }) @@ -416,24 +599,24 @@ describe("DAEvidence System", function () { // 权威机构 撤回确权存证 it("Manager", async function () { let setRights = ["process", "operate"] - await daevidenceController.connect(user1).withdrawDataRightRegister(evidenceData.udri, setRights); + await drEvidenceInterface.connect(user1).withdrawDataRightRegister(evidenceData.udri, setRights); - let rights = await daevidenceController.connect(approver).getUserDataRight(evidenceData.udri, user1Info.bid); + let rights = await drEvidenceInterface.connect(approver).getUserDataRight(evidenceData.udri, user1Info.bid); expect(array_equal(["hold"], rights)).to.equal(true); - let ret = await daevidenceController.connect(approver).getRegisteredData(evidenceData.udri); + let ret = await drEvidenceInterface.connect(approver).getRegisteredData(evidenceData.udri); expect(array_equal(["hold"], ret.dataRight)).to.equal(true); expect(ret.isWithdraw).to.equal(false); }) // Owner 撤回自己 某个确权存证 中的所有权限 it("Owner withdraw all the rights.", async function () { - await daevidenceController.connect(user1).withdrawDataRightRegister(evidenceData.udri, evidenceData.dataRight); + await drEvidenceInterface.connect(user1).withdrawDataRightRegister(evidenceData.udri, evidenceData.dataRight); - let rights = await daevidenceController.connect(approver).getUserDataRight(evidenceData.udri, user1Info.bid); + let rights = await drEvidenceInterface.connect(approver).getUserDataRight(evidenceData.udri, user1Info.bid); expect(array_equal([], rights)).to.equal(true); - let ret = await daevidenceController.connect(approver).getRegisteredData(evidenceData.udri); + let ret = await drEvidenceInterface.connect(approver).getRegisteredData(evidenceData.udri); expect(array_equal([], ret.dataRight)).to.equal(true); expect(ret.isWithdraw).to.equal(true); }) @@ -445,10 +628,10 @@ describe("DAEvidence System", function () { beforeEach(async function () { let setRights = ["process", "operate"] // 添加一个确权存证 - await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); - await daevidenceController.connect(user1).grantUserDataRight(evidenceData.udri, user2Info.bid, setRights); + await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + await drEvidenceInterface.connect(user1).grantUserDataRight(evidenceData.udri, user2Info.bid, setRights); - let rights = await daevidenceController.connect(user1).getUserDataRight(evidenceData.udri, user2Info.bid); + let rights = await drEvidenceInterface.connect(user1).getUserDataRight(evidenceData.udri, user2Info.bid); }) // 非 owner 撤回授权 @@ -456,7 +639,7 @@ describe("DAEvidence System", function () { let setRights = ["process", "operate"] await run_and_expect_error( async () => { - await daevidenceController.connect(user2).withdrawUserDataRight(evidenceData.udri, user2Info.bid, setRights); + await drEvidenceInterface.connect(user2).withdrawUserDataRight(evidenceData.udri, user2Info.bid, setRights); }, "Sender is not evidence owner." ) @@ -465,16 +648,16 @@ describe("DAEvidence System", function () { // owner 撤回授权 it("owner withdraw data right", async function () { let setRights = ["process", "operate"] - await daevidenceController.connect(user1).withdrawUserDataRight(evidenceData.udri, user2Info.bid, setRights); - let rights = await daevidenceController.connect(user1).getUserDataRight(evidenceData.udri, user2Info.bid); + await drEvidenceInterface.connect(user1).withdrawUserDataRight(evidenceData.udri, user2Info.bid, setRights); + let rights = await drEvidenceInterface.connect(user1).getUserDataRight(evidenceData.udri, user2Info.bid); expect(array_equal([], rights)).to.equal(true); }) // onwer 撤回授权 ,权限是未知的, TODO: 确认这里报错 还是成功 更好? it("owner withdraw Unknown data right", async function () { let setRights = ["process", "unknown"] - await daevidenceController.connect(user1).withdrawUserDataRight(evidenceData.udri, user2Info.bid, setRights); - let rights = await daevidenceController.connect(user1).getUserDataRight(evidenceData.udri, user2Info.bid); + await drEvidenceInterface.connect(user1).withdrawUserDataRight(evidenceData.udri, user2Info.bid, setRights); + let rights = await drEvidenceInterface.connect(user1).getUserDataRight(evidenceData.udri, user2Info.bid); expect(array_equal(["operate"], rights)).to.equal(true); }) @@ -483,90 +666,127 @@ describe("DAEvidence System", function () { describe("Review Evidence", async function () { beforeEach(async function () { // 添加一个确权存证 - await daevidenceController.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); + await drEvidenceInterface.connect(user1).addDataRightEvidence(evidenceData.udri, user1Info.bid, evidenceData.dataHash, evidenceData.dataRight, evidenceData.metaData, evidenceData.variableData); }) // User 那部分已经测试 // 未被授review权限的用户添加审核存证, 期待失败 // it("Non-reviewer", async function () { // // function addReviewEvidence(string memory udri, string memory reviewerBid, string[] memory reviewDataHash, string[] memory metaData, string[] memory variableData) public { - // await daevidenceController.connect(user2).addReviewEvidence(evidenceData.udri, user2Info.bid); + // await drEvidenceInterface.connect(user2).addReviewEvidence(evidenceData.udri, user2Info.bid); // }) // 被授review权限的用户添加审核存证, 期待成功 it("Reviewer", async function () { - await daevidenceController.connect(deployer).addUser(reviewerInfo.bid, reviewerInfo.usci, reviewerInfo.name, reviewerInfo.address, reviewerInfo.roles); - await daevidenceController.connect(deployer).addUser(reviewer2Info.bid, reviewer2Info.usci, reviewer2Info.name, reviewer2Info.address, reviewer2Info.roles); + await drEvidenceInterface.connect(deployer).addUser(reviewerInfo.bid, reviewerInfo.usci, reviewerInfo.name, reviewerInfo.address, reviewerInfo.roles); + await drEvidenceInterface.connect(deployer).addUser(reviewer2Info.bid, reviewer2Info.usci, reviewer2Info.name, reviewer2Info.address, reviewer2Info.roles); - let count = await daevidenceController.connect(reviewer).getReviewCount(evidenceData.udri); + let count = await drEvidenceInterface.connect(reviewer).getReviewCount(evidenceData.udri); expect(count).to.equal(0); - count = await daevidenceController.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); + count = await drEvidenceInterface.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); expect(count).to.equal(0); - await daevidenceController.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); + await drEvidenceInterface.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); - count = await daevidenceController.connect(reviewer).getReviewCount(evidenceData.udri); + count = await drEvidenceInterface.connect(reviewer).getReviewCount(evidenceData.udri); expect(count).to.equal(1); - count = await daevidenceController.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); + count = await drEvidenceInterface.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); expect(count).to.equal(1); - count = await daevidenceController.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewer2Info.bid); + count = await drEvidenceInterface.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewer2Info.bid); expect(count).to.equal(0); // 再增加一个审核存证,另外使用一个reviewer,检查数目 - await daevidenceController.connect(reviewer2).addReviewEvidence(evidenceData.udri, reviewer2Info.bid, review2Data.dataHash, review2Data.metaData, review2Data.variableData); + await drEvidenceInterface.connect(reviewer2).addReviewEvidence(evidenceData.udri, reviewer2Info.bid, review2Data.dataHash, review2Data.metaData, review2Data.variableData); - count = await daevidenceController.connect(reviewer).getReviewCount(evidenceData.udri); + count = await drEvidenceInterface.connect(reviewer).getReviewCount(evidenceData.udri); expect(count).to.equal(2); - count = await daevidenceController.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); + count = await drEvidenceInterface.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); expect(count).to.equal(1); - count = await daevidenceController.connect(reviewer2).getReviewCountOfReviewer(evidenceData.udri, reviewer2Info.bid); + count = await drEvidenceInterface.connect(reviewer2).getReviewCountOfReviewer(evidenceData.udri, reviewer2Info.bid); expect(count).to.equal(1); }) + // it("Get count of User's review Evidence", async function () { + // await drEvidenceInterface.connect(deployer).addUser(reviewerInfo.bid, reviewerInfo.usci, reviewerInfo.name, reviewerInfo.address, reviewerInfo.roles); + // await drEvidenceInterface.connect(deployer).addUser(reviewer2Info.bid, reviewer2Info.usci, reviewer2Info.name, reviewer2Info.address, reviewer2Info.roles); + + // let count = await drEvidenceInterface.connect(reviewer).getReviewCount(evidenceData.udri); + // expect(count).to.equal(0); + + // await drEvidenceInterface.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); + + // count = await drEvidenceInterface.connect(reviewer).getUserReviewCount(reviewerInfo.bid); + // expect(count).to.equal(1); + + // // 再增加一个审核存证,另外使用一个reviewer,检查数目 + // await drEvidenceInterface.connect(reviewer2).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, review2Data.dataHash, review2Data.metaData, review2Data.variableData); + + // count = await drEvidenceInterface.connect(reviewer).getUserReviewCount(reviewerInfo.bid); + // expect(count).to.equal(2); + // }) + + // it("Get User's review Evidence data hash list", async function () { + // await drEvidenceInterface.connect(deployer).addUser(reviewerInfo.bid, reviewerInfo.usci, reviewerInfo.name, reviewerInfo.address, reviewerInfo.roles); + // await drEvidenceInterface.connect(deployer).addUser(reviewer2Info.bid, reviewer2Info.usci, reviewer2Info.name, reviewer2Info.address, reviewer2Info.roles); + + // await drEvidenceInterface.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); + + // count = await drEvidenceInterface.connect(reviewer).getUserReviewCount(reviewerInfo.bid); + // let dataHashList = await drEvidenceInterface.connect(reviewer).getUserReviewList(reviewerInfo.bid, 0, count); + // expect(array_equal(dataHashList, [reviewData.dataHash[0]])).to.equal(true); + + // // 再增加一个审核存证,另外使用一个reviewer,检查数目 + // await drEvidenceInterface.connect(reviewer2).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, review2Data.dataHash, review2Data.metaData, review2Data.variableData); + + // count = await drEvidenceInterface.connect(reviewer2).getUserReviewCount(reviewerInfo.bid); + // dataHashList = await drEvidenceInterface.connect(reviewer2).getUserReviewList(reviewerInfo.bid, 0, count); + // expect(array_equal(dataHashList, [reviewData.dataHash[0], review2Data.dataHash[0]])).to.equal(true); + // }) + it("Get via index", async function () { - await daevidenceController.connect(deployer).addUser(reviewerInfo.bid, reviewerInfo.usci, reviewerInfo.name, reviewerInfo.address, reviewerInfo.roles); - await daevidenceController.connect(deployer).addUser(reviewer2Info.bid, reviewer2Info.usci, reviewer2Info.name, reviewer2Info.address, reviewer2Info.roles); + await drEvidenceInterface.connect(deployer).addUser(reviewerInfo.bid, reviewerInfo.usci, reviewerInfo.name, reviewerInfo.address, reviewerInfo.roles); + await drEvidenceInterface.connect(deployer).addUser(reviewer2Info.bid, reviewer2Info.usci, reviewer2Info.name, reviewer2Info.address, reviewer2Info.roles); - await daevidenceController.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); - await daevidenceController.connect(reviewer2).addReviewEvidence(evidenceData.udri, reviewer2Info.bid, review2Data.dataHash, review2Data.metaData, review2Data.variableData); + await drEvidenceInterface.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); + await drEvidenceInterface.connect(reviewer2).addReviewEvidence(evidenceData.udri, reviewer2Info.bid, review2Data.dataHash, review2Data.metaData, review2Data.variableData); let ret - ret = await daevidenceController.connect(reviewer).getVerifyDAEvidence(evidenceData.udri, 0);// shoulde be reviewData + ret = await drEvidenceInterface.connect(reviewer).getVerifyEvidence(evidenceData.udri, 0);// shoulde be reviewData expect(ret.reviewerBid).to.equal(reviewerInfo.bid); expect(array_equal(ret.metaData, reviewData.metaData)).to.equal(true); expect(array_equal(ret.variableData, reviewData.variableData)).to.equal(true); - ret = await daevidenceController.connect(reviewer).getVerifyDAEvidence(evidenceData.udri, 1);// shoulde be review2Data + ret = await drEvidenceInterface.connect(reviewer).getVerifyEvidence(evidenceData.udri, 1);// shoulde be review2Data expect(ret.reviewerBid).to.equal(reviewer2Info.bid); expect(array_equal(ret.metaData, review2Data.metaData)).to.equal(true); expect(array_equal(ret.variableData, review2Data.variableData)).to.equal(true); - ret = await daevidenceController.connect(reviewer).getVerifyDAEvidenceOfReviewer(evidenceData.udri, reviewerInfo.bid, 0);// shoulde be review2Data + ret = await drEvidenceInterface.connect(reviewer).getVerifyEvidenceOfReviewer(evidenceData.udri, reviewerInfo.bid, 0);// shoulde be review2Data expect(array_equal(ret.metaData, reviewData.metaData)).to.equal(true); expect(array_equal(ret.variableData, reviewData.variableData)).to.equal(true); - ret = await daevidenceController.connect(reviewer).getVerifyDAEvidenceOfReviewer(evidenceData.udri, reviewer2Info.bid, 0);// shoulde be review2Data + ret = await drEvidenceInterface.connect(reviewer).getVerifyEvidenceOfReviewer(evidenceData.udri, reviewer2Info.bid, 0);// shoulde be review2Data expect(array_equal(ret.metaData, review2Data.metaData)).to.equal(true); expect(array_equal(ret.variableData, review2Data.variableData)).to.equal(true); await run_and_expect_error( async () => { - await daevidenceController.connect(reviewer).getVerifyDAEvidence(evidenceData.udri, 2); + await drEvidenceInterface.connect(reviewer).getVerifyEvidence(evidenceData.udri, 2); }, "invalid index" ) await run_and_expect_error( async () => { - await daevidenceController.connect(reviewer).getVerifyDAEvidenceOfReviewer(evidenceData.udri, reviewerInfo.bid, 1);// shoulde be error + await drEvidenceInterface.connect(reviewer).getVerifyEvidenceOfReviewer(evidenceData.udri, reviewerInfo.bid, 1);// shoulde be error }, "invalid index" ) await run_and_expect_error( async () => { - await daevidenceController.connect(reviewer).getVerifyDAEvidenceOfReviewer(evidenceData.udri, reviewer2Info.bid, 1);// shoulde be error + await drEvidenceInterface.connect(reviewer).getVerifyEvidenceOfReviewer(evidenceData.udri, reviewer2Info.bid, 1);// shoulde be error }, "invalid index" ) @@ -574,25 +794,25 @@ describe("DAEvidence System", function () { describe("Get & Withdraw", async function () { beforeEach(async function () { - await daevidenceController.connect(deployer).addUser(reviewerInfo.bid, reviewerInfo.usci, reviewerInfo.name, reviewerInfo.address, reviewerInfo.roles); + await drEvidenceInterface.connect(deployer).addUser(reviewerInfo.bid, reviewerInfo.usci, reviewerInfo.name, reviewerInfo.address, reviewerInfo.roles); // 添加两个审核存证 - await daevidenceController.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); - await daevidenceController.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash2, reviewData.metaData, reviewData.variableData); + await drEvidenceInterface.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash, reviewData.metaData, reviewData.variableData); + await drEvidenceInterface.connect(reviewer).addReviewEvidence(evidenceData.udri, reviewerInfo.bid, reviewData.dataHash2, reviewData.metaData, reviewData.variableData); }) // 撤回审核存证 it("withdraw Review", async function () { - let count = await daevidenceController.connect(reviewer).getReviewCount(evidenceData.udri); + let count = await drEvidenceInterface.connect(reviewer).getReviewCount(evidenceData.udri); expect(count).to.equal(2); - count = await daevidenceController.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); + count = await drEvidenceInterface.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); expect(count).to.equal(2); - await daevidenceController.connect(reviewer).withdrawReviewEvidence(evidenceData.udri, reviewerInfo.bid) + await drEvidenceInterface.connect(reviewer).withdrawReviewEvidence(evidenceData.udri, reviewerInfo.bid) // 撤销后 数目不变 - count = await daevidenceController.connect(reviewer).getReviewCount(evidenceData.udri); + count = await drEvidenceInterface.connect(reviewer).getReviewCount(evidenceData.udri); expect(count).to.equal(2); - count = await daevidenceController.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); + count = await drEvidenceInterface.connect(reviewer).getReviewCountOfReviewer(evidenceData.udri, reviewerInfo.bid); expect(count).to.equal(2); }) @@ -600,16 +820,16 @@ describe("DAEvidence System", function () { // 获取审核存证详细信息 it("Get Review", async function () { // 撤销前, 撤销状态为 False - let ret1 = await daevidenceController.connect(user1).getVerifyDAEvidence(evidenceData.udri, 0); - let ret2 = await daevidenceController.connect(user1).getVerifyDAEvidence(evidenceData.udri, 1); + let ret1 = await drEvidenceInterface.connect(user1).getVerifyEvidence(evidenceData.udri, 0); + let ret2 = await drEvidenceInterface.connect(user1).getVerifyEvidence(evidenceData.udri, 1); expect(ret1.isWithdraw).to.equal(false); expect(ret2.isWithdraw).to.equal(false); - await daevidenceController.connect(reviewer).withdrawReviewEvidence(evidenceData.udri, reviewerInfo.bid) + await drEvidenceInterface.connect(reviewer).withdrawReviewEvidence(evidenceData.udri, reviewerInfo.bid) - ret1 = await daevidenceController.connect(user1).getVerifyDAEvidence(evidenceData.udri, 0); - ret2 = await daevidenceController.connect(user1).getVerifyDAEvidence(evidenceData.udri, 1); + ret1 = await drEvidenceInterface.connect(user1).getVerifyEvidence(evidenceData.udri, 0); + ret2 = await drEvidenceInterface.connect(user1).getVerifyEvidence(evidenceData.udri, 1); // 撤销后, 所有撤销状态为 True expect(ret1.isWithdraw).to.equal(true); @@ -619,16 +839,16 @@ describe("DAEvidence System", function () { // 获取审核存证详细信息 it("Get Review", async function () { // 撤销前, 撤销状态为 False - let ret1 = await daevidenceController.connect(user1).getVerifyDAEvidence(evidenceData.udri, 0); - let ret2 = await daevidenceController.connect(user1).getVerifyDAEvidence(evidenceData.udri, 1); + let ret1 = await drEvidenceInterface.connect(user1).getVerifyEvidence(evidenceData.udri, 0); + let ret2 = await drEvidenceInterface.connect(user1).getVerifyEvidence(evidenceData.udri, 1); expect(ret1.isWithdraw).to.equal(false); expect(ret2.isWithdraw).to.equal(false); - await daevidenceController.connect(reviewer).withdrawReviewEvidence(evidenceData.udri, reviewerInfo.bid) + await drEvidenceInterface.connect(reviewer).withdrawReviewEvidence(evidenceData.udri, reviewerInfo.bid) - ret1 = await daevidenceController.connect(user1).getVerifyDAEvidence(evidenceData.udri, 0); - ret2 = await daevidenceController.connect(user1).getVerifyDAEvidence(evidenceData.udri, 1); + ret1 = await drEvidenceInterface.connect(user1).getVerifyEvidence(evidenceData.udri, 0); + ret2 = await drEvidenceInterface.connect(user1).getVerifyEvidence(evidenceData.udri, 1); // 撤销后, 所有撤销状态为 True expect(ret1.isWithdraw).to.equal(true); @@ -644,31 +864,31 @@ describe("DAEvidence System", function () { }) - // it("Should store and check daevidence, and prevent duplicate eid store", async function () { - // const daevid = ethers.utils.sha256("0x2345"); - // console.log("daevid: ", daevid); + // it("Should store and check drEvidence, and prevent duplicate eid store", async function () { + // const drEvid = ethers.utils.sha256("0x2345"); + // console.log("drEvid: ", drEvid); // const text = "3e0a3501a65b4a7bf889c6f180cc6e35747e5aaff931cc90b760671efa09aeac"; - // await daevidenceController.connect(approver).grantDAEvidenceRole(user1.address); - // await daevidenceController.connect(user1).storeDAEvidence(daevid, text); + // await drEvidenceInterface.connect(approver).grantDAEvidenceRole(user1.address); + // await drEvidenceInterface.connect(user1).storeDAEvidence(drEvid, text); - // const [exists, storedText, timestamp] = await daevidenceController.getDAEvidenceById(daevid); + // const [exists, storedText, timestamp] = await drEvidenceInterface.getDAEvidenceById(drEvid); // expect(exists).to.be.true; // expect(timestamp).to.not.equal(0); // expect(storedText).to.equal(text); - // //should prevent duplicate daevidence stoarge + // //should prevent duplicate drEvidence stoarge // await expect( - // daevidenceController.connect(user1).storeDAEvidence(daevid, text) - // ).to.be.revertedWith("DAEvidenceStorage: daevid already exists"); + // drEvidenceInterface.connect(user1).storeDAEvidence(drEvid, text) + // ).to.be.revertedWith("DREvidenceStorage: drEvid already exists"); // }); // it("Should allow unauthorized access if isAccessControlEnabled is false", async function () { - // const daevid = ethers.utils.sha256("0x1235"); + // const drEvid = ethers.utils.sha256("0x1235"); // const text = "3e0a3501a65b4a7bf889c6f180cc6e35747e5aaff931cc90b760671efa09aead"; - // daevidenceController.connect(user2).storeDAEvidence(daevid, text); - // const [exists, storedText, timestamp] = await daevidenceController.getDAEvidenceById(daevid); + // drEvidenceInterface.connect(user2).storeDAEvidence(drEvid, text); + // const [exists, storedText, timestamp] = await drEvidenceInterface.getDAEvidenceById(drEvid); // expect(exists).to.be.true; // expect(timestamp).to.not.equal(0); // expect(storedText).to.equal(text); @@ -676,56 +896,56 @@ describe("DAEvidence System", function () { // it("Should prevent unauthorized access if isAccessControlEnabled is true", async function () { - // daevidenceController.connect(approver).enableAccessControl(); + // drEvidenceInterface.connect(approver).enableAccessControl(); - // const daevid = ethers.utils.sha256("0x1234"); + // const drEvid = ethers.utils.sha256("0x1234"); // const text = "3e0a3501a65b4a7bf889c6f180cc6e35747e5aaff931cc90b760671efa09aeac"; // await expect( - // daevidenceController.connect(user2).storeDAEvidence(daevid, text) + // drEvidenceInterface.connect(user2).storeDAEvidence(drEvid, text) // ).to.be.reverted; // }); // it("Should not allow text length over _textMaxLen, and prevent _textMaxLen unauthorized modified ", async function () { - // //try to store daevidence with text length over _textMaxLen - // const daevid = ethers.utils.sha256("0x4567"); + // //try to store drEvidence with text length over _textMaxLen + // const drEvid = ethers.utils.sha256("0x4567"); // const text = "3e0a3501a65b4a7bf889c6f180cc6e35747e5aaff931cc90b760671efa09aeac3e0a3501a65b4a7bf889c6f180cc6e35747e5aaff931cc90b760671efa09aeac"; - // await daevidenceController.connect(approver).grantDAEvidenceRole(user1.address); + // await drEvidenceInterface.connect(approver).grantDAEvidenceRole(user1.address); // await expect( - // daevidenceController.connect(user1).storeDAEvidence(daevid, text) + // drEvidenceInterface.connect(user1).storeDAEvidence(drEvid, text) // ).to.be.revertedWith("DAEvidenceController: text too long"); // //try to modify _textMaxLen - // await daevidenceController.connect(deployer).setTextMaxLen(200); - // await daevidenceController.connect(user1).storeDAEvidence(daevid, text); - // const [exists, storedText, timestamp] = await daevidenceController.getDAEvidenceById(daevid); + // await drEvidenceInterface.connect(deployer).setTextMaxLen(200); + // await drEvidenceInterface.connect(user1).storeDAEvidence(drEvid, text); + // const [exists, storedText, timestamp] = await drEvidenceInterface.getDAEvidenceById(drEvid); // expect(exists).to.be.true; // expect(timestamp).to.not.equal(0); // expect(storedText).to.equal(text); // //prevent unauthorized modified _textMaxLen // expect( - // daevidenceController.connect(user1).setTextMaxLen(300) + // drEvidenceInterface.connect(user1).setTextMaxLen(300) // ).to.be.reverted; // }); // it("contract upgrade should be ok", async function () { - // const daevid = ethers.utils.sha256("0x5678"); - // console.log("evid: ", daevid); + // const drEvid = ethers.utils.sha256("0x5678"); + // console.log("evid: ", drEvid); // const text = "adfa131311olddata"; - // await daevidenceController.connect(user1).storeDAEvidence(daevid, text); + // await drEvidenceInterface.connect(user1).storeDAEvidence(drEvid, text); // //deploy new contract // const DAEvidenceController = await ethers.getContractFactory("DAEvidenceController"); // newDAEvidenceController = await DAEvidenceController.deploy(); // //upgrade contract - // daevProxyAdmin.upgradeAndCall(daevProxy.address, newDAEvidenceController.address) + // drEvProxyAdmin.upgradeAndCall(drEvProxy.address, newDAEvidenceController.address) // console.log("newDAEvidenceController Address:", newDAEvidenceController.address); - // const [exists, storedText, timestamp] = await daevidenceController.getDAEvidenceById(daevid); + // const [exists, storedText, timestamp] = await drEvidenceInterface.getDAEvidenceById(drEvid); // expect(exists).to.be.true; // expect(timestamp).to.not.equal(0); // expect(storedText).to.equal(text);