Closed L7L9 closed 10 months ago
作者:李奇龙 学校:广东工业大学
作者:李奇龙
学校:广东工业大学
添加枚举类DataSchemaType:用于描述数据目录类型
DataSchemaType
package com.webank.ddcms.enums; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.extern.slf4j.Slf4j; /** * 描述数据目录可见状态的枚举类 * @author lql * @date 2023/09/04 */ @AllArgsConstructor @Getter @Slf4j public enum DataSchemaType { ONLY_SELF(0), VISIBLE(1); private final int code; public static DataSchemaType getDataType(int code) { for (DataSchemaType type : DataSchemaType.values()) { if (type.code == code) { return type; } } return null; } }
更新DataSchemaContract合约对应的java类
DataSchemaContract
DataSchemaServiceImpl类中添加代码片段:行数327-352
DataSchemaServiceImpl
作用:调用合约中的createDataDetail函数
createDataDetail
TransactionReceipt dataDetailReceipt = null; // determine visibility if (schemaRequest.getVisible().equals(DataSchemaType.VISIBLE.getCode())) { dataDetailReceipt = dataSchemaModule.createDataDetail( Bytes32.DEFAULT.getValue(), HexUtil.decodeHex(product.getProductBid()), dataSchemaModule.getCreateDataSchemaOutput(receipt).getValue1(), String.valueOf(schemaRequest.getProductId()), schemaRequest.getContentSchema(), schemaRequest.getDataSchemaName()); } else { // encode byte[] key = new Keccak256().hash(bo.getEntity().getPrivateKey().getBytes(StandardCharsets.UTF_8)); SymmetricCrypto ase = new SymmetricCrypto(SymmetricAlgorithm.AES,key); String encodeContent = ase.encryptHex(schemaRequest.getContentSchema()); String encodeName = ase.encryptHex(schemaRequest.getDataSchemaName()); dataDetailReceipt = dataSchemaModule.createDataDetail( hash, HexUtil.decodeHex(product.getProductBid()), dataSchemaModule.getCreateDataSchemaOutput(receipt).getValue1(), String.valueOf(schemaRequest.getProductId()), encodeContent, encodeName); } BlockchainUtils.ensureTransactionSuccess(dataDetailReceipt, txDecoder);
说明:根据用户决定的数据可见性进行操作 若是对所有人可见,则直接将数据传入合约 若仅对自己可见,则采用AES对称加密算法,首先使用当前用户的私钥生成对应AES算法的key,然后加密数据后传入合约
说明:根据用户决定的数据可见性进行操作
测试1截图如下:
测试2截图如下:
Task7 添加数据上链的多样性
一、添加内容
添加枚举类
DataSchemaType
:用于描述数据目录类型更新
DataSchemaContract
合约对应的java类DataSchemaServiceImpl
类中添加代码片段:行数327-352二、测试结果
测试1截图如下:
测试2截图如下: