diff --git a/Changelog.md b/Changelog.md index ed577029a..d423925f5 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,4 +1,21 @@ +### v3.0.0(2022-08-24) + +**Add** +- 支持FISCO BCOS v3.0.0 +- 支持solidity v0.8.11 + +**Fix** +- 支持基于BFS的CNS + +**兼容性** +- 支持FISCO-BCOS v3.0.0 及以上版本 +- WeBASE-Node-Manager v3.0.0 +- WeBASE-Sign v3.0.0 + +详细了解,请阅读[**技术文档**](https://webasedoc.readthedocs.io/zh_CN/lab/)。 + + ### lab-rc2(2022-05-07) **Add** diff --git a/build.gradle b/build.gradle index 404d43fa1..9b88b3cd0 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ repositories { } -def spring_version="5.2.20.RELEASE" +def spring_version="5.2.22.RELEASE" List spring =[ "org.springframework:spring-core:$spring_version", "org.springframework:spring-beans:$spring_version", @@ -47,7 +47,9 @@ List spring_boot =[ "org.springframework.boot:spring-boot-autoconfigure:$spring_boot_version", "org.springframework.boot:spring-boot-configuration-processor:$spring_boot_version", "org.springframework.boot:spring-boot-starter-data-jpa:$spring_boot_version", - "org.springframework.boot:spring-boot-starter-amqp:$spring_boot_version" + "org.springframework.boot:spring-boot-starter-amqp:$spring_boot_version", + "org.springframework.boot:spring-boot-starter-validation:$spring_boot_version" + ] @@ -57,7 +59,7 @@ List swagger = [ ] -def log4j_version="2.17.1" +def log4j_version="2.18.0" List logger = [ "org.apache.logging.log4j:log4j-api:$log4j_version", "org.apache.logging.log4j:log4j-core:$log4j_version", @@ -72,24 +74,14 @@ List jaxb = [ "javax.activation:activation:1.1.1" ] -def jackson_version = "2.13.2" +def jackson_version = "2.13.3" List jackson = [ "com.fasterxml.jackson.core:jackson-annotations:$jackson_version", "com.fasterxml.jackson.core:jackson-core:$jackson_version", -// "com.fasterxml.jackson.core:jackson-databind:$jackson_version", - "com.fasterxml.jackson.core:jackson-databind:2.13.2.2", + "com.fasterxml.jackson.core:jackson-databind:$jackson_version", "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" ] -// cover old version -def tomcat_version = "8.5.56" -List tomcat = [ - "org.apache.tomcat.embed:tomcat-embed-core:$tomcat_version", - "org.apache.tomcat.embed:tomcat-embed-el:$tomcat_version", - "org.apache.tomcat.embed:tomcat-embed-websocket:$tomcat_version", - "org.apache.tomcat:tomcat-jdbc:$tomcat_version", - "org.apache.tomcat:tomcat-juli:$tomcat_version" -] List scaffold = [ 'com.webank.webase:solscaffold:1.0.2', @@ -98,28 +90,30 @@ List scaffold = [ ] dependencies { - compile spring,spring_boot,swagger,logger,jaxb,jackson,tomcat,scaffold - compile ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:3.0.0-rc2-bugfix-SNAPSHOT') - // cover - compile 'javax.servlet:javax.servlet-api:4.0.1' + compile spring,spring_boot,swagger,logger,jaxb,jackson,scaffold + compile ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:3.0.0') // support guomi/ecdsa same time, support solcJ-0.5.2 compile 'org.fisco-bcos:solcJ:0.4.25-rc1' - compile 'com.h2database:h2:1.4.200' + compile('org.fisco-bcos.code-generator:bcos-code-generator:1.0.0-SNAPSHOT') { + exclude group: "org.fisco-bcos.java-sdk" + exclude group: "org.slf4j" + } + compile 'com.h2database:h2:2.1.214' annotationProcessor 'org.projectlombok:lombok:1.18.6' compile 'org.projectlombok:lombok:1.18.6' - compile 'com.github.jsqlparser:jsqlparser:2.0' compile 'org.apache.commons:commons-lang3:3.8.1' + compile 'org.apache.commons:commons-configuration2:2.8.0' // cover low version compile 'org.slf4j:jcl-over-slf4j:1.7.30' - compile 'com.google.guava:guava:29.0-jre' + compile 'com.google.guava:guava:30.0-jre' compile 'org.yaml:snakeyaml:1.30' compile 'javax.validation:validation-api:2.0.1.Final' - testCompile('org.springframework.boot:spring-boot-starter-test') { + testCompile('org.springframework.boot:spring-boot-starter-test:$spring_boot_version') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } - testCompile 'junit:junit:4.12', + testCompile 'junit:junit:4.13.1', 'org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE', 'com.github.macdao:moscow:0.1.0', 'com.squareup.okhttp3:okhttp:3.1.2' @@ -194,12 +188,16 @@ def downloadJs() { String solc05gmPath = "src"+ File.separator + "main"+ File.separator + "resources"+ File.separator + "static"+ File.separator + "static"+ File.separator + "js"+ File.separator + "v0.5.2-gm.js"; String solc06Path = "src"+ File.separator + "main"+ File.separator + "resources"+ File.separator + "static"+ File.separator + "static"+ File.separator + "js"+ File.separator + "v0.6.10.js"; String solc06gmPath = "src"+ File.separator + "main"+ File.separator + "resources"+ File.separator + "static"+ File.separator + "static"+ File.separator + "js"+ File.separator + "v0.6.10-gm.js"; + String solc08Path = "src"+ File.separator + "main"+ File.separator + "resources"+ File.separator + "static"+ File.separator + "static"+ File.separator + "js"+ File.separator + "v0.8.11.js"; + String solc08gmPath = "src"+ File.separator + "main"+ File.separator + "resources"+ File.separator + "static"+ File.separator + "static"+ File.separator + "js"+ File.separator + "v0.8.11-gm.js"; File solc04 = new File(solc04Path); File solc04gm = new File(solc04gmPath); File solc05 = new File(solc05Path); File solc05gm = new File(solc05gmPath); File solc06 = new File(solc06Path); File solc06gm = new File(solc06gmPath); + File solc08 = new File(solc08Path); + File solc08gm = new File(solc08gmPath); if (!solc04.exists()) { exec { ExecSpec execSpec -> @@ -248,5 +246,21 @@ def downloadJs() { "-o", solc06gmPath } } + if (!solc08.exists()) { + exec { + ExecSpec execSpec -> + executable 'curl' + args '-#L', "https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/download/solidity/wasm/v0.8.11.js", + "-o", solc08Path + } + } + if (!solc08gm.exists()) { + exec { + ExecSpec execSpec -> + executable 'curl' + args '-#L', "https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/download/solidity/wasm/v0.8.11-gm.js", + "-o", solc08gmPath + } + } } diff --git a/get_solc_js.sh b/get_solc_js.sh index ec94b0b26..0cc771534 100644 --- a/get_solc_js.sh +++ b/get_solc_js.sh @@ -64,6 +64,12 @@ get_solc_js(){ if [[ ! -f "${STATIC_JS_DIR}/v0.6.10-gm.js" ]]; then curl -#L https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/download/solidity/wasm/v0.6.10-gm.js -o "${STATIC_JS_DIR}"/v0.6.10-gm.js fi + if [[ ! -f "${STATIC_JS_DIR}/v0.8.11.js" ]]; then + curl -#L https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/download/solidity/wasm/v0.8.11.js -o "${STATIC_JS_DIR}"/v0.8.11.js + fi + if [[ ! -f "${STATIC_JS_DIR}/v0.8.11-gm.js" ]]; then + curl -#L https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/download/solidity/wasm/v0.8.11-gm.js -o "${STATIC_JS_DIR}"/v0.8.11-gm.js + fi fi } get_solc_js diff --git a/release_note.txt b/release_note.txt index 4eef80bd6..1c5ae5820 100644 --- a/release_note.txt +++ b/release_note.txt @@ -1 +1 @@ -lab-rc2 \ No newline at end of file +v3.0.0 \ No newline at end of file diff --git a/src/main/java/com/webank/webase/front/base/code/ConstantCode.java b/src/main/java/com/webank/webase/front/base/code/ConstantCode.java index 68fc8fb4b..173d1cb8e 100644 --- a/src/main/java/com/webank/webase/front/base/code/ConstantCode.java +++ b/src/main/java/com/webank/webase/front/base/code/ConstantCode.java @@ -280,6 +280,7 @@ public class ConstantCode { public static final RetCode LIQUID_READ_ABI_BIN_FAILED = RetCode.mark(201640, "Read liquid contract's abi and bin file failed, please check 'liquid' directory in webase-front"); public static final RetCode BUILD_NEW_EVENT_SUBSCRIBE_FAILED = RetCode.mark(201665, "Build eventSubscribe instance of new group failed"); + public static final RetCode ENCODE_TX_JNI_ERROR = RetCode.mark(201666, "Encode transaction in jni failed"); /* permission */ public static final RetCode EXEC_ENV_IS_WASM = RetCode.mark(201670, "exec env is wasm, don't support"); @@ -287,6 +288,7 @@ public class ConstantCode { public static final RetCode MUST_BE_PROPOSER = RetCode.mark(201672, "the account must be the proposer of proposal."); public static final RetCode OPEN_TABLE_FAILED = RetCode.mark(201673,"Open table failed, please check the existence of the table"); public static final RetCode NOT_SET_METHOD_AUTH_TYPE = RetCode.mark(201674,"The contract method auth type not set, please set method auth type first."); + public static final RetCode CHAIN_AUTH_NOT_ENABLE = RetCode.mark(201675, "auth of the chain not enable"); /* bfs path */ public static final RetCode BFS_INVALID_PATH = RetCode.mark(201680, "the PATH is invalid."); diff --git a/src/main/java/com/webank/webase/front/base/config/CryptoConfig.java b/src/main/java/com/webank/webase/front/base/config/CryptoConfig.java index c8b218595..8b9f02b53 100644 --- a/src/main/java/com/webank/webase/front/base/config/CryptoConfig.java +++ b/src/main/java/com/webank/webase/front/base/config/CryptoConfig.java @@ -16,8 +16,8 @@ package com.webank.webase.front.base.config; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.model.CryptoType; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.model.CryptoType; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/webank/webase/front/base/config/Web3Config.java b/src/main/java/com/webank/webase/front/base/config/Web3Config.java index b1c0f43af..651a98124 100644 --- a/src/main/java/com/webank/webase/front/base/config/Web3Config.java +++ b/src/main/java/com/webank/webase/front/base/config/Web3Config.java @@ -13,22 +13,19 @@ */ package com.webank.webase.front.base.config; - -import com.webank.webase.front.configapi.ConfigService; import com.webank.webase.front.util.JsonUtils; import java.util.HashMap; import java.util.List; import java.util.Map; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.config.ConfigOption; -import org.fisco.bcos.sdk.config.exceptions.ConfigException; -import org.fisco.bcos.sdk.config.model.ConfigProperty; -import org.fisco.bcos.sdk.eventsub.EventSubscribe; import org.fisco.bcos.sdk.jni.common.JniException; -import org.springframework.beans.factory.annotation.Autowired; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.config.ConfigOption; +import org.fisco.bcos.sdk.v3.config.exceptions.ConfigException; +import org.fisco.bcos.sdk.v3.config.model.ConfigProperty; +import org.fisco.bcos.sdk.v3.eventsub.EventSubscribe; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -41,9 +38,6 @@ @Configuration @ConfigurationProperties(prefix = "sdk") public class Web3Config { -// @Autowired -// private ConfigService configService; -// private boolean loadFromDb; private String threadPoolSize; private String certPath; diff --git a/src/main/java/com/webank/webase/front/base/config/WebMvcConfig.java b/src/main/java/com/webank/webase/front/base/config/WebMvcConfig.java new file mode 100644 index 000000000..338d1f1b1 --- /dev/null +++ b/src/main/java/com/webank/webase/front/base/config/WebMvcConfig.java @@ -0,0 +1,25 @@ +package com.webank.webase.front.base.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * web 配置类 + */ +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + + /** + * 静态资源映射 + */ + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + + // 前端目录 + registry.addResourceHandler( + "/static/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/"); + } +} + diff --git a/src/main/java/com/webank/webase/front/base/exception/ExceptionsHandler.java b/src/main/java/com/webank/webase/front/base/exception/ExceptionsHandler.java index 89c5cf16e..c10faf362 100644 --- a/src/main/java/com/webank/webase/front/base/exception/ExceptionsHandler.java +++ b/src/main/java/com/webank/webase/front/base/exception/ExceptionsHandler.java @@ -23,7 +23,7 @@ import java.util.HashMap; import java.util.Map; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.TypeMismatchException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/com/webank/webase/front/configapi/ConfigService.java b/src/main/java/com/webank/webase/front/configapi/ConfigService.java index b77047b0f..5dc3a4c38 100644 --- a/src/main/java/com/webank/webase/front/configapi/ConfigService.java +++ b/src/main/java/com/webank/webase/front/configapi/ConfigService.java @@ -38,11 +38,11 @@ import java.util.Optional; import java.util.Stack; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.config.ConfigOption; -import org.fisco.bcos.sdk.config.model.CryptoMaterialConfig; -import org.fisco.bcos.sdk.config.model.NetworkConfig; -import org.fisco.bcos.sdk.config.model.ThreadPoolConfig; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.config.ConfigOption; +import org.fisco.bcos.sdk.v3.config.model.CryptoMaterialConfig; +import org.fisco.bcos.sdk.v3.config.model.NetworkConfig; +import org.fisco.bcos.sdk.v3.config.model.ThreadPoolConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/webank/webase/front/configapi/entity/ConfigInfo.java b/src/main/java/com/webank/webase/front/configapi/entity/ConfigInfo.java index 5c76bfdf1..f8c5723fb 100644 --- a/src/main/java/com/webank/webase/front/configapi/entity/ConfigInfo.java +++ b/src/main/java/com/webank/webase/front/configapi/entity/ConfigInfo.java @@ -33,7 +33,7 @@ @Data @Entity @Table(uniqueConstraints = { - @UniqueConstraint(name = "unique_config", columnNames = {"type","key"}) + @UniqueConstraint(name = "unique_config", columnNames = {"type","config_key"}) }) @NoArgsConstructor @AllArgsConstructor @@ -48,11 +48,12 @@ public class ConfigInfo { /** * example: key is "peers" */ + @Column(name = "config_key") private String key; /** * example: value is ["127.0.0.1:20200"] */ - @Column(columnDefinition = "text") + @Column(name = "config_value", columnDefinition = "text") private String value; private Integer version; diff --git a/src/main/java/com/webank/webase/front/contract/CommonContract.java b/src/main/java/com/webank/webase/front/contract/CommonContract.java index 23379a7cf..1ffc9bba7 100644 --- a/src/main/java/com/webank/webase/front/contract/CommonContract.java +++ b/src/main/java/com/webank/webase/front/contract/CommonContract.java @@ -16,13 +16,13 @@ package com.webank.webase.front.contract; import java.util.List; -import org.fisco.bcos.sdk.codec.datatypes.Function; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.contract.Contract; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; /** diff --git a/src/main/java/com/webank/webase/front/contract/ContractService.java b/src/main/java/com/webank/webase/front/contract/ContractService.java index 35449798b..258bd8c9a 100644 --- a/src/main/java/com/webank/webase/front/contract/ContractService.java +++ b/src/main/java/com/webank/webase/front/contract/ContractService.java @@ -51,7 +51,11 @@ import com.webank.webase.front.precntauth.precompiled.cns.CNSServiceInWebase; import com.webank.webase.front.precntauth.precompiled.sysconf.SysConfigServiceInWebase; import com.webank.webase.front.transaction.TransService; -import com.webank.webase.front.util.*; +import com.webank.webase.front.util.CleanPathUtil; +import com.webank.webase.front.util.CommonUtils; +import com.webank.webase.front.util.ContractAbiUtil; +import com.webank.webase.front.util.FrontUtils; +import com.webank.webase.front.util.JsonUtils; import com.webank.webase.front.web3api.Web3ApiService; import java.io.File; import java.io.FileInputStream; @@ -74,23 +78,22 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.codec.datatypes.Address; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.codegen.ContractGenerator; -import org.fisco.bcos.sdk.codegen.exceptions.CodeGenException; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsService; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.manager.AssembleTransactionProcessor; -import org.fisco.bcos.sdk.transaction.manager.TransactionProcessorFactory; -import org.fisco.bcos.sdk.transaction.model.dto.TransactionResponse; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.codegen.v3.exceptions.CodeGenException; +import org.fisco.bcos.codegen.v3.wrapper.ContractGenerator; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSService; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.manager.AssembleTransactionProcessor; +import org.fisco.bcos.sdk.v3.transaction.manager.TransactionProcessorFactory; +import org.fisco.bcos.sdk.v3.transaction.model.dto.TransactionResponse; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.fisco.solc.compiler.CompilationResult; import org.fisco.solc.compiler.SolidityCompiler; import org.springframework.beans.BeanUtils; @@ -253,7 +256,7 @@ public String deployWithSign(ReqDeploy req) { String bytecodeBin = req.getBytecodeBin(); List params = req.getFuncParam() == null ? new ArrayList<>() : req.getFuncParam(); boolean isWasm = req.getIsWasm() != null && req.getIsWasm(); - String liquidAddress = null; + String liquidAddress = ""; if (isWasm) { liquidAddress = req.getContractAddress(); if (StringUtils.isBlank(liquidAddress)) { @@ -270,11 +273,11 @@ public String deployWithSign(ReqDeploy req) { throw new FrontException(ConstantCode.GROUP_SOL_WASM_NOT_MATCH); } - ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), isWasm); + ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), isWasm); byte[] encodedConstructor; try { encodedConstructor = abiCodec.encodeConstructor(abiStr, bytecodeBin, params); - } catch (ABICodecException e) { + } catch (ContractCodecException e) { log.error("deployWithSign encode fail:[]", e); throw new FrontException(ConstantCode.CONTRACT_TYPE_ENCODED_ERROR); } @@ -337,17 +340,17 @@ public String deployLocally(ReqDeploy req) { try { contractAddress = deployContract(client, abiStr, bytecodeBin, req.getContractAddress(), paramStrList, cryptoKeyPair); - } catch (ABICodecException e) { + } catch (ContractCodecException e) { log.error("deployLocally encode fail:[]", e); throw new FrontException(ConstantCode.CONTRACT_TYPE_ENCODED_ERROR); } } else { - ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), + ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), req.getIsWasm()); byte[] encodedConstructor; try { encodedConstructor = abiCodec.encodeConstructor(abiStr, bytecodeBin, params); - } catch (ABICodecException e) { + } catch (ContractCodecException e) { log.error("deployLocally encode fail:[]", e); throw new FrontException(ConstantCode.CONTRACT_TYPE_ENCODED_ERROR); } @@ -376,10 +379,10 @@ public void registerCns(ReqRegisterCns req) throws Exception { private void registerCnsByFrontDirectly(ReqRegisterCns req, String abiInfo) throws Exception { - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(req.getGroupId()), + BFSService cnsService = new BFSService(web3ApiService.getWeb3j(req.getGroupId()), keyStoreService.getCredentials(req.getUserAddress(), req.getGroupId())); - RetCode retCode = cnsService.registerCNS(req.getCnsName(), req.getVersion(), + RetCode retCode = cnsService.link(req.getCnsName(), req.getVersion(), req.getContractAddress(), abiInfo); log.info("registerCNS and retCode is: {}, errorMsg is: {} " + retCode.getCode(), retCode.getMessage()); @@ -456,10 +459,10 @@ private String deployContract(Client client, byte[] encodedConstructor, * @param params * @param cryptoKeyPair * @return - * @throws ABICodecException + * @throws ContractCodecException */ private String deployContract(Client client, String abi, String binStr, String path, - List params, CryptoKeyPair cryptoKeyPair) throws ABICodecException { + List params, CryptoKeyPair cryptoKeyPair) throws ContractCodecException { AssembleTransactionProcessor assembleTxProcessor = null; try { assembleTxProcessor = TransactionProcessorFactory @@ -970,6 +973,7 @@ private boolean checkDeployPermission(String groupId, String userAddress) return true; } Boolean res = everyoneService.checkDeployAuth(groupId, userAddress); + // todo if res, throw log.info("check deploy permission result is {}", res.toString()); return res; } diff --git a/src/main/java/com/webank/webase/front/contract/LiquidCompileService.java b/src/main/java/com/webank/webase/front/contract/LiquidCompileService.java index 885f097b2..2b3caa044 100644 --- a/src/main/java/com/webank/webase/front/contract/LiquidCompileService.java +++ b/src/main/java/com/webank/webase/front/contract/LiquidCompileService.java @@ -21,16 +21,16 @@ import com.webank.webase.front.util.CommonUtils; import com.webank.webase.front.util.cmd.ExecuteResult; import com.webank.webase.front.util.cmd.JavaCommandExecutor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.FileUtils; -import org.fisco.bcos.sdk.utils.Hex; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Paths; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; /** * use command line to compile liquid contract and return abi & bin diff --git a/src/main/java/com/webank/webase/front/contract/entity/ReqDeploy.java b/src/main/java/com/webank/webase/front/contract/entity/ReqDeploy.java index 8e2cf5985..a00b63ce7 100644 --- a/src/main/java/com/webank/webase/front/contract/entity/ReqDeploy.java +++ b/src/main/java/com/webank/webase/front/contract/entity/ReqDeploy.java @@ -18,10 +18,9 @@ import com.webank.webase.front.base.code.ConstantCode; import java.util.ArrayList; import java.util.List; -import lombok.Data; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; +import lombok.Data; /** * deploy interface parameter. diff --git a/src/main/java/com/webank/webase/front/contract/entity/ReqRegisterCns.java b/src/main/java/com/webank/webase/front/contract/entity/ReqRegisterCns.java index 8375aa0a0..c13dfa2de 100644 --- a/src/main/java/com/webank/webase/front/contract/entity/ReqRegisterCns.java +++ b/src/main/java/com/webank/webase/front/contract/entity/ReqRegisterCns.java @@ -17,11 +17,10 @@ import com.webank.webase.front.base.code.ConstantCode; import java.util.List; -import javax.validation.constraints.NotNull; -import lombok.Data; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import lombok.Data; /** * ReqRegisterCns. diff --git a/src/main/java/com/webank/webase/front/contract/entity/ReqSendAbi.java b/src/main/java/com/webank/webase/front/contract/entity/ReqSendAbi.java index 04a70c437..cb95d78b7 100644 --- a/src/main/java/com/webank/webase/front/contract/entity/ReqSendAbi.java +++ b/src/main/java/com/webank/webase/front/contract/entity/ReqSendAbi.java @@ -15,9 +15,9 @@ import com.webank.webase.front.base.code.ConstantCode; import java.util.List; -import lombok.Data; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; import javax.validation.constraints.NotEmpty; +import lombok.Data; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; /** @@ -27,8 +27,6 @@ public class ReqSendAbi { private String groupId; private String contractName; - // @NotBlank(message = ConstantCode.PARAM_FAIL_VERSION_IS_EMPTY) - // private String version; private String address; @NotEmpty(message = ConstantCode.PARAM_FAIL_ABIINFO_IS_EMPTY) private List abiInfo; diff --git a/src/main/java/com/webank/webase/front/event/EventService.java b/src/main/java/com/webank/webase/front/event/EventService.java index de1e0e30c..aec5a23da 100644 --- a/src/main/java/com/webank/webase/front/event/EventService.java +++ b/src/main/java/com/webank/webase/front/event/EventService.java @@ -16,6 +16,11 @@ package com.webank.webase.front.event; +import static com.webank.webase.front.util.RabbitMQUtils.BLOCK_ROUTING_KEY_MAP; +import static com.webank.webase.front.util.RabbitMQUtils.CONTRACT_EVENT_CALLBACK_MAP; +import static com.webank.webase.front.util.RabbitMQUtils.ROUTING_KEY_BLOCK; +import static com.webank.webase.front.util.RabbitMQUtils.ROUTING_KEY_EVENT; + import com.webank.webase.front.abi.AbiService; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.config.Web3Config; @@ -28,31 +33,34 @@ import com.webank.webase.front.event.callback.ContractEventCallback; import com.webank.webase.front.event.callback.NewBlockEventCallback; import com.webank.webase.front.event.callback.SyncEventLogCallback; -import com.webank.webase.front.event.entity.*; +import com.webank.webase.front.event.entity.ContractEventInfo; +import com.webank.webase.front.event.entity.DecodedEventLog; +import com.webank.webase.front.event.entity.EventTopicParam; +import com.webank.webase.front.event.entity.NewBlockEventInfo; +import com.webank.webase.front.event.entity.PublisherHelper; +import com.webank.webase.front.event.entity.RspContractInfo; import com.webank.webase.front.util.FrontUtils; import com.webank.webase.front.util.RabbitMQUtils; import com.webank.webase.front.web3api.Web3ApiService; -import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.config.exceptions.ConfigException; -import org.fisco.bcos.sdk.eventsub.EventSubParams; -import org.fisco.bcos.sdk.eventsub.EventSubscribe; -import org.fisco.bcos.sdk.jni.common.JniException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - import java.io.IOException; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; - -import static com.webank.webase.front.util.RabbitMQUtils.*; +import lombok.extern.slf4j.Slf4j; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.eventsub.EventSubParams; +import org.fisco.bcos.sdk.v3.eventsub.EventSubscribe; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * event notify in message queue service @@ -165,7 +173,7 @@ public void handleRegContract(String appId, String groupId, String exchangeName, EventSubParams params = RabbitMQUtils.initSingleEventLogUserParams(fromBlock, toBlock, contractAddress, topicList, web3ApiService.getWeb3j(groupId).getCryptoSuite()); ContractEventCallback callback = new ContractEventCallback(mqPublisher, exchangeName, routingKey, groupId, appId, - new ABICodec(web3ApiService.getCryptoSuite(groupId), false), abi, topicList); + new ContractCodec(web3ApiService.getCryptoSuite(groupId), false), abi, topicList); // register registerId = eventSubscribe.subscribeEvent(params, callback); // save to db first @@ -399,7 +407,7 @@ public List getContractEventLog(String groupId, String contract log.info("getContractEventLog eventParam:{}", eventParam); // final CompletableFuture> callbackFuture = new CompletableFuture<>(); final CompletableFuture> callbackFuture = new CompletableFuture<>(); - ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), false); + ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), false); SyncEventLogCallback callback = new SyncEventLogCallback(abiCodec, abi, eventTopicParam.getEventName().split("\\(")[0], callbackFuture); EventSubscribe eventSubscribe = this.getEventSubscribe(String.valueOf(groupId)); diff --git a/src/main/java/com/webank/webase/front/event/callback/ContractEventCallback.java b/src/main/java/com/webank/webase/front/event/callback/ContractEventCallback.java index 4a20d503e..4cd089abe 100644 --- a/src/main/java/com/webank/webase/front/event/callback/ContractEventCallback.java +++ b/src/main/java/com/webank/webase/front/event/callback/ContractEventCallback.java @@ -22,10 +22,10 @@ import java.util.ArrayList; import java.util.List; import lombok.Data; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.eventsub.EventSubCallback; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback; +import org.fisco.bcos.sdk.v3.model.EventLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,13 +46,13 @@ public class ContractEventCallback implements EventSubCallback { private String routingKey; private String groupId; private String appId; - private ABICodec abiCodec; + private ContractCodec abiCodec; private String contractAbi; private List eventNameList; public ContractEventCallback(MQPublisher mqPublisher, String exchangeName, String routingKey, String groupId, String appId, - ABICodec abiCodec, String contractAbi, List eventNameList) { + ContractCodec abiCodec, String contractAbi, List eventNameList) { this.MQPublisher = mqPublisher; this.exchangeName = exchangeName; this.routingKey = routingKey; @@ -87,7 +87,7 @@ public void onReceiveLog(String eventSubId, int status, List logs) { // try { // List list = abiCodec.decodeEvent(contractAbi, eventName, log); // logger.debug("decode event of :{}, log content:{} ", eventName, list); -// } catch (ABICodecException e) { +// } catch (ContractCodecException e) { // logger.error("decode event log error:{} ", e.getMessage()); // } // } diff --git a/src/main/java/com/webank/webase/front/event/callback/SyncEventLogCallback.java b/src/main/java/com/webank/webase/front/event/callback/SyncEventLogCallback.java index f1580ed06..4286993bd 100644 --- a/src/main/java/com/webank/webase/front/event/callback/SyncEventLogCallback.java +++ b/src/main/java/com/webank/webase/front/event/callback/SyncEventLogCallback.java @@ -18,10 +18,10 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.eventsub.EventSubCallback; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback; +import org.fisco.bcos.sdk.v3.model.EventLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +33,7 @@ public class SyncEventLogCallback implements EventSubCallback { private static final Logger logger = LoggerFactory.getLogger(SyncEventLogCallback.class); - private ABICodec abiCodec; + private ContractCodec abiCodec; private String contractAbi; private String eventName; @@ -42,7 +42,7 @@ public class SyncEventLogCallback implements EventSubCallback { // private List finalList; private List finalList; - public SyncEventLogCallback(ABICodec abiCodec, String contractAbi, String eventName, + public SyncEventLogCallback(ContractCodec abiCodec, String contractAbi, String eventName, final CompletableFuture> future) { this.abiCodec = abiCodec; this.contractAbi = contractAbi; @@ -106,7 +106,7 @@ private List decodeEvent(List logs) { DecodedEventLog decodedEventLog = new DecodedEventLog(log, list); logger.debug("decode event of :{}, log content:{} ", eventName, list); decodedLogList.add(decodedEventLog); - } catch (ABICodecException e) { + } catch (ContractCodecException e) { logger.error("decode event log error:{} ", e.getMessage()); } } diff --git a/src/main/java/com/webank/webase/front/event/entity/DecodedEventLog.java b/src/main/java/com/webank/webase/front/event/entity/DecodedEventLog.java index dff2444b7..10a8a7129 100644 --- a/src/main/java/com/webank/webase/front/event/entity/DecodedEventLog.java +++ b/src/main/java/com/webank/webase/front/event/entity/DecodedEventLog.java @@ -17,7 +17,7 @@ import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.model.EventLog; @Data @AllArgsConstructor diff --git a/src/main/java/com/webank/webase/front/event/entity/RspEventLog.java b/src/main/java/com/webank/webase/front/event/entity/RspEventLog.java index 9601ef63d..e854baf9a 100644 --- a/src/main/java/com/webank/webase/front/event/entity/RspEventLog.java +++ b/src/main/java/com/webank/webase/front/event/entity/RspEventLog.java @@ -17,7 +17,7 @@ import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.model.EventLog; @Data @AllArgsConstructor diff --git a/src/main/java/com/webank/webase/front/event/entity/message/EventLogPushMessage.java b/src/main/java/com/webank/webase/front/event/entity/message/EventLogPushMessage.java index d871f7a8d..21be706e1 100644 --- a/src/main/java/com/webank/webase/front/event/entity/message/EventLogPushMessage.java +++ b/src/main/java/com/webank/webase/front/event/entity/message/EventLogPushMessage.java @@ -20,7 +20,7 @@ import java.util.List; import lombok.Data; import lombok.NoArgsConstructor; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.model.EventLog; /** * @author marsli diff --git a/src/main/java/com/webank/webase/front/keystore/KeyStoreService.java b/src/main/java/com/webank/webase/front/keystore/KeyStoreService.java index 27fbf6778..8055eaed4 100644 --- a/src/main/java/com/webank/webase/front/keystore/KeyStoreService.java +++ b/src/main/java/com/webank/webase/front/keystore/KeyStoreService.java @@ -48,16 +48,17 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.exceptions.LoadKeyStoreException; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.crypto.keystore.KeyTool; -import org.fisco.bcos.sdk.crypto.keystore.P12KeyStore; -import org.fisco.bcos.sdk.crypto.keystore.PEMKeyStore; -import org.fisco.bcos.sdk.crypto.signature.ECDSASignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SM2SignatureResult; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.exceptions.LoadKeyStoreException; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.keystore.KeyTool; +import org.fisco.bcos.sdk.v3.crypto.keystore.P12KeyStore; +import org.fisco.bcos.sdk.v3.crypto.keystore.PEMKeyStore; +import org.fisco.bcos.sdk.v3.crypto.signature.ECDSASignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SM2SignatureResult; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; @@ -301,16 +302,16 @@ public RspMessageHashSignature getMessageHashSignData(MessageHashInfo params) th SM2SignatureResult signData = (SM2SignatureResult) CommonUtils.stringToSignatureData(signDataStr, web3ApiService.getCryptoSuite(groupId).cryptoTypeConfig); // SM2SignatureResult signData = CommonUtils.stringToSM2SignatureData(signDataStr); - rspMessageHashSignature.setR(Numeric.toHexString(signData.getR())); - rspMessageHashSignature.setS(Numeric.toHexString(signData.getS())); + rspMessageHashSignature.setR(Hex.toHexString(signData.getR())); + rspMessageHashSignature.setS(Hex.toHexString(signData.getS())); rspMessageHashSignature.setV(new Byte("0")); - rspMessageHashSignature.setP(Numeric.toHexString(signData.getPub())); + rspMessageHashSignature.setP(Hex.toHexString(signData.getPub())); } else { ECDSASignatureResult signData = (ECDSASignatureResult) CommonUtils.stringToSignatureData(signDataStr, web3ApiService.getCryptoSuite(groupId).cryptoTypeConfig); // ECDSASignatureResult signData = CommonUtils.stringToECDSASignatureData(signDataStr); - rspMessageHashSignature.setR(Numeric.toHexString(signData.getR())); - rspMessageHashSignature.setS(Numeric.toHexString(signData.getS())); + rspMessageHashSignature.setR(Hex.toHexString(signData.getR())); + rspMessageHashSignature.setS(Hex.toHexString(signData.getS())); rspMessageHashSignature.setV(signData.getV()); rspMessageHashSignature.setP(null); } diff --git a/src/main/java/com/webank/webase/front/method/MethodService.java b/src/main/java/com/webank/webase/front/method/MethodService.java index e6310f544..13c4505ff 100644 --- a/src/main/java/com/webank/webase/front/method/MethodService.java +++ b/src/main/java/com/webank/webase/front/method/MethodService.java @@ -28,10 +28,11 @@ import java.util.List; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.utils.Numeric; -import org.fisco.bcos.sdk.utils.ObjectMapperFactory; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; +import org.fisco.bcos.sdk.v3.utils.ObjectMapperFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -113,10 +114,10 @@ public static String buildMethodId(ABIDefinition abiDefinition, CryptoSuite cryp // 2019/11/27 support guomi byte[] hash = cryptoSuite.hash(inputs); if ("function".equals(abiDefinition.getType())) { - return Numeric.toHexString(hash).substring(0, 10); + return Hex.toHexString(hash).substring(0, 10); } // event save whole topic hash - return Numeric.toHexString(hash); + return Hex.toHexString(hash); } /** * get methodId bytes from ABIDefinition diff --git a/src/main/java/com/webank/webase/front/monitor/MonitorService.java b/src/main/java/com/webank/webase/front/monitor/MonitorService.java index 943606e91..0a062c109 100644 --- a/src/main/java/com/webank/webase/front/monitor/MonitorService.java +++ b/src/main/java/com/webank/webase/front/monitor/MonitorService.java @@ -30,10 +30,10 @@ import java.util.concurrent.ExecutionException; import javax.persistence.criteria.Predicate; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.client.protocol.response.BlockNumber; -import org.fisco.bcos.sdk.client.protocol.response.PbftView; -import org.fisco.bcos.sdk.client.protocol.response.PendingTxSize; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.client.protocol.response.BlockNumber; +import org.fisco.bcos.sdk.v3.client.protocol.response.PbftView; +import org.fisco.bcos.sdk.v3.client.protocol.response.PendingTxSize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/src/main/java/com/webank/webase/front/monitor/entity/Monitor.java b/src/main/java/com/webank/webase/front/monitor/entity/Monitor.java index 9f72426cb..e270e9b50 100644 --- a/src/main/java/com/webank/webase/front/monitor/entity/Monitor.java +++ b/src/main/java/com/webank/webase/front/monitor/entity/Monitor.java @@ -27,7 +27,7 @@ */ @Data @Entity -@Table(indexes = {@Index(columnList = "groupId", unique = false)}) +@Table(indexes = {@Index(columnList = "groupId", name = "idx_group", unique = true)}) public class Monitor { @Id @GeneratedValue(strategy = GenerationType.AUTO) diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java index f90d867a8..1c059ac6f 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java @@ -15,13 +15,14 @@ import com.webank.webase.front.precntauth.authmanager.admin.entity.ReqAclAuthTypeInfo; import com.webank.webase.front.precntauth.authmanager.admin.entity.ReqAclUsrInfo; +import com.webank.webase.front.precntauth.authmanager.admin.entity.ReqContractStatus; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import java.math.BigInteger; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -75,4 +76,21 @@ public Object setMethodAuth(@Valid @RequestBody ReqAclUsrInfo reqAclUsrInfo) } + /** + * 冻结、解冻合约 + * openMethodAuth contractAdd(0xCcEeF68C9b4811b32c75df284a1396C7C5509561) set(string) accountAdd(0x7fb008862ff69353a02ddabbc6cb7dc31683d0f6) + */ + @ApiOperation(value = "set contract status") + @ApiImplicitParam(name = "reqContractStatus", value = "contract status info", required = true, dataType = "ReqContractStatus") + @PostMapping("contract/status/set") + public String setContractStatus(@Valid @RequestBody ReqContractStatus reqContractStatus) { + String groupId = reqContractStatus.getGroupId(); + String contractAddr = reqContractStatus.getContractAddr(); + String signUserId = reqContractStatus.getSignUserId(); + Boolean isFreeze = reqContractStatus.getIsFreeze(); + String res = adminService.setContractStatus(groupId, signUserId, contractAddr, isFreeze); + return res; + } + + } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java index 14d68f1ed..b29dc43ef 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java @@ -13,14 +13,18 @@ */ package com.webank.webase.front.precntauth.authmanager.admin; -import static org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled.FUNC_CLOSEMETHODAUTH; -import static org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled.FUNC_OPENMETHODAUTH; -import static org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled.FUNC_SETMETHODAUTHTYPE; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_CLOSEMETHODAUTH; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_OPENMETHODAUTH; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_SETCONTRACTSTATUS; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_SETMETHODAUTHTYPE; +import static org.fisco.bcos.sdk.v3.contract.precompiled.sysconfig.SystemConfigPrecompiled.FUNC_SETVALUEBYKEY; + import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; +import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.util.CommonUtils; import com.webank.webase.front.web3api.Web3ApiService; @@ -29,11 +33,11 @@ import java.util.Arrays; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -55,8 +59,7 @@ public class AdminService { * set contract acl: white_list(type=1) or black_list(type=2) */ public Object setMethodAuthType(String groupId, String signUserId, String contractAddr, - byte[] func, BigInteger authType) - throws ContractException { + byte[] func, BigInteger authType) { return this.setMethodAuthTypeHandle(groupId, signUserId, contractAddr, func, authType); } @@ -76,7 +79,7 @@ public Object setMethodAuthTypeHandle(String groupId, String signUserId, String TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_SETMETHODAUTHTYPE, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } @@ -89,7 +92,7 @@ public Object setMethodAuth(String groupId, String signUserId, String contractAd } public Object setMethodAuthHandle(String groupId, String signUserId, String contractAddr, - byte[] func, String accountAddress, Boolean bool) throws ContractException { + byte[] func, String accountAddress, Boolean bool) { TransactionReceipt receipt; List funcParams = new ArrayList<>(); funcParams.add(contractAddr); @@ -111,10 +114,34 @@ public Object setMethodAuthHandle(String groupId, String signUserId, String cont (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CLOSEMETHODAUTH, funcParams); } - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); + } + + + public String setContractStatus(String groupId, String signUserId, + String contractAddress, boolean isFreeze) { + + List funcParams = new ArrayList<>(); + funcParams.add(contractAddress); + funcParams.add(isFreeze); + // get address and abi of precompiled contract + String precompiledAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CONTRACT_AUTH); + if (!web3ApiService.getWeb3j(groupId).isAuthCheck()) { + throw new FrontException(ConstantCode.CHAIN_AUTH_NOT_ENABLE); + } + if (web3ApiService.getWeb3j(groupId).isWASM()) { + throw new FrontException(ConstantCode.EXEC_ENV_IS_WASM); + } + String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CONTRACT_AUTH); + // execute set method + TransactionReceipt receipt = + (TransactionReceipt) transService.transHandleWithSign(groupId, + signUserId, precompiledAddress, abiStr, FUNC_SETCONTRACTSTATUS, funcParams); + return PrecompiledUtils.handleTransactionReceipt(receipt, false); } - public String handleRetcodeAndReceipt(TransactionReceipt receipt) { + + public String handleRetcodeAndReceipt(TransactionReceipt receipt, boolean isWasm) { if (receipt.getStatus() == 16) { RetCode sdkRetCode = new RetCode(); if (receipt.getMessage().equals("Proposal not exist")) { @@ -139,24 +166,7 @@ public String handleRetcodeAndReceipt(TransactionReceipt receipt) { sdkRetCode.getMessage()).toString(); } } - return this.handleTransactionReceipt(receipt); - } - - private String handleTransactionReceipt(TransactionReceipt receipt) { - log.debug("handle tx receipt of precompiled"); - try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); - log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); - if (sdkRetCode.getCode() >= 0) { - return new BaseResponse(ConstantCode.RET_SUCCESS, - sdkRetCode.getMessage()).toString(); - } else { - throw new FrontException(sdkRetCode.getCode(), sdkRetCode.getMessage()); - } - } catch (ContractException e) { - log.error("handleTransactionReceipt e:[]", e); - throw new FrontException(e.getErrorCode(), e.getMessage()); - } + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/entity/ReqContractStatus.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/entity/ReqContractStatus.java new file mode 100644 index 000000000..1edd66a09 --- /dev/null +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/entity/ReqContractStatus.java @@ -0,0 +1,25 @@ +/** + * Copyright 2014-2021 the original author or authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package com.webank.webase.front.precntauth.authmanager.admin.entity; + +import lombok.Data; + +@Data +public class ReqContractStatus { + private String groupId; + private String signUserId; + private String contractAddr; + private Boolean isFreeze; +} diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java index 7a7e4fc19..0af0c9e1a 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -29,7 +29,7 @@ public Boolean queryExecEnvIsWasm(String groupId) { @ApiOperation(value = "query if node support wasm") @ApiImplicitParam(name = "groupId", value = "groupId info", required = true) @GetMapping("queryChainHasAuth") - public Boolean queryChainHasAuth(String groupId) throws ContractException { + public Boolean queryChainHasAuth(String groupId) { return authMgrService.chainHasAuth(groupId); } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseService.java index 5df3f6ec9..625c4eec9 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseService.java @@ -2,7 +2,7 @@ import com.webank.webase.front.web3api.Web3ApiService; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.client.Client; +import org.fisco.bcos.sdk.v3.client.Client; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeController.java index a4f38b24c..86a193490 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeController.java @@ -13,9 +13,9 @@ import java.io.IOException; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; -import org.fisco.bcos.sdk.transaction.model.exception.TransactionException; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.TransactionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -37,7 +37,7 @@ public class CommitteeController { , dataType = "ReqUpdateGovernorInfo") @PostMapping("governor") public Object updateGovernor(@Valid @RequestBody ReqUpdateGovernorInfo reqUpdateGovernorInfo) - throws ContractException, ABICodecException, TransactionException, IOException { + throws ContractException, ContractCodecException, TransactionException, IOException { return committeeService.updateGovernor(reqUpdateGovernorInfo.getGroupId(), reqUpdateGovernorInfo.getSignUserId(), reqUpdateGovernorInfo.getAccountAddress(), reqUpdateGovernorInfo.getWeight()); @@ -48,7 +48,7 @@ public Object updateGovernor(@Valid @RequestBody ReqUpdateGovernorInfo reqUpdate dataType = "ReqSetRateInfo") @PostMapping("rate") public Object setRate(@Valid @RequestBody ReqSetRateInfo reqSetRateInfo) - throws ContractException, ABICodecException, TransactionException, IOException { + throws ContractException, ContractCodecException, TransactionException, IOException { return committeeService.setRate(reqSetRateInfo.getGroupId(), reqSetRateInfo.getSignUserId(), reqSetRateInfo.getParticipatesRate(), reqSetRateInfo.getWinRate()); @@ -78,7 +78,7 @@ public Object modifyDeployAuth(@Valid @RequestBody ReqUsrDeployInfo reqUsrDeploy dataType = "ReqResetAdminInfo") @PostMapping("contract/admin") public Object resetAdmin(@Valid @RequestBody ReqResetAdminInfo reqResetAdminInfo) - throws ABICodecException, TransactionException, ContractException, IOException { + throws ContractCodecException, TransactionException, ContractException, IOException { return committeeService.resetAdmin(reqResetAdminInfo.getGroupId(), reqResetAdminInfo.getSignUserId(), reqResetAdminInfo.getNewAdmin(), reqResetAdminInfo.getContractAddr()); @@ -89,7 +89,7 @@ public Object resetAdmin(@Valid @RequestBody ReqResetAdminInfo reqResetAdminInfo dataType = "ReqRevokeProposalInfo") @PostMapping("proposal/revoke") public Object revokeProposal(@Valid @RequestBody ReqRevokeProposalInfo reqRevokeProposalInfo) - throws ABICodecException, TransactionException, ContractException, IOException { + throws ContractCodecException, TransactionException, ContractException, IOException { return committeeService.revokeProposal(reqRevokeProposalInfo.getGroupId(), reqRevokeProposalInfo.getSignUserId(), reqRevokeProposalInfo.getProposalId()); } @@ -99,7 +99,7 @@ public Object revokeProposal(@Valid @RequestBody ReqRevokeProposalInfo reqRevoke dataType = "ReqVoteProposalInfo") @PostMapping("proposal/vote") public Object voteProposal(@Valid @RequestBody ReqVoteProposalInfo reqVoteProposalInfo) - throws ABICodecException, TransactionException, ContractException, IOException { + throws ContractCodecException, TransactionException, ContractException, IOException { return committeeService.voteProposal(reqVoteProposalInfo.getGroupId(), reqVoteProposalInfo.getSignUserId(), reqVoteProposalInfo.getProposalId(), reqVoteProposalInfo.getAgree()); diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeService.java index 8535a0b5b..fc4116078 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeService.java @@ -13,32 +13,33 @@ */ package com.webank.webase.front.precntauth.authmanager.committee; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATEMODIFYDEPLOYAUTHPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATERESETADMINPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATESETDEPLOYAUTHTYPEPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATESETRATEPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATEUPDATEGOVERNORPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_REVOKEPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_VOTEPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATEMODIFYDEPLOYAUTHPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATERESETADMINPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATESETDEPLOYAUTHTYPEPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATESETRATEPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATEUPDATEGOVERNORPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_REVOKEPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_VOTEPROPOSAL; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; +import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; import com.webank.webase.front.transaction.TransService; import java.io.IOException; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; -import org.fisco.bcos.sdk.transaction.model.exception.TransactionException; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.TransactionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -74,7 +75,7 @@ public Object updateGovernorHandle(String groupId, String signUserId, String acc TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATEUPDATEGOVERNORPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** @@ -97,7 +98,7 @@ public Object setRateHandle(String groupId, String signUserId, BigInteger partic TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATESETRATEPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** @@ -119,7 +120,7 @@ public String setDeployAuthTypeHandle(String groupId, String signUserId, (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATESETDEPLOYAUTHTYPEPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** @@ -143,14 +144,14 @@ public Object modifyDeployAuthHandle(String groupId, String signUserId, String u (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATEMODIFYDEPLOYAUTHPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** * 重置某个合约的管理员账号提案 */ public Object resetAdmin(String groupId, String signUserId, String newAdmin, String contractAddr) - throws ContractException, ABICodecException, TransactionException, IOException { + throws ContractException, ContractCodecException, TransactionException, IOException { return this.resetAdminHandle(groupId, signUserId, newAdmin, contractAddr); } @@ -167,14 +168,14 @@ public Object resetAdminHandle(String groupId, String signUserId, String newAdmi (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATERESETADMINPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** * 撤销提案的发起,该操作只有发起提案的治理委员才能操作 */ public Object revokeProposal(String groupId, String signUserId, BigInteger proposalId) - throws ContractException, ABICodecException, TransactionException, IOException { + throws ContractException, ContractCodecException, TransactionException, IOException { return this.revokeProposalHandle(groupId, signUserId, proposalId); } @@ -188,7 +189,7 @@ public Object revokeProposalHandle(String groupId, String signUserId, BigInteger (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_REVOKEPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** @@ -212,10 +213,10 @@ public String voteProposalHandle(String groupId, String signUserId, BigInteger p (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_VOTEPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } - public String handleRetcodeAndReceipt(TransactionReceipt receipt) { + public String handleRetcodeAndReceipt(TransactionReceipt receipt, boolean isWasm) { if (receipt.getStatus() == 16) { RetCode sdkRetCode = new RetCode(); if (receipt.getMessage().equals("Proposal not exist")) { @@ -252,24 +253,7 @@ public String handleRetcodeAndReceipt(TransactionReceipt receipt) { } } - return this.handleTransactionReceipt(receipt); - } - - private String handleTransactionReceipt(TransactionReceipt receipt) { - log.debug("handle tx receipt of precompiled"); - try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); - log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); - if (sdkRetCode.getCode() >= 0) { - return new BaseResponse(ConstantCode.RET_SUCCESS, - sdkRetCode.getMessage()).toString(); - } else { - throw new FrontException(sdkRetCode.getCode(), sdkRetCode.getMessage()); - } - } catch (ContractException e) { - log.error("handleTransactionReceipt e:[]", e); - throw new FrontException(e.getErrorCode(), e.getMessage()); - } + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java index f3b7f95f5..eeefc4342 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java @@ -2,6 +2,7 @@ import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqCheckMethodAuthInfo; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqContractAdminInfo; +import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqContractStatusList; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqProposalInfo; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqProposalListInfo; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqUsrDeployAuthInfo; @@ -10,9 +11,10 @@ import io.swagger.annotations.ApiOperation; import java.math.BigInteger; import java.util.List; +import java.util.Map; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -116,4 +118,32 @@ public Boolean checkMethodAuth(@Valid @RequestBody ReqCheckMethodAuthInfo reqChe reqCheckMethodAuthInfo.getUserAddress()); } + + /** + * 查询某用户地址对合约函数的访问是否有权限 + */ + @ApiOperation(value = "query the contract address whether available") + @ApiImplicitParam(name = "reqContractAdminInfo", value = "contractAdmin info", required = true, + dataType = "ReqContractAdminInfo") + @PostMapping("contract/status") + public Boolean checkContractAvailable(@Valid @RequestBody ReqContractAdminInfo reqContractAdminInfo) + throws ContractException { + return everyoneService.isContractAvailable(reqContractAdminInfo.getGroupId(), + reqContractAdminInfo.getContractAddr()); + } + + /** + * 查询某用户地址对合约函数的访问是否有权限 + */ + @ApiOperation(value = "query list of the contract address whether available") + @ApiImplicitParam(name = "reqContractStatusList", value = "contract status info", required = true, + dataType = "ReqContractStatusList") + @PostMapping("contract/status/list") + public Map checkContractListAvailable(@Valid @RequestBody ReqContractStatusList reqContractStatusList) + throws ContractException { + return everyoneService.listContractStatus(reqContractStatusList.getGroupId(), + reqContractStatusList.getContractAddressList()); + } + + } \ No newline at end of file diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java index 4dcfacb0e..b0101155c 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java @@ -13,20 +13,24 @@ */ package com.webank.webase.front.precntauth.authmanager.everyone; +import com.webank.webase.front.base.code.ConstantCode; +import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.precntauth.authmanager.everyone.entity.NewProposalInfo; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqProposalListInfo; import com.webank.webase.front.precntauth.authmanager.util.AuthManagerService; import com.webank.webase.front.web3api.Web3ApiService; import java.math.BigInteger; import java.util.Arrays; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.contract.auth.manager.AuthManager; -import org.fisco.bcos.sdk.contract.auth.po.ProposalInfo; -import org.fisco.bcos.sdk.contract.auth.po.ProposalStatus; -import org.fisco.bcos.sdk.contract.auth.po.ProposalType; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.auth.manager.AuthManager; +import org.fisco.bcos.sdk.v3.contract.auth.po.ProposalInfo; +import org.fisco.bcos.sdk.v3.contract.auth.po.ProposalStatus; +import org.fisco.bcos.sdk.v3.contract.auth.po.ProposalType; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -93,7 +97,7 @@ public List handleProposalReturnData(AuthManager authManager, int startI info.setResourceId(proposalInfo.getResourceId()); info.setProposer(proposalInfo.getProposer()); info.setProposalType(ProposalType.fromInt(proposalInfo.getProposalType()).getValue()); - info.setBlockNumberInterval(proposalInfo.getBlockNumberInterval()); + info.setBlockNumberInterval(proposalInfo.getBlockNumberInterval().longValue()); info.setStatus(ProposalStatus.fromInt(proposalInfo.getStatus()).getValue()); info.setAgreeVoters(proposalInfo.getAgreeVoters()); info.setAgainstVoters(proposalInfo.getAgainstVoters()); @@ -128,7 +132,12 @@ public BigInteger queryDeployAuthType(String groupId) public boolean checkDeployAuth(String groupId, String userAddress) throws ContractException { AuthManager authManager = authManagerService.getAuthManagerService(groupId); - return authManager.checkDeployAuth(userAddress); + try { + return authManager.checkDeployAuth(userAddress); + } catch (ContractException ex) { + log.error("checkDeployAuth error:{}", ex.getMessage()); + } + return true; } /** @@ -152,4 +161,37 @@ public String queryAdmin(String groupId, String contractAddr) AuthManager authManager = authManagerService.getAuthManagerService(groupId); return authManager.getAdmin(contractAddr); } + + /** + * 获取合约是否被冻结, true: available, 即not frozen + */ + public Boolean isContractAvailable(String groupId, String contractAddr) + throws ContractException { + if (!web3ApiService.getWeb3j(groupId).isAuthCheck()) { + throw new FrontException(ConstantCode.CHAIN_AUTH_NOT_ENABLE); + } + AuthManager authManager = authManagerService.getAuthManagerService(groupId); + return authManager.contractAvailable(contractAddr); + } + + /** + * 获取合约是否被冻结, true: available, 即not frozen + */ + public Map listContractStatus(String groupId, List contractAddrList) + throws ContractException { + if (!web3ApiService.getWeb3j(groupId).isAuthCheck()) { + throw new FrontException(ConstantCode.CHAIN_AUTH_NOT_ENABLE); + } + Map resultMap = new HashMap<>(); + if (contractAddrList.isEmpty()) { + return resultMap; + } + AuthManager authManager = authManagerService.getAuthManagerService(groupId); + + for (String contractAddr : contractAddrList) { + Boolean available = authManager.contractAvailable(contractAddr); + resultMap.put(contractAddr, available); + } + return resultMap; + } } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/entity/ReqContractStatusList.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/entity/ReqContractStatusList.java new file mode 100644 index 000000000..7ff9deb53 --- /dev/null +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/entity/ReqContractStatusList.java @@ -0,0 +1,31 @@ +/** + * Copyright 2014-2021 the original author or authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package com.webank.webase.front.precntauth.authmanager.everyone.entity; + +import java.util.List; +import javax.validation.constraints.NotNull; +import lombok.Data; + +/** + * batch query contract address list of contract status + */ +@Data +public class ReqContractStatusList { + + private String groupId; + @NotNull + private List contractAddressList; + +} diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/util/AuthManagerService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/util/AuthManagerService.java index b30e3ec7e..806547554 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/util/AuthManagerService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/util/AuthManagerService.java @@ -9,8 +9,8 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.contract.auth.manager.AuthManager; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.auth.manager.AuthManager; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java index 6530b213d..1d1fd6b1a 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java @@ -18,14 +18,13 @@ import com.webank.webase.front.base.enums.PrecompiledTypes; -import org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager; -import org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.bfs.BFSPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.cns.CNSPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.crud.KVTablePrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.model.PrecompiledAddress; -import org.fisco.bcos.sdk.contract.precompiled.sysconfig.SystemConfigPrecompiled; +import org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager; +import org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusPrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.crud.KVTablePrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.model.PrecompiledAddress; +import org.fisco.bcos.sdk.v3.contract.precompiled.sysconfig.SystemConfigPrecompiled; /** * precompiled contract address, function name, abi @@ -41,18 +40,14 @@ public static String getAddress(PrecompiledTypes types) { return PrecompiledAddress.SYS_CONFIG_PRECOMPILED_ADDRESS; case SYSTEM_CONFIG_LIQUID: return PrecompiledAddress.SYS_CONFIG_PRECOMPILED_NAME; - case CRUD: - return PrecompiledAddress.KV_TABLE_PRECOMPILED_ADDRESS; - case CRUD_LIQUID: - return PrecompiledAddress.KV_TABLE_PRECOMPILED_NAME; +// case CRUD: +// return PrecompiledAddress.KV_TABLE_PRECOMPILED_ADDRESS; +// case CRUD_LIQUID: +// return PrecompiledAddress.KV_TABLE_PRECOMPILED_NAME; case CONSENSUS: return PrecompiledAddress.CONSENSUS_PRECOMPILED_ADDRESS; case CONSENSUS_LIQUID: return PrecompiledAddress.CONSENSUS_PRECOMPILED_NAME; - case CNS: - return PrecompiledAddress.CNS_PRECOMPILED_ADDRESS; - case CNS_LIQUID: - return PrecompiledAddress.CNS_PRECOMPILED_NAME; case BFS: return PrecompiledAddress.BFS_PRECOMPILED_ADDRESS; case BFS_LIQUID: @@ -74,10 +69,6 @@ public static String getAbi(PrecompiledTypes types) { return KVTablePrecompiled.ABI; case CONSENSUS: return ConsensusPrecompiled.ABI; - case CNS: - return CNSPrecompiled.ABI; - case CNS_LIQUID: - return CNSPrecompiled.WASM_ABI; case CONTRACT_AUTH: return ContractAuthPrecompiled.ABI; case BFS: diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtil.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtils.java similarity index 60% rename from src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtil.java rename to src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtils.java index 9a8870340..b7131577f 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtil.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtils.java @@ -3,23 +3,45 @@ import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.base.response.BaseResponse; +import java.math.BigInteger; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Stack; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.codec.FunctionReturnDecoderInterface; +import org.fisco.bcos.sdk.v3.codec.Utils; +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.Int32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; @Slf4j -public class PrecompiledUtil { +public class PrecompiledUtils { - public static String handleTransactionReceipt(TransactionReceipt receipt) { + + public static String handleTransactionReceipt(TransactionReceipt receipt, boolean isWasm) { log.debug("handle tx receipt of precompiled"); try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); + RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt( + receipt, + tr -> { + FunctionReturnDecoderInterface decoderInterface = + isWasm + ? new org.fisco.bcos.sdk.v3.codec.scale.FunctionReturnDecoder() + : new org.fisco.bcos.sdk.v3.codec.abi.FunctionReturnDecoder(); + List decode = + decoderInterface.decode( + tr.getOutput(), + Utils.convert( + Collections.singletonList( + new TypeReference() {}))); + return (BigInteger) decode.get(0).getValue(); + }); log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); if (sdkRetCode.getCode() >= 0) { return new BaseResponse(ConstantCode.RET_SUCCESS, diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSController.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSController.java index 00025327b..4275e1b1a 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSController.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSController.java @@ -9,9 +9,9 @@ import io.swagger.annotations.ApiOperation; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSServiceInWebase.java index a44a700d8..a189e4bd3 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSServiceInWebase.java @@ -18,18 +18,17 @@ import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.keystore.KeyStoreService; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtil; +import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.web3api.Web3ApiService; import java.util.ArrayList; import java.util.List; -import java.util.Locale; -import org.fisco.bcos.sdk.contract.precompiled.bfs.BFSPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.bfs.BFSService; -import org.fisco.bcos.sdk.contract.precompiled.bfs.FileInfo; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled.BfsInfo; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSService; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -64,21 +63,59 @@ public Object mkdir(String groupId, String path, String signUserId) { TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, BFSPrecompiled.FUNC_MKDIR, funcParams, isWasm); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, isWasm); } /** * BFS获取某个目录信息 */ - public Object list(String groupId, String path) + public List list(String groupId, String path) throws ContractException { BFSService bfsService = new BFSService(web3ApiService.getWeb3j(groupId), keyStoreService.getCredentialsForQuery(groupId)); - List fileInfoList = bfsService.list(path); + List fileInfoList = bfsService.list(path); return fileInfoList; } - public String handleRetcodeAndReceipt(TransactionReceipt receipt) { + /** + * BFS link + */ + public String link(String groupId, String signUserId, String contractName, + String contractVersion, + String contractAddress, String abiData) { + List funcParams = new ArrayList<>(); + funcParams.add(contractName); + funcParams.add(contractVersion); + funcParams.add(contractAddress); + funcParams.add(abiData); + + String bfsAddress; + boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); + if (isWasm) { + bfsAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.BFS_LIQUID); + } else { + bfsAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.BFS); + } + String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.BFS); + TransactionReceipt receipt = + (TransactionReceipt) transService.transHandleWithSign(groupId, + signUserId, bfsAddress, abiStr, BFSPrecompiled.FUNC_LINK, funcParams, isWasm); + return this.handleRetcodeAndReceipt(receipt, isWasm); + } + + /** + * BFS readlink 获取某个目录信息 + */ + public Object readlink(String groupId, String path) + throws ContractException { + BFSService bfsService = new BFSService(web3ApiService.getWeb3j(groupId), + keyStoreService.getCredentialsForQuery(groupId)); + String readlink = bfsService.readlink(path); + return readlink; + } + + + public String handleRetcodeAndReceipt(TransactionReceipt receipt, boolean isWasm) { if (receipt.getStatus() == -53005) { RetCode sdkRetCode = new RetCode(); if (receipt.getMessage().equals("Invalid path")) { @@ -86,7 +123,7 @@ public String handleRetcodeAndReceipt(TransactionReceipt receipt) { sdkRetCode.getMessage()).toString(); } } - return PrecompiledUtil.handleTransactionReceipt(receipt); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } } diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSController.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSController.java index e9ab16158..630ef59e1 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSController.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSController.java @@ -8,7 +8,7 @@ import io.swagger.annotations.ApiOperation; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java index 5acfd439d..7c3eabe07 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java @@ -13,28 +13,28 @@ */ package com.webank.webase.front.precntauth.precompiled.cns; -import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.keystore.KeyStoreService; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtil; +import com.webank.webase.front.precntauth.precompiled.bfs.BFSServiceInWebase; +import com.webank.webase.front.precntauth.precompiled.cns.entity.CnsInfo; import com.webank.webase.front.precntauth.precompiled.cns.entity.ResCnsInfo; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.web3api.Web3ApiService; -import java.util.ArrayList; import java.util.List; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.contract.precompiled.cns.CNSPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsInfo; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsService; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import java.util.stream.Collectors; +import lombok.extern.slf4j.Slf4j; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled.BfsInfo; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * CNS management service; * Handle transaction through webase-sign. + * 2022-08-02: use BfsService instead of CNSService in sdk */ +@Slf4j @Service public class CNSServiceInWebase { @@ -44,55 +44,67 @@ public class CNSServiceInWebase { private KeyStoreService keyStoreService; @Autowired private TransService transService; + @Autowired + private BFSServiceInWebase bfsServiceInWebase; + + private static final String CONTRACT_PREFIX = "/apps/"; + private static final String CNS_FILE_TYPE = "link"; - public Object registerCNS(String groupId, String signUserId, String contractName, + public String registerCNS(String groupId, String signUserId, String contractName, String contractVersion, String contractAddress, String abiData) throws ContractException { TransactionReceipt receipt; - String precompiledAddress; - List funcParams = new ArrayList<>(); - funcParams.add(contractName); - funcParams.add(contractVersion); - funcParams.add(contractAddress); - funcParams.add(abiData); - //wasm or solidity - boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); - String abiStr; - if (isWasm) { - precompiledAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CNS_LIQUID); - abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CNS_LIQUID); - } else { - precompiledAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CNS); - abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CNS); - } - receipt = - (TransactionReceipt) transService.transHandleWithSign(groupId, - signUserId, precompiledAddress, abiStr, CNSPrecompiled.FUNC_INSERT, funcParams, - isWasm); - return PrecompiledUtil.handleTransactionReceipt(receipt); + return bfsServiceInWebase.link(groupId, signUserId, contractName, contractVersion, contractAddress, abiData); } public List queryCnsInfoByName(String groupId, String contractName) throws ContractException { - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - return cnsService.selectByName(contractName); + List bfsInfoList = bfsServiceInWebase.list(groupId, CONTRACT_PREFIX + contractName); + log.info("queryCnsByNameAndVersion bfsInfoList:{}", bfsInfoList); + // 只有link是cns的 + List cnsInfos = bfsInfoList.stream() + .filter(bfs -> CNS_FILE_TYPE.equals(bfs.getFileType())) + .map(bfs -> { + String version = bfs.getFileName(); + try { + Tuple2 addressAbi = queryCnsByNameAndVersion(groupId, contractName, version); + return new CnsInfo(contractName, bfs.getFileName(), addressAbi.getValue1(), addressAbi.getValue2()); + } catch (ContractException e) { + log.error("query cns name version failed:{}|{}", contractName, version); + return new CnsInfo(contractName, bfs.getFileName(), "", ""); + } + }) + .collect(Collectors.toList()); + log.info("queryCnsByNameAndVersion cnsInfos:{}", cnsInfos); + return cnsInfos; } public Tuple2 queryCnsByNameAndVersion(String groupId, String contractName, String version) throws ContractException { - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - return cnsService.selectByNameAndVersion(contractName, version); + + List bfsInfoList = bfsServiceInWebase.list(groupId, CONTRACT_PREFIX + contractName + "/" + version); + log.info("queryCnsByNameAndVersion bfsInfoList:{}", bfsInfoList); + // 只有link是cns的 + List versionInfoList = bfsInfoList.stream().filter(bfs + -> CNS_FILE_TYPE.equals(bfs.getFileType())).collect(Collectors.toList()); + log.info("queryCnsByNameAndVersion versionInfoList:{}", versionInfoList); + // 一个版本的cns只有一个 + if (versionInfoList.size() == 1) { + BfsInfo bfsInfo = versionInfoList.get(0); + String address = bfsInfo.getExt().get(0); + String abi = bfsInfo.getExt().get(1); + return new Tuple2(address, abi); + } else { + return new Tuple2("", ""); + } } public ResCnsInfo queryCnsByNameAndVersion2(String groupId, String contractName, String version) throws ContractException { ResCnsInfo resCnsInfo = new ResCnsInfo(); - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - Tuple2 tuple2 = cnsService.selectByNameAndVersion(contractName, version); + + Tuple2 tuple2 = this.queryCnsByNameAndVersion(groupId, contractName, version); resCnsInfo.setAddress(tuple2.getValue1()); resCnsInfo.setAbi(tuple2.getValue2()); return resCnsInfo; @@ -100,9 +112,8 @@ public ResCnsInfo queryCnsByNameAndVersion2(String groupId, String contractName, public String getAddressByContractNameAndVersion(String groupId, String contractName, String version) throws ContractException { - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - return cnsService.getContractAddress(contractName, version); + Tuple2 tuple2 = this.queryCnsByNameAndVersion(groupId, contractName, version); + return tuple2.getValue1(); } } diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/entity/CnsInfo.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/entity/CnsInfo.java new file mode 100644 index 000000000..3b0a41d95 --- /dev/null +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/entity/CnsInfo.java @@ -0,0 +1,29 @@ +/** + * Copyright 2014-2021 the original author or authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package com.webank.webase.front.precntauth.precompiled.cns.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CnsInfo { + private String name; + private String version; + private String address; + private String abi; +} diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/consensus/ConsensusServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/consensus/ConsensusServiceInWebase.java index 7bc091daa..1eccb83ca 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/consensus/ConsensusServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/consensus/ConsensusServiceInWebase.java @@ -16,15 +16,16 @@ import static com.webank.webase.front.util.PrecompiledUtils.NODE_TYPE_OBSERVER; import static com.webank.webase.front.util.PrecompiledUtils.NODE_TYPE_REMOVE; import static com.webank.webase.front.util.PrecompiledUtils.NODE_TYPE_SEALER; -import static org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_ADDOBSERVER; -import static org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_ADDSEALER; -import static org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_REMOVE; +import static org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_ADDOBSERVER; +import static org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_ADDSEALER; +import static org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_REMOVE; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; +import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; import com.webank.webase.front.precntauth.precompiled.consensus.entity.NodeInfo; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.web3api.Web3ApiService; @@ -33,12 +34,12 @@ import java.util.List; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.client.protocol.response.SealerList.Sealer; -import org.fisco.bcos.sdk.model.PrecompiledRetCode; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.client.protocol.response.SealerList.Sealer; +import org.fisco.bcos.sdk.v3.model.PrecompiledRetCode; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -94,7 +95,7 @@ public String addSealerHandle(String groupId, String signUserId, String nodeId, TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_ADDSEALER, funcParams, isWasm); - return this.handleTransactionReceipt(receipt); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } private boolean isValidNodeID(String _nodeID, String groupId) { @@ -155,7 +156,7 @@ private String addObserverHandle(String groupId, String signUserId, String nodeI TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_ADDOBSERVER, funcParams, isWasm); - return this.handleTransactionReceipt(receipt); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } public String removeNode(String groupId, String signUserId, String nodeId) { @@ -188,25 +189,9 @@ public String removeNode(String groupId, String signUserId, String nodeId) { throw e; } } - return this.handleTransactionReceipt(receipt); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } - private String handleTransactionReceipt(TransactionReceipt receipt) { - log.debug("handle tx receipt of precompiled"); - try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); - log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); - if (sdkRetCode.getCode() >= 0) { - return new BaseResponse(ConstantCode.RET_SUCCESS, - sdkRetCode.getMessage()).toString(); - } else { - throw new FrontException(sdkRetCode.getCode(), sdkRetCode.getMessage()); - } - } catch (ContractException e) { - log.error("handleTransactionReceipt e:[]", e); - throw new FrontException(e.getErrorCode(), e.getMessage()); - } - } public List getNodeList(String groupId) { // nodeListWithType 组合多个带有类型的nodeid list diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableController.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableController.java index 79407de09..a0b6b2d97 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableController.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableController.java @@ -1,61 +1,61 @@ -package com.webank.webase.front.precntauth.precompiled.crud; - -import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqCreateTableInfo; -import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqGetTableInfo; -import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqSetTableInfo; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import java.util.Map; -import javax.validation.Valid; -import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@Api(value = "precntauth/precompiled/kvtable", tags = "precntauth precompiled controller") -@Slf4j -@RestController -@RequestMapping(value = "precntauth/precompiled/kvtable") -public class KVTableController { - - @Autowired - private KVTableServiceInWebase kvTableService; - - @ApiOperation(value = "create the table") - @ApiImplicitParam(name = "reqCreateTableInfo", value = "create table info", required = true, dataType = "ReqCreateTableInfo") - @PostMapping("reqCreateTable") - public Object createTable(@Valid @RequestBody ReqCreateTableInfo reqCreateTableInfo) - throws ContractException { - String res = kvTableService.createTable(reqCreateTableInfo.getGroupId(), - reqCreateTableInfo.getSignUserId(), - reqCreateTableInfo.getTableName(), reqCreateTableInfo.getKeyFieldName(), - reqCreateTableInfo.getValueFields()); - return res; - } - - @ApiOperation(value = "set the table") - @ApiImplicitParam(name = "reqSetTableInfo", value = "set table info", required = true, dataType = "ReqSetTableInfo") - @PostMapping("reqSetTable") - public Object set(@Valid @RequestBody ReqSetTableInfo reqSetTableInfo) throws ContractException { - Object res = kvTableService.set(reqSetTableInfo.getGroupId(), reqSetTableInfo.getSignUserId(), - reqSetTableInfo.getTableName(), - reqSetTableInfo.getKey(), - reqSetTableInfo.getFieldNameToValue()); - return res; - } - - @ApiOperation(value = "get the table") - @ApiImplicitParam(name = "reqGetTableInfo", value = "get table info", required = true, dataType = "ReqGetTableInfo") - @PostMapping("reqGetTable") - public Object get(@Valid @RequestBody ReqGetTableInfo reqGetTableInfo) throws ContractException { - Map res = kvTableService.get(reqGetTableInfo.getGroupId(), - reqGetTableInfo.getTableName(), - reqGetTableInfo.getKey()); - return res; - } - -} +//package com.webank.webase.front.precntauth.precompiled.crud; +// +//import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqCreateTableInfo; +//import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqGetTableInfo; +//import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqSetTableInfo; +//import io.swagger.annotations.Api; +//import io.swagger.annotations.ApiImplicitParam; +//import io.swagger.annotations.ApiOperation; +//import java.util.Map; +//import javax.validation.Valid; +//import lombok.extern.slf4j.Slf4j; +//import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestBody; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//@Api(value = "precntauth/precompiled/kvtable", tags = "precntauth precompiled controller") +//@Slf4j +//@RestController +//@RequestMapping(value = "precntauth/precompiled/kvtable") +//public class KVTableController { +// +// @Autowired +// private KVTableServiceInWebase kvTableService; +// +// @ApiOperation(value = "create the table") +// @ApiImplicitParam(name = "reqCreateTableInfo", value = "create table info", required = true, dataType = "ReqCreateTableInfo") +// @PostMapping("reqCreateTable") +// public Object createTable(@Valid @RequestBody ReqCreateTableInfo reqCreateTableInfo) +// throws ContractException { +// String res = kvTableService.createTable(reqCreateTableInfo.getGroupId(), +// reqCreateTableInfo.getSignUserId(), +// reqCreateTableInfo.getTableName(), reqCreateTableInfo.getKeyFieldName(), +// reqCreateTableInfo.getValueFields()); +// return res; +// } +// +// @ApiOperation(value = "set the table") +// @ApiImplicitParam(name = "reqSetTableInfo", value = "set table info", required = true, dataType = "ReqSetTableInfo") +// @PostMapping("reqSetTable") +// public Object set(@Valid @RequestBody ReqSetTableInfo reqSetTableInfo) throws ContractException { +// Object res = kvTableService.set(reqSetTableInfo.getGroupId(), reqSetTableInfo.getSignUserId(), +// reqSetTableInfo.getTableName(), +// reqSetTableInfo.getKey(), +// reqSetTableInfo.getFieldNameToValue()); +// return res; +// } +// +// @ApiOperation(value = "get the table") +// @ApiImplicitParam(name = "reqGetTableInfo", value = "get table info", required = true, dataType = "ReqGetTableInfo") +// @PostMapping("reqGetTable") +// public Object get(@Valid @RequestBody ReqGetTableInfo reqGetTableInfo) throws ContractException { +// Map res = kvTableService.get(reqGetTableInfo.getGroupId(), +// reqGetTableInfo.getTableName(), +// reqGetTableInfo.getKey()); +// return res; +// } +// +//} diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableServiceInWebase.java index b70d932e5..69deb958a 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableServiceInWebase.java @@ -1,165 +1,165 @@ -/* - * Copyright 2014-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package com.webank.webase.front.precntauth.precompiled.crud; - -import static org.fisco.bcos.sdk.contract.precompiled.crud.KVTablePrecompiled.FUNC_CREATETABLE; -import static org.fisco.bcos.sdk.contract.precompiled.crud.KVTablePrecompiled.FUNC_SET; -import static org.fisco.bcos.sdk.contract.precompiled.crud.KVTableService.convertValueFieldsToString; - -import com.webank.webase.front.base.enums.PrecompiledTypes; -import com.webank.webase.front.keystore.KeyStoreService; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtil; -import com.webank.webase.front.transaction.TransService; -import com.webank.webase.front.web3api.Web3ApiService; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.contract.precompiled.crud.KVTableService; -import org.fisco.bcos.sdk.contract.precompiled.crud.common.Entry; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * kvtable service - * Handle transaction through webase-sign. - */ -@Slf4j -@Service -public class KVTableServiceInWebase { - - @Autowired - private Web3ApiService web3ApiService; - @Autowired - private KeyStoreService keyStoreService; - @Autowired - private TransService transService; - - /*** - * createTable - * @param groupId - * @param signUserId - * @param tableName - * @param keyFieldName - * @param valueFields - * @return - * @throws ContractException - */ - public String createTable(String groupId, String signUserId, String tableName, - String keyFieldName, - List valueFields) - throws ContractException { - String res = this.createTableHandle(groupId, signUserId, tableName, keyFieldName, valueFields); - return res; - - } - - public String createTableHandle(String groupId, String signUserId, String tableName, - String keyFieldName, List valueFields) { - List funcParams = new ArrayList<>(); - funcParams.add(tableName); - funcParams.add(keyFieldName); - String valueFieldsString = convertValueFieldsToString(valueFields); - funcParams.add(valueFieldsString); - String contractAddress; - boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); - if (isWasm) { - contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD_LIQUID); - } else { - contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD); - } - String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CRUD); - TransactionReceipt receipt = - (TransactionReceipt) transService.transHandleWithSign(groupId, - signUserId, contractAddress, abiStr, FUNC_CREATETABLE, funcParams, isWasm); - return PrecompiledUtil.handleTransactionReceipt(receipt); - } - - /** - * set data - * - * @param groupId - * @param signUserId - * @param tableName - * @param key - * @param fieldNameToValue - * @return - * @throws ContractException - */ - public Object set(String groupId, String signUserId, String tableName, String key, - Map fieldNameToValue) - throws ContractException { - String res = this.setHandle(groupId, signUserId, tableName, key, fieldNameToValue); - return res; - } - - public String setHandle(String groupId, String signUserId, String tableName, String key, - Map fieldNameToValue) { - List funcParams = new ArrayList<>(); - funcParams.add(tableName); - funcParams.add(key); - Entry entry = new Entry(); - entry.setFieldNameToValue(fieldNameToValue); - //be careful :entry.getKVPrecompiledEntry() - funcParams.add(entry.getKVPrecompiledEntry()); - String contractAddress; - boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); - if (isWasm) { - contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD_LIQUID); - } else { - contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD); - } - String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CRUD); - TransactionReceipt receipt = - (TransactionReceipt) transService.transHandleWithSign(groupId, - signUserId, contractAddress, abiStr, FUNC_SET, funcParams, isWasm); - return PrecompiledUtil.handleTransactionReceipt(receipt); - } - - /** - * read data - * - * @param groupId - * @param tableName - * @param key - * @return - * @throws ContractException - */ - public Map get(String groupId, String tableName, String key) - throws ContractException { - KVTableService kvTableService = new KVTableService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - Map res = kvTableService.get(tableName, key); - return res; - } - - /** - * desc info of table - * - * @param groupId - * @param tableName - * @return - * @throws ContractException - */ - public Map desc(String groupId, String tableName) throws ContractException { - KVTableService kvTableService = new KVTableService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - Map res = kvTableService.desc(tableName); - return res; - } - -} +///* +// * Copyright 2014-2020 the original author or authors. +// * +// * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +// * in compliance with the License. You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, software distributed under the License +// * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +// * or implied. See the License for the specific language governing permissions and limitations under +// * the License. +// */ +//package com.webank.webase.front.precntauth.precompiled.crud; +// +//import static org.fisco.bcos.sdk.v3.contract.precompiled.crud.KVTablePrecompiled.FUNC_SET; +//import static org.fisco.bcos.sdk.v3.contract.precompiled.crud.TableManagerPrecompiled.FUNC_CREATETABLE; +// +//import com.webank.webase.front.base.enums.PrecompiledTypes; +//import com.webank.webase.front.keystore.KeyStoreService; +//import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; +//import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; +//import com.webank.webase.front.transaction.TransService; +//import com.webank.webase.front.web3api.Web3ApiService; +//import java.util.ArrayList; +//import java.util.Collections; +//import java.util.List; +//import java.util.Map; +//import lombok.extern.slf4j.Slf4j; +//import org.fisco.bcos.sdk.v3.contract.precompiled.crud.KVTableService; +//import org.fisco.bcos.sdk.v3.contract.precompiled.crud.common.Entry; +//import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +//import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +// +///** +// * kvtable service +// * Handle transaction through webase-sign. +// */ +//@Slf4j +//@Service +//public class KVTableServiceInWebase { +// +// @Autowired +// private Web3ApiService web3ApiService; +// @Autowired +// private KeyStoreService keyStoreService; +// @Autowired +// private TransService transService; +// +// /*** +// * createTable +// * @param groupId +// * @param signUserId +// * @param tableName +// * @param keyFieldName +// * @param valueFields +// * @return +// * @throws ContractException +// */ +// public String createTable(String groupId, String signUserId, String tableName, +// String keyFieldName, +// List valueFields) +// throws ContractException { +// String res = this.createTableHandle(groupId, signUserId, tableName, keyFieldName, valueFields); +// return res; +// +// } +// +// public String createTableHandle(String groupId, String signUserId, String tableName, +// String keyFieldName, List valueFields) { +// List funcParams = new ArrayList<>(); +// funcParams.add(tableName); +// funcParams.add(keyFieldName); +// String valueFieldsString = convertValueFieldsToString(valueFields); +// funcParams.add(valueFieldsString); +// String contractAddress; +// boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); +// if (isWasm) { +// contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD_LIQUID); +// } else { +// contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD); +// } +// String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CRUD); +// TransactionReceipt receipt = +// (TransactionReceipt) transService.transHandleWithSign(groupId, +// signUserId, contractAddress, abiStr, FUNC_CREATETABLE, funcParams, isWasm); +// return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); +// } +// +// /** +// * set data +// * +// * @param groupId +// * @param signUserId +// * @param tableName +// * @param key +// * @param fieldNameToValue +// * @return +// * @throws ContractException +// */ +// public Object set(String groupId, String signUserId, String tableName, String key, +// Map fieldNameToValue) +// throws ContractException { +// String res = this.setHandle(groupId, signUserId, tableName, key, fieldNameToValue); +// return res; +// } +// +// public String setHandle(String groupId, String signUserId, String tableName, String key, +// Map fieldNameToValue) { +// List funcParams = new ArrayList<>(); +// funcParams.add(tableName); +// funcParams.add(key); +// Entry entry = new Entry(Collections.emptyList(), key, fieldNameToValue); // todo check +// entry.setFieldNameToValue(fieldNameToValue); +// //be careful :entry.getKVPrecompiledEntry() +// funcParams.add(entry.getKVPrecompiledEntry()); +// String contractAddress; +// boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); +// if (isWasm) { +// contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD_LIQUID); +// } else { +// contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD); +// } +// String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CRUD); +// TransactionReceipt receipt = +// (TransactionReceipt) transService.transHandleWithSign(groupId, +// signUserId, contractAddress, abiStr, FUNC_SET, funcParams, isWasm); +// return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); +// } +// +// /** +// * read data +// * +// * @param groupId +// * @param tableName +// * @param key +// * @return +// * @throws ContractException +// */ +// public Map get(String groupId, String tableName, String key) +// throws ContractException { +// KVTableService kvTableService = new KVTableService(web3ApiService.getWeb3j(groupId), +// keyStoreService.getCredentialsForQuery(groupId)); +// Map res = kvTableService.get(tableName, key); +// return res; +// } +// +// /** +// * desc info of table +// * +// * @param groupId +// * @param tableName +// * @return +// * @throws ContractException +// */ +// public Map desc(String groupId, String tableName) throws ContractException { +// KVTableService kvTableService = new KVTableService(web3ApiService.getWeb3j(groupId), +// keyStoreService.getCredentialsForQuery(groupId)); +// Map res = kvTableService.desc(tableName); +// return res; +// } +// +//} diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java index 8bc6fd3aa..818aeb98c 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java @@ -13,12 +13,11 @@ */ package com.webank.webase.front.precntauth.precompiled.sysconf; -import static org.fisco.bcos.sdk.contract.precompiled.sysconfig.SystemConfigPrecompiled.FUNC_SETVALUEBYKEY; + +import static org.fisco.bcos.sdk.v3.contract.precompiled.sysconfig.SystemConfigPrecompiled.FUNC_SETVALUEBYKEY; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; -import com.webank.webase.front.base.exception.FrontException; -import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; import com.webank.webase.front.precntauth.precompiled.sysconf.entity.ReqQuerySysConfigInfo; import com.webank.webase.front.precntauth.precompiled.sysconf.entity.ReqSetSysConfigInfo; @@ -29,10 +28,7 @@ import java.util.ArrayList; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -94,9 +90,9 @@ public Object setSysConfigValueByKey(ReqSetSysConfigInfo reqSetSysConfigInfo) { // check system value // check gas limit - if (PrecompiledUtils.TxGasLimit.equals(key)) { - if (Long.parseLong(value) < PrecompiledUtils.TxGasLimitMin || - Long.parseLong(value) > PrecompiledUtils.TxGasLimitMax) { + if (com.webank.webase.front.util.PrecompiledUtils.TxGasLimit.equals(key)) { + if (Long.parseLong(value) < com.webank.webase.front.util.PrecompiledUtils.TxGasLimitMin || + Long.parseLong(value) > com.webank.webase.front.util.PrecompiledUtils.TxGasLimitMax) { return ConstantCode.SET_SYSTEM_CONFIG_GAS_RANGE_ERROR; } } @@ -124,7 +120,8 @@ public String setValueByKey(String groupId, String signUserId, String key, Strin TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_SETVALUEBYKEY, funcParams, isWasm); - return this.handleTransactionReceipt(receipt); + return com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils + .handleTransactionReceipt(receipt, isWasm); } public String getSysConfigByKey(String groupId, String key) { @@ -133,20 +130,4 @@ public String getSysConfigByKey(String groupId, String key) { return result; } - private String handleTransactionReceipt(TransactionReceipt receipt) { - log.debug("handle tx receipt of precompiled"); - try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); - log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); - if (sdkRetCode.getCode() >= 0) { - return new BaseResponse(ConstantCode.RET_SUCCESS, - sdkRetCode.getMessage()).toString(); - } else { - throw new FrontException(sdkRetCode.getCode(), sdkRetCode.getMessage()); - } - } catch (ContractException e) { - log.error("handleTransactionReceipt e:[]", e); - throw new FrontException(e.getErrorCode(), e.getMessage()); - } - } } diff --git a/src/main/java/com/webank/webase/front/task/SyncEventMapTask.java b/src/main/java/com/webank/webase/front/task/SyncEventMapTask.java index 6b3e6bb68..bb78eb0ef 100644 --- a/src/main/java/com/webank/webase/front/task/SyncEventMapTask.java +++ b/src/main/java/com/webank/webase/front/task/SyncEventMapTask.java @@ -25,8 +25,8 @@ import com.webank.webase.front.event.entity.ContractEventInfo; import com.webank.webase.front.event.entity.NewBlockEventInfo; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.eventsub.EventSubscribe; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.eventsub.EventSubscribe; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/webank/webase/front/tool/ToolController.java b/src/main/java/com/webank/webase/front/tool/ToolController.java index 19aaca9f7..9dfb3c3d5 100644 --- a/src/main/java/com/webank/webase/front/tool/ToolController.java +++ b/src/main/java/com/webank/webase/front/tool/ToolController.java @@ -35,19 +35,19 @@ //import javax.validation.Valid; //import lombok.extern.slf4j.Slf4j; //import org.apache.commons.lang3.StringUtils; -//import org.fisco.bcos.sdk.codec.ABICodec; -//import org.fisco.bcos.sdk.codec.ABICodecException; -//import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes32; -//import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -//import org.fisco.bcos.sdk.crypto.keypair.ECDSAKeyPair; -//import org.fisco.bcos.sdk.crypto.keypair.SM2KeyPair; -//import org.fisco.bcos.sdk.crypto.keystore.KeyTool; -//import org.fisco.bcos.sdk.crypto.keystore.P12KeyStore; -//import org.fisco.bcos.sdk.crypto.keystore.PEMKeyStore; -//import org.fisco.bcos.sdk.crypto.signature.SignatureResult; -//import org.fisco.bcos.sdk.model.CryptoType; -//import org.fisco.bcos.sdk.transaction.codec.decode.TransactionDecoderService; -//import org.fisco.bcos.sdk.utils.Numeric; +//import org.fisco.bcos.sdk.v3.codec.ContractCodec; +//import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +//import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +//import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +//import org.fisco.bcos.sdk.v3.crypto.keypair.ECDSAKeyPair; +//import org.fisco.bcos.sdk.v3.crypto.keypair.SM2KeyPair; +//import org.fisco.bcos.sdk.v3.crypto.keystore.KeyTool; +//import org.fisco.bcos.sdk.v3.crypto.keystore.P12KeyStore; +//import org.fisco.bcos.sdk.v3.crypto.keystore.PEMKeyStore; +//import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; +//import org.fisco.bcos.sdk.v3.model.CryptoType; +//import org.fisco.bcos.sdk.v3.transaction.codec.decode.TransactionDecoderService; +//import org.fisco.bcos.sdk.v3.utils.Numeric; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Qualifier; //import org.springframework.web.bind.annotation.GetMapping; @@ -80,12 +80,12 @@ // return txDecoder.decodeReceiptMessage(param.getInput()); // } else if (param.getDecodeType() == 2) { // String abi = JsonUtils.objToString(param.getAbiList()); -// ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), false); +// ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), false); // // decode output // try { // return abiCodec.decodeMethodAndGetOutputObject(abi, param.getMethodName(), // param.getOutput()); -// } catch (ABICodecException e) { +// } catch (ContractCodecException e) { // log.error("abi decode fail:{}", e.getMessage()); // throw new FrontException(ConstantCode.CONTRACT_ABI_PARSE_JSON_ERROR); // } @@ -200,7 +200,7 @@ // } else { // throw new FrontException(ConstantCode.PARAM_ERROR); // } -// return Numeric.toHexString(bytes32.getValue()); +// return Hex.toHexString(bytes32.getValue()); // } // // @ApiOperation(value = "get utf8's hex string", notes = "get hex string") @@ -217,7 +217,7 @@ // String privateKey = reqSign.getPrivateKey(); // String rawData = reqSign.getRawData(); // CryptoKeyPair cryptoKeyPair = web3ApiService.getCryptoSuite(groupId).getKeyPairFactory().createKeyPair(privateKey); -// SignatureResult signatureData = web3ApiService.getCryptoSuite(groupId).sign(Numeric.toHexString(rawData.getBytes()), cryptoKeyPair); +// SignatureResult signatureData = web3ApiService.getCryptoSuite(groupId).sign(Hex.toHexString(rawData.getBytes()), cryptoKeyPair); // return new RspSignData(signatureData, web3ApiService.getCryptoSuite(groupId).cryptoTypeConfig); // } // diff --git a/src/main/java/com/webank/webase/front/tool/entity/RspKeyPair.java b/src/main/java/com/webank/webase/front/tool/entity/RspKeyPair.java index 6677802da..b779291ad 100644 --- a/src/main/java/com/webank/webase/front/tool/entity/RspKeyPair.java +++ b/src/main/java/com/webank/webase/front/tool/entity/RspKeyPair.java @@ -16,7 +16,7 @@ import lombok.Data; import lombok.NoArgsConstructor; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; @Data @NoArgsConstructor diff --git a/src/main/java/com/webank/webase/front/tool/entity/RspSignData.java b/src/main/java/com/webank/webase/front/tool/entity/RspSignData.java index fa5aedd87..21bb55af4 100644 --- a/src/main/java/com/webank/webase/front/tool/entity/RspSignData.java +++ b/src/main/java/com/webank/webase/front/tool/entity/RspSignData.java @@ -16,7 +16,7 @@ import lombok.AllArgsConstructor; import lombok.Data; -import org.fisco.bcos.sdk.crypto.signature.SignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; @Data @AllArgsConstructor diff --git a/src/main/java/com/webank/webase/front/transaction/TransController.java b/src/main/java/com/webank/webase/front/transaction/TransController.java index 0859fe3fe..37e8f56db 100644 --- a/src/main/java/com/webank/webase/front/transaction/TransController.java +++ b/src/main/java/com/webank/webase/front/transaction/TransController.java @@ -44,8 +44,9 @@ import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @@ -83,7 +84,7 @@ public Object transHandle(@Valid @RequestBody ReqTransHandleWithSign reqTransHan } if (StringUtils.isNotBlank(address) && ( (!reqTransHandle.getIsWasm() && address.length() != Address.ValidLen) - || (!reqTransHandle.getIsWasm() && org.fisco.bcos.sdk.codec.datatypes.Address.DEFAULT.toString().equals(address)) ) + || (!reqTransHandle.getIsWasm() && org.fisco.bcos.sdk.v3.codec.datatypes.Address.DEFAULT.toString().equals(address)) ) ) { throw new FrontException(PARAM_ADDRESS_IS_INVALID); } @@ -165,7 +166,7 @@ public Object sendQueryTransaction(@Valid @RequestBody ReqQueryTransHandle reqQu if (StringUtils.isBlank(reqQueryTransHandle.getEncodeStr())) { throw new FrontException(ENCODE_STR_CANNOT_BE_NULL); } - byte[] encodeStr = Numeric.hexStringToByteArray(reqQueryTransHandle.getEncodeStr()); + byte[] encodeStr = Hex.decode(reqQueryTransHandle.getEncodeStr()); List contractAbi = JsonUtils.toJavaObjectList(reqQueryTransHandle.getContractAbi(), Object.class); Object obj = transServiceImpl.sendQueryTransaction(encodeStr, reqQueryTransHandle.getContractAddress(), reqQueryTransHandle.getFuncName(), contractAbi, reqQueryTransHandle.getGroupId(), diff --git a/src/main/java/com/webank/webase/front/transaction/TransService.java b/src/main/java/com/webank/webase/front/transaction/TransService.java index 4b8dc2ad9..53184dc14 100644 --- a/src/main/java/com/webank/webase/front/transaction/TransService.java +++ b/src/main/java/com/webank/webase/front/transaction/TransService.java @@ -39,38 +39,37 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.client.protocol.model.tars.TransactionData; -import org.fisco.bcos.sdk.client.protocol.request.Transaction; -import org.fisco.bcos.sdk.client.protocol.response.Call.CallOutput; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.codec.Utils; -import org.fisco.bcos.sdk.codec.abi.FunctionReturnDecoder; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition.NamedType; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinitionFactory; -import org.fisco.bcos.sdk.codec.wrapper.ContractABIDefinition; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.crypto.signature.ECDSASignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SM2SignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SignatureResult; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.builder.TransactionBuilderInterface; -import org.fisco.bcos.sdk.transaction.builder.TransactionBuilderService; -import org.fisco.bcos.sdk.transaction.codec.decode.RevertMessageParser; -import org.fisco.bcos.sdk.transaction.codec.decode.TransactionDecoderService; -import org.fisco.bcos.sdk.transaction.codec.encode.TransactionEncoderService; -import org.fisco.bcos.sdk.transaction.manager.TransactionProcessor; -import org.fisco.bcos.sdk.transaction.manager.TransactionProcessorFactory; -import org.fisco.bcos.sdk.transaction.pusher.TransactionPusherService; -import org.fisco.bcos.sdk.utils.Hex; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.jni.common.JniException; +import org.fisco.bcos.sdk.jni.utilities.tx.TransactionBuilderJniObj; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.client.protocol.request.Transaction; +import org.fisco.bcos.sdk.v3.client.protocol.response.Call.CallOutput; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.codec.Utils; +import org.fisco.bcos.sdk.v3.codec.abi.FunctionReturnDecoder; +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.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition.NamedType; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinitionFactory; +import org.fisco.bcos.sdk.v3.codec.wrapper.ContractABIDefinition; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.signature.ECDSASignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SM2SignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.RevertMessageParser; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.TransactionDecoderService; +import org.fisco.bcos.sdk.v3.transaction.codec.encode.TransactionEncoderService; +import org.fisco.bcos.sdk.v3.transaction.manager.TransactionProcessor; +import org.fisco.bcos.sdk.v3.transaction.manager.TransactionProcessorFactory; +import org.fisco.bcos.sdk.v3.transaction.pusher.TransactionPusherService; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -168,23 +167,52 @@ public Object transHandleWithSign(String groupId, String signUserId, public String signMessage(String groupId, Client client, String signUserId, String contractAddress, byte[] data, boolean isDeploy) { log.info("signMessage data:{}", Hex.toHexString(data)); + Instant nodeStartTime = Instant.now(); // to encode raw tx Pair chainIdAndGroupId = TransactionProcessorFactory.getChainIdAndGroupId(client); - TransactionBuilderService txBuilderService = new TransactionBuilderService(web3ApiService.getWeb3j(groupId)); - TransactionData rawTransaction = txBuilderService - .createTransaction(contractAddress, data, chainIdAndGroupId.getLeft(), String.valueOf(groupId)); - log.debug("signMessage rawTransaction:{}", JsonUtils.objToString(rawTransaction)); - TransactionEncoderService encoderService = new TransactionEncoderService(web3ApiService.getCryptoSuite(groupId)); - byte[] encodedTransaction = encoderService.encode(rawTransaction); - + long transactionData = 0L; + String encodedTransaction = ""; + String transactionDataHash = ""; + try { + transactionData = TransactionBuilderJniObj + .createTransactionData(groupId, chainIdAndGroupId.getLeft(), + contractAddress, Hex.toHexString(data), "", client.getBlockLimit().longValue()); + encodedTransaction = TransactionBuilderJniObj.encodeTransactionData(transactionData); + // 使用encodeTx的hash,和sign的hash保持一致 + transactionDataHash = client.getCryptoSuite().hash(encodedTransaction); +// transactionDataHash = TransactionBuilderJniObj.calcTransactionDataHash(client.getCryptoType(), transactionData); + } catch (JniException e) { + log.error("createTransactionData jni error ", e); + } + if (transactionData == 0L + || StringUtils.isBlank(encodedTransaction) + || StringUtils.isBlank(transactionDataHash)) { + log.error("signMessage encodedTransaction:{}|{}|{}", + transactionData, encodedTransaction, transactionDataHash); + throw new FrontException(ConstantCode.ENCODE_TX_JNI_ERROR); + } + log.info("transactionDataHash after:{}", transactionDataHash); SignatureResult signData = this.requestSignForSign(encodedTransaction, signUserId, groupId); int mark = client.isWASM() ? USE_WASM : USE_SOLIDITY; if (client.isWASM() && isDeploy) { mark = USE_WASM_DEPLOY; } log.info("mark {}", mark); - byte[] signedMessage = encoderService.encodeToTransactionBytes(rawTransaction, signData, mark); - return Numeric.toHexString(signedMessage); + String transactionDataHashSignedData = Hex.toHexString(signData.encode()); + String signedMessage = null; + try { + signedMessage = TransactionBuilderJniObj.createSignedTransaction(transactionData, + transactionDataHashSignedData, + transactionDataHash, mark); + } catch (JniException e) { + log.error("createSignedTransactionData jni error:", e); + } + log.info("***signMessage cost time***: {}", + Duration.between(nodeStartTime, Instant.now()).toMillis()); + if (StringUtils.isBlank(signedMessage)) { + throw new FrontException(ConstantCode.DATA_SIGN_ERROR); + } + return signedMessage; } @@ -342,18 +370,18 @@ public Object signMessageLocal(ReqSignMessageHash req) { if (web3ApiService.getCryptoSuite(groupId).cryptoTypeConfig == CryptoType.SM_TYPE) { SM2SignatureResult sm2SignatureResult = (SM2SignatureResult) signResult; RspMessageHashSignature rspMessageHashSignature = new RspMessageHashSignature(); - rspMessageHashSignature.setP(Numeric.toHexString(sm2SignatureResult.getPub())); - rspMessageHashSignature.setR(Numeric.toHexString(sm2SignatureResult.getR())); - rspMessageHashSignature.setS(Numeric.toHexString(sm2SignatureResult.getS())); + rspMessageHashSignature.setP(Hex.toHexString(sm2SignatureResult.getPub())); + rspMessageHashSignature.setR(Hex.toHexString(sm2SignatureResult.getR())); + rspMessageHashSignature.setS(Hex.toHexString(sm2SignatureResult.getS())); rspMessageHashSignature.setV((byte) 0); return rspMessageHashSignature; } else { - ECDSASignatureResult sm2SignatureResult = (ECDSASignatureResult) signResult; + ECDSASignatureResult ecdsaSignatureResult = (ECDSASignatureResult) signResult; RspMessageHashSignature rspMessageHashSignature = new RspMessageHashSignature(); rspMessageHashSignature.setP("0x"); - rspMessageHashSignature.setR(Numeric.toHexString(sm2SignatureResult.getR())); - rspMessageHashSignature.setS(Numeric.toHexString(sm2SignatureResult.getS())); - rspMessageHashSignature.setV((byte) (sm2SignatureResult.getV()+27)); + rspMessageHashSignature.setR(Hex.toHexString(ecdsaSignatureResult.getR())); + rspMessageHashSignature.setS(Hex.toHexString(ecdsaSignatureResult.getS())); + rspMessageHashSignature.setV((byte) (ecdsaSignatureResult.getV()+27)); return rspMessageHashSignature; } } @@ -370,25 +398,25 @@ public Object signMessageLocalExternal(ReqSignMessageHash req) { String privateKeyRaw = new String(Base64.getDecoder().decode(rspUserInfo.getPrivateKey())); CryptoKeyPair cryptoKeyPair = web3ApiService.getCryptoSuite(groupId).getKeyPairFactory().createKeyPair(privateKeyRaw); SignatureResult signResult = signMessageHashByType( - org.fisco.bcos.sdk.utils.Numeric.cleanHexPrefix(req.getHash()),cryptoKeyPair, + org.fisco.bcos.sdk.v3.utils.Numeric.cleanHexPrefix(req.getHash()),cryptoKeyPair, web3ApiService.getCryptoSuite(groupId).cryptoTypeConfig ); if (web3ApiService.getCryptoSuite(groupId).cryptoTypeConfig == CryptoType.SM_TYPE) { SM2SignatureResult sm2SignatureResult = (SM2SignatureResult) signResult; RspMessageHashSignature rspMessageHashSignature = new RspMessageHashSignature(); - rspMessageHashSignature.setP(Numeric.toHexString(sm2SignatureResult.getPub())); - rspMessageHashSignature.setR(Numeric.toHexString(sm2SignatureResult.getR())); - rspMessageHashSignature.setS(Numeric.toHexString(sm2SignatureResult.getS())); + rspMessageHashSignature.setP(Hex.toHexString(sm2SignatureResult.getPub())); + rspMessageHashSignature.setR(Hex.toHexString(sm2SignatureResult.getR())); + rspMessageHashSignature.setS(Hex.toHexString(sm2SignatureResult.getS())); rspMessageHashSignature.setV((byte) 0); return rspMessageHashSignature; } else { - ECDSASignatureResult sm2SignatureResult = (ECDSASignatureResult) signResult; + ECDSASignatureResult ecdsaSignatureResult = (ECDSASignatureResult) signResult; RspMessageHashSignature rspMessageHashSignature = new RspMessageHashSignature(); rspMessageHashSignature.setP("0x"); - rspMessageHashSignature.setR(Numeric.toHexString(sm2SignatureResult.getR())); - rspMessageHashSignature.setS(Numeric.toHexString(sm2SignatureResult.getS())); - rspMessageHashSignature.setV((byte) (sm2SignatureResult.getV()+27)); + rspMessageHashSignature.setR(Hex.toHexString(ecdsaSignatureResult.getR())); + rspMessageHashSignature.setS(Hex.toHexString(ecdsaSignatureResult.getS())); + rspMessageHashSignature.setV((byte) (ecdsaSignatureResult.getV()+27)); return rspMessageHashSignature; } } @@ -421,7 +449,7 @@ public String createRawTxEncoded(boolean isLocal, String user, public String encodeFunction2Str(String abiStr, String funcName, List funcParam, String groupId, boolean isWasm) { byte[] encodeFunctionByteArr = this.encodeFunction2ByteArr(abiStr, funcName, funcParam, groupId, isWasm); - return Numeric.toHexString(encodeFunctionByteArr); + return Hex.toHexString(encodeFunctionByteArr); } /** * get encoded function for /trans/query-transaction @@ -437,11 +465,11 @@ public byte[] encodeFunction2ByteArr(String abiStr, String funcName, List chainIdAndGroupId = TransactionProcessorFactory.getChainIdAndGroupId(client); - TransactionBuilderInterface transactionBuilder = new TransactionBuilderService(client); - TransactionData rawTransaction = transactionBuilder.createTransaction(contractAddress, - encodeFunction, chainIdAndGroupId.getLeft(), - chainIdAndGroupId.getRight()); + long transactionData = 0L; + String encodedTransaction = ""; + String transactionDataHash = ""; + try { + transactionData = TransactionBuilderJniObj + .createTransactionData(String.valueOf(groupId), chainIdAndGroupId.getLeft(), + contractAddress, Hex.toHexString(data), "", client.getBlockLimit().longValue()); + encodedTransaction = TransactionBuilderJniObj.encodeTransactionData(transactionData); + transactionDataHash = client.getCryptoSuite().hash(encodedTransaction); +// transactionDataHash = TransactionBuilderJniObj.calcTransactionDataHash(client.getCryptoType(), transactionData); + } catch (JniException e) { + log.error("createTransactionData jni error ", e); + } + if (transactionData == 0L + || StringUtils.isBlank(encodedTransaction) + || StringUtils.isBlank(transactionDataHash)) { + log.error("signMessage encodedTransaction:{}|{}|{}", + transactionData, encodedTransaction, transactionDataHash); + throw new FrontException(ConstantCode.ENCODE_TX_JNI_ERROR); + } - TransactionEncoderService encoderService = new TransactionEncoderService(client.getCryptoSuite()); - byte[] encodedTransaction = encoderService.encode(rawTransaction); // if user not null: sign, else, not sign if (StringUtils.isBlank(user)) { // return unsigned raw tx encoded str - String unsignedResultStr = Numeric.toHexString(encodedTransaction); + String unsignedResultStr = encodedTransaction; log.info("createRawTxEncoded unsignedResultStr:{}", unsignedResultStr); return unsignedResultStr; } else { log.info("createRawTxEncoded use key of address [{}] to sign", user); // hash encoded, to sign locally - byte[] hashMessage = client.getCryptoSuite().hash(encodedTransaction); - String hashMessageStr = Numeric.toHexString(hashMessage); + String hashMessageStr = client.getCryptoSuite().hash(encodedTransaction); log.info("createRawTxEncoded encoded tx of hex str:{}", hashMessageStr); // if local, sign locally log.info("createRawTxEncoded isLocal:{}", isLocal); - String signResultStr; + String signResultStr = null; if (isLocal) { CryptoKeyPair cryptoKeyPair = this.getCredentials(false, user, groupId); SignatureResult signData = signMessageHashByType(hashMessageStr, cryptoKeyPair, client.getCryptoSuite().cryptoTypeConfig); // encode again - byte[] signedMessage = encoderService.encodeToTransactionBytes(rawTransaction, signData, client.isWASM() ? USE_WASM : USE_SOLIDITY); - signResultStr = Numeric.toHexString(signedMessage); + String transactionDataHashSignedData = signData.convertToString(); + try { + signResultStr = TransactionBuilderJniObj.createSignedTransaction(transactionData, + transactionDataHashSignedData, + transactionDataHash, client.isWASM() ? USE_WASM : USE_SOLIDITY); + } catch (JniException e) { + log.error("createSignedTransactionData jni error:", e); + } } else { // sign by webase-sign // convert encoded to hex string (no need to hash then toHex) - hashMessageStr = Numeric.toHexString(encodedTransaction); - EncodeInfo encodeInfo = new EncodeInfo(user, hashMessageStr); + EncodeInfo encodeInfo = new EncodeInfo(user, encodedTransaction); String signDataStr = keyStoreService.getSignData(encodeInfo); SignatureResult signData = CommonUtils.stringToSignatureData(signDataStr, client.getCryptoSuite().cryptoTypeConfig); - byte[] signedMessage = encoderService.encodeToTransactionBytes(rawTransaction, signData, client.isWASM() ? USE_WASM : USE_SOLIDITY); - signResultStr = Numeric.toHexString(signedMessage); + // encode again + String transactionDataHashSignedData = signData.convertToString(); + try { + signResultStr = TransactionBuilderJniObj.createSignedTransaction(transactionData, + transactionDataHashSignedData, + transactionDataHash, client.isWASM() ? USE_WASM : USE_SOLIDITY); + } catch (JniException e) { + log.error("createSignedTransactionData jni error:", e); + } + } + log.info("***signMessage cost time***: {}", + Duration.between(startTime, Instant.now()).toMillis()); + if (StringUtils.isBlank(signResultStr)) { + throw new FrontException(ConstantCode.ENCODE_TX_JNI_ERROR); } log.info("createRawTxEncoded signResultStr:{}", signResultStr); return signResultStr; } - // trans hash is web3ApiService.getCryptoSuite(groupId).hash(signedStr) } private ABIDefinition getABIDefinition(String abiStr, String functionName, String groupId) { @@ -544,7 +602,7 @@ public List handleCall(String groupId, String userAddress, String contract String parseResultStr = parseResult.getValue1() ? parseResult.getValue2() : "call contract error of status" + callOutput.getStatus(); throw new FrontException(ConstantCode.CALL_CONTRACT_ERROR.getCode(), parseResultStr); } else { - ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), client.isWASM()); + ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), client.isWASM()); try { log.debug("========= callOutput.getOutput():{}", callOutput.getOutput()); // [ @@ -555,10 +613,10 @@ public List handleCall(String groupId, String userAddress, String contract //] List typeList = abiCodec.decodeMethodAndGetOutputObject(abiStr, funcName, callOutput.getOutput()); // bytes类型转十六进制 - // todo output is byte[] or string Numeric.hexStringToByteArray + // todo output is byte[] or string Hex.decode log.info("call contract res:{}", JsonUtils.objToString(typeList)); return typeList; - } catch (ABICodecException e) { + } catch (ContractCodecException e) { log.error("handleCall decode call output fail:[]", e); throw new FrontException(ConstantCode.CONTRACT_TYPE_DECODED_ERROR); } @@ -613,12 +671,11 @@ public TransactionReceipt handleTransaction(Client client, String signUserId, St /** * sign by - * @param encodedTransaction + * @param encodedDataStr * @param signUserId * @return */ - public SignatureResult requestSignForSign(byte[] encodedTransaction, String signUserId, String groupId) { - String encodedDataStr = Numeric.toHexString(encodedTransaction); + public SignatureResult requestSignForSign(String encodedDataStr, String signUserId, String groupId) { EncodeInfo encodeInfo = new EncodeInfo(); encodeInfo.setSignUserId(signUserId); encodeInfo.setEncodedDataStr(encodedDataStr); @@ -671,7 +728,7 @@ private void validFuncParam(String contractAbiStr, String funcName, List if (!type.endsWith("[]")) { // update funcParam String bytesHexStr = (String) (funcParam.get(i)); - byte[] inputArray = Numeric.hexStringToByteArray(bytesHexStr); + byte[] inputArray = Hex.decode(bytesHexStr); // bytesN: bytes1, bytes32 etc. if (type.length() > "bytes".length()) { int bytesNLength = Integer.parseInt(type.substring("bytes".length())); @@ -688,7 +745,7 @@ private void validFuncParam(String contractAbiStr, String funcName, List List bytesArray = new ArrayList<>(hexStrArray.size()); for (int j = 0; j < hexStrArray.size(); j++) { String bytesHexStr = hexStrArray.get(j); - byte[] inputArray = Numeric.hexStringToByteArray(bytesHexStr); + byte[] inputArray = Hex.decode(bytesHexStr); // check: bytesN: bytes1, bytes32 etc. if (type.length() > "bytes[]".length()) { // bytes32[] => 32[] diff --git a/src/main/java/com/webank/webase/front/transaction/entity/ContractFunction.java b/src/main/java/com/webank/webase/front/transaction/entity/ContractFunction.java index 2693303e4..e66594a65 100644 --- a/src/main/java/com/webank/webase/front/transaction/entity/ContractFunction.java +++ b/src/main/java/com/webank/webase/front/transaction/entity/ContractFunction.java @@ -5,8 +5,8 @@ import lombok.experimental.Accessors; import java.util.List; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; /** * abi's function information. diff --git a/src/main/java/com/webank/webase/front/util/AbiTypes.java b/src/main/java/com/webank/webase/front/util/AbiTypes.java index b76a366af..00d3de44d 100644 --- a/src/main/java/com/webank/webase/front/util/AbiTypes.java +++ b/src/main/java/com/webank/webase/front/util/AbiTypes.java @@ -15,9 +15,9 @@ */ package com.webank.webase.front.util; -import org.fisco.bcos.sdk.codec.datatypes.*; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.generated.*; +import org.fisco.bcos.sdk.v3.codec.datatypes.*; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.*; /** * DataTypes for abi in web3j @@ -75,7 +75,7 @@ public static boolean invalidInt(String type) { public static Class getType(String type) { switch (type) { case "address": - return org.fisco.bcos.sdk.codec.datatypes.Address.class; + return org.fisco.bcos.sdk.v3.codec.datatypes.Address.class; case "bool": return Bool.class; case "string": diff --git a/src/main/java/com/webank/webase/front/util/CommonUtils.java b/src/main/java/com/webank/webase/front/util/CommonUtils.java index 677842db6..9b950214f 100644 --- a/src/main/java/com/webank/webase/front/util/CommonUtils.java +++ b/src/main/java/com/webank/webase/front/util/CommonUtils.java @@ -47,15 +47,16 @@ import java.util.zip.ZipOutputStream; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes32; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.crypto.signature.ECDSASignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SM2SignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SignatureResult; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.signature.ECDSASignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SM2SignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -84,7 +85,7 @@ private CommonUtils() { * @return */ public static SignatureResult stringToSignatureData(String signatureData, int encryptType) { - byte[] byteArr = Numeric.hexStringToByteArray(signatureData); + byte[] byteArr = Hex.decode(signatureData); // 从1开始,因为此处webase-sign返回的byteArr第0位是v byte signV = byteArr[0]; byte[] signR = new byte[32]; @@ -125,7 +126,7 @@ public static String signatureDataToString(SM2SignatureResult signatureData) { signatureData.getS().length + signatureData.getR().length + 1, signatureData.getPub().length); - return Numeric.toHexString(byteArr, 0, byteArr.length, false); + return Hex.toHexString(byteArr); } public static String signatureDataToString(ECDSASignatureResult signatureData) { @@ -135,7 +136,7 @@ public static String signatureDataToString(ECDSASignatureResult signatureData) { System.arraycopy(signatureData.getR(), 0, byteArr, 1, signatureData.getR().length); System.arraycopy(signatureData.getS(), 0, byteArr, signatureData.getR().length + 1, signatureData.getS().length); - return Numeric.toHexString(byteArr, 0, byteArr.length, false); + return Hex.toHexString(byteArr); } /** @@ -629,14 +630,14 @@ public static Bytes32 utf8StringToBytes32(String utf8String) { } public static Bytes32 hexStrToBytes32(String hexStr) { - byte[] byteValue = Numeric.hexStringToByteArray(hexStr); + byte[] byteValue = Hex.decode(hexStr); byte[] byteValueLen32 = new byte[32]; System.arraycopy(byteValue, 0, byteValueLen32, 0, byteValue.length); return new Bytes32(byteValueLen32); } public static String utf8StringToHex(String utf8String) { - return Numeric.toHexStringNoPrefix(utf8String.getBytes(StandardCharsets.UTF_8)); + return Hex.toHexString(utf8String.getBytes(StandardCharsets.UTF_8)); } private static boolean isHexNumber(byte value) { diff --git a/src/main/java/com/webank/webase/front/util/ContractAbiUtil.java b/src/main/java/com/webank/webase/front/util/ContractAbiUtil.java index cfd4c2dbd..6aa201739 100644 --- a/src/main/java/com/webank/webase/front/util/ContractAbiUtil.java +++ b/src/main/java/com/webank/webase/front/util/ContractAbiUtil.java @@ -35,13 +35,13 @@ import java.util.regex.Pattern; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.datatypes.DynamicArray; -import org.fisco.bcos.sdk.codec.datatypes.StaticArray; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition.NamedType; -import org.fisco.bcos.sdk.utils.ObjectMapperFactory; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.StaticArray; +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.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition.NamedType; +import org.fisco.bcos.sdk.v3.utils.ObjectMapperFactory; /** * ContractAbiUtil. @@ -397,7 +397,7 @@ static TypeName buildTypeName(String typeDeclaration) { String type = trimStorageDeclaration(typeDeclaration); Matcher matcher = PATTERN.matcher(type); if (matcher.find()) { - Class baseType = org.fisco.bcos.sdk.codec.datatypes.AbiTypes + Class baseType = org.fisco.bcos.sdk.v3.codec.datatypes.AbiTypes .getType(matcher.group(1)); String firstArrayDimension = matcher.group(2); String secondArrayDimension = matcher.group(3); diff --git a/src/main/java/com/webank/webase/front/util/ContractTypeUtil.java b/src/main/java/com/webank/webase/front/util/ContractTypeUtil.java index 2457d6e24..5b3387a12 100644 --- a/src/main/java/com/webank/webase/front/util/ContractTypeUtil.java +++ b/src/main/java/com/webank/webase/front/util/ContractTypeUtil.java @@ -19,19 +19,19 @@ import java.lang.reflect.InvocationTargetException; import java.math.BigInteger; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.datatypes.Address; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.datatypes.Bool; -import org.fisco.bcos.sdk.codec.datatypes.Bytes; -import org.fisco.bcos.sdk.codec.datatypes.BytesType; -import org.fisco.bcos.sdk.codec.datatypes.DynamicArray; -import org.fisco.bcos.sdk.codec.datatypes.DynamicBytes; -import org.fisco.bcos.sdk.codec.datatypes.NumericType; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.Utf8String; -import org.fisco.bcos.sdk.codec.datatypes.generated.*; -import org.fisco.bcos.sdk.utils.Hex; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bytes; +import org.fisco.bcos.sdk.v3.codec.datatypes.BytesType; +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.NumericType; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.*; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; /** * ContractTypeUtil. @@ -51,8 +51,8 @@ public class ContractTypeUtil { public static T generateClassFromInput(String input, Class type) throws FrontException { try { - if (org.fisco.bcos.sdk.codec.datatypes.Address.class.isAssignableFrom(type)) { - return (T) new org.fisco.bcos.sdk.codec.datatypes.Address(input); + if (org.fisco.bcos.sdk.v3.codec.datatypes.Address.class.isAssignableFrom(type)) { + return (T) new org.fisco.bcos.sdk.v3.codec.datatypes.Address(input); } else if (NumericType.class.isAssignableFrom(type)) { return (T) encodeNumeric(input, (Class) type); } else if (Bool.class.isAssignableFrom(type)) { @@ -62,7 +62,7 @@ public static T generateClassFromInput(String input, Class t } else if (Bytes.class.isAssignableFrom(type)) { return (T) encodeBytes(input, (Class) type); } else if (DynamicBytes.class.isAssignableFrom(type)) { - return (T) new DynamicBytes(Numeric.hexStringToByteArray(input)); + return (T) new DynamicBytes(Hex.decode(input)); } else { throw new FrontException(ConstantCode.CONTRACT_TYPE_ENCODED_ERROR.getCode(), String.format("type:%s unsupported encoding", type.getName())); @@ -84,7 +84,7 @@ public static T generateClassFromInput(String input, Class t */ public static Object decodeResult(Type result, Class type) throws FrontException { try { - if (org.fisco.bcos.sdk.codec.datatypes.Address.class.isAssignableFrom(type)) { + if (org.fisco.bcos.sdk.v3.codec.datatypes.Address.class.isAssignableFrom(type)) { return result.toString(); } else if (NumericType.class.isAssignableFrom(type)) { return result.getValue(); @@ -95,7 +95,7 @@ public static Object decodeResult(Type result, Class type) throws FrontEx } else if (Bytes.class.isAssignableFrom(type)) { return decodeBytes((Bytes) result); } else if (DynamicBytes.class.isAssignableFrom(type)) { - return "0x" + Numeric.toHexString((byte[]) result.getValue()); + return "0x" + Hex.toHexString((byte[]) result.getValue()); } else { throw new FrontException(ConstantCode.CONTRACT_TYPE_DECODED_ERROR.getCode(), String.format("type:%s unsupported decoding", type.getName())); @@ -123,7 +123,7 @@ static T encodeNumeric(String input, Class type) static T encodeBytes(String input, Class type) throws FrontException { try { - byte[] bytes = Numeric.hexStringToByteArray(input); + byte[] bytes = Hex.decode(input); return type.getConstructor(byte[].class).newInstance(bytes); } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { @@ -145,8 +145,8 @@ static T encodeBytes(String input, Class type) throws Front public static T encodeString(String input, Class type) throws FrontException { try { - if (org.fisco.bcos.sdk.codec.datatypes.Address.class.isAssignableFrom(type)) { - return (T) new org.fisco.bcos.sdk.codec.datatypes.Address(input); + if (org.fisco.bcos.sdk.v3.codec.datatypes.Address.class.isAssignableFrom(type)) { + return (T) new org.fisco.bcos.sdk.v3.codec.datatypes.Address(input); } else if (NumericType.class.isAssignableFrom(type)) { return (T) encodeNumeric(input, (Class) type); } else if (Bool.class.isAssignableFrom(type)) { @@ -156,7 +156,7 @@ public static T encodeString(String input, Class type) } else if (Bytes.class.isAssignableFrom(type)) { return (T) encodeBytes(input, (Class) type); } else if (DynamicBytes.class.isAssignableFrom(type)) { - return (T) new DynamicBytes(Numeric.hexStringToByteArray(input)); + return (T) new DynamicBytes(Hex.decode(input)); } else { throw new FrontException(ConstantCode.CONTRACT_TYPE_ENCODED_ERROR.getCode(), String.format("type:%s unsupported encoding", type.getName())); @@ -192,7 +192,7 @@ public static String decodeBytes(byte[] data) throws FrontException { static String decodeBytes(BytesType bytesType) { byte[] value = bytesType.getValue(); - return Numeric.toHexString(value); + return Hex.toHexString(value); } /** @@ -221,7 +221,7 @@ public static int searchByte(byte[] data, byte value) { public static TypeReference getArrayType(String type) throws FrontException { switch (type) { case "address": - return new TypeReference>() {}; + return new TypeReference>() {}; case "bool": return new TypeReference>() {}; case "string": diff --git a/src/main/java/com/webank/webase/front/util/PrecompiledUtils.java b/src/main/java/com/webank/webase/front/util/PrecompiledUtils.java index b8aa5c6f4..56fac1a64 100644 --- a/src/main/java/com/webank/webase/front/util/PrecompiledUtils.java +++ b/src/main/java/com/webank/webase/front/util/PrecompiledUtils.java @@ -15,12 +15,8 @@ */ package com.webank.webase.front.util; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; -import java.util.Map; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.model.PrecompiledConstant; +import org.fisco.bcos.sdk.v3.model.PrecompiledConstant; /** * Constants and tool function related with Precompiled module @@ -48,13 +44,10 @@ public class PrecompiledUtils { public static int USER_TABLE_FIELD_NAME_MAX_LENGTH = 64; public static int USER_TABLE_FIELD_VALUE_MAX_LENGTH = 16 * 1024 * 1024 - 1; - public static boolean checkVersion(String version) { if (StringUtils.isBlank(version)) { return false; - }else if (version.length() > PrecompiledConstant.CNS_MAX_VERSION_LENGTH) { // length exceeds - return false; }else if (!version.matches("^[A-Za-z0-9.]+$")) { // check version's character return false; }else { diff --git a/src/main/java/com/webank/webase/front/util/RabbitMQUtils.java b/src/main/java/com/webank/webase/front/util/RabbitMQUtils.java index 84f1fb12d..1fe77a5ea 100644 --- a/src/main/java/com/webank/webase/front/util/RabbitMQUtils.java +++ b/src/main/java/com/webank/webase/front/util/RabbitMQUtils.java @@ -28,10 +28,11 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import org.fisco.bcos.sdk.codec.abi.tools.TopicTools; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.eventsub.EventSubParams; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.codec.abi.tools.TopicTools; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.eventsub.EventSubParams; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; @@ -176,10 +177,10 @@ private static String getIndexedParamTypeSig(IndexedParamType paramType, TopicTo return tool.addressToTopic(value); } else if (type.contains("bytes")) { if ("bytes".equals(type)) { - return tool.bytesToTopic(Numeric.hexStringToByteArray(value)); + return tool.bytesToTopic(Hex.decode(value)); } else { // bytesN - return tool.byteNToTopic(Numeric.hexStringToByteArray(value)); + return tool.byteNToTopic(Hex.decode(value)); } } else { return null; diff --git a/src/main/java/com/webank/webase/front/util/StaticArrayReference.java b/src/main/java/com/webank/webase/front/util/StaticArrayReference.java index 5aeb67ddf..e926b469c 100644 --- a/src/main/java/com/webank/webase/front/util/StaticArrayReference.java +++ b/src/main/java/com/webank/webase/front/util/StaticArrayReference.java @@ -2,77 +2,77 @@ import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.exception.FrontException; -import org.fisco.bcos.sdk.codec.datatypes.Address; -import org.fisco.bcos.sdk.codec.datatypes.Bool; -import org.fisco.bcos.sdk.codec.datatypes.DynamicBytes; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.datatypes.Utf8String; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes1; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes10; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes11; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes12; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes13; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes14; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes15; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes16; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes17; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes18; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes19; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes2; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes20; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes21; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes22; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes23; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes24; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes25; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes26; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes27; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes28; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes29; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes3; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes30; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes31; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes32; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes4; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes5; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes6; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes7; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes8; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes9; -import org.fisco.bcos.sdk.codec.datatypes.generated.Int256; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray1; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray10; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray11; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray12; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray13; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray14; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray15; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray16; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray17; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray18; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray19; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray2; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray20; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray21; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray22; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray23; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray24; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray25; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray26; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray27; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray28; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray29; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray3; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray30; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray31; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray32; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray4; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray5; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray6; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray7; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray8; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray9; -import org.fisco.bcos.sdk.codec.datatypes.generated.Uint256; +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.DynamicBytes; +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.Bytes1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes10; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes11; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes12; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes13; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes14; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes15; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes16; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes17; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes18; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes19; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes20; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes21; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes22; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes23; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes24; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes25; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes26; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes27; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes28; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes29; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes3; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes30; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes31; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes5; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes6; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes7; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes9; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int256; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray10; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray11; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray12; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray13; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray14; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray15; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray16; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray17; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray18; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray19; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray20; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray21; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray22; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray23; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray24; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray25; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray26; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray27; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray28; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray29; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray3; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray30; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray31; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray4; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray5; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray6; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray7; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray9; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256; public class StaticArrayReference { diff --git a/src/main/java/com/webank/webase/front/web3api/Web3ApiController.java b/src/main/java/com/webank/webase/front/web3api/Web3ApiController.java index 5c6c3b294..87e60eeca 100644 --- a/src/main/java/com/webank/webase/front/web3api/Web3ApiController.java +++ b/src/main/java/com/webank/webase/front/web3api/Web3ApiController.java @@ -21,16 +21,16 @@ import io.swagger.annotations.ApiOperation; import java.math.BigInteger; import java.util.List; -import org.fisco.bcos.sdk.client.protocol.model.JsonTransactionResponse; -import org.fisco.bcos.sdk.client.protocol.response.BcosBlock; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupInfo.GroupInfo; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupNodeInfo.GroupNodeInfo; -import org.fisco.bcos.sdk.client.protocol.response.ConsensusStatus.ConsensusStatusInfo; -import org.fisco.bcos.sdk.client.protocol.response.Peers; -import org.fisco.bcos.sdk.client.protocol.response.SealerList.Sealer; -import org.fisco.bcos.sdk.client.protocol.response.SyncStatus.SyncStatusInfo; -import org.fisco.bcos.sdk.client.protocol.response.TotalTransactionCount.TransactionCountInfo; -import org.fisco.bcos.sdk.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.client.protocol.model.JsonTransactionResponse; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosBlock; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupInfo.GroupInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupNodeInfo.GroupNodeInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.ConsensusStatus.ConsensusStatusInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.Peers; +import org.fisco.bcos.sdk.v3.client.protocol.response.SealerList.Sealer; +import org.fisco.bcos.sdk.v3.client.protocol.response.SyncStatus.SyncStatusInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.TotalTransactionCount.TransactionCountInfo; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; diff --git a/src/main/java/com/webank/webase/front/web3api/Web3ApiService.java b/src/main/java/com/webank/webase/front/web3api/Web3ApiService.java index d54a4f21a..87ea61260 100644 --- a/src/main/java/com/webank/webase/front/web3api/Web3ApiService.java +++ b/src/main/java/com/webank/webase/front/web3api/Web3ApiService.java @@ -24,26 +24,26 @@ import java.time.Instant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.client.exceptions.ClientException; -import org.fisco.bcos.sdk.client.protocol.model.JsonTransactionResponse; -import org.fisco.bcos.sdk.client.protocol.response.BcosBlock; -import org.fisco.bcos.sdk.client.protocol.response.BcosBlock.Block; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupInfo.GroupInfo; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupNodeInfo.GroupNodeInfo; -import org.fisco.bcos.sdk.client.protocol.response.ConsensusStatus.ConsensusStatusInfo; -import org.fisco.bcos.sdk.client.protocol.response.GroupPeers; -import org.fisco.bcos.sdk.client.protocol.response.Peers; -import org.fisco.bcos.sdk.client.protocol.response.SealerList.Sealer; -import org.fisco.bcos.sdk.client.protocol.response.SyncStatus.PeersInfo; -import org.fisco.bcos.sdk.client.protocol.response.SyncStatus.SyncStatusInfo; -import org.fisco.bcos.sdk.client.protocol.response.TotalTransactionCount; -import org.fisco.bcos.sdk.client.protocol.response.TotalTransactionCount.TransactionCountInfo; -import org.fisco.bcos.sdk.config.exceptions.ConfigException; -import org.fisco.bcos.sdk.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.client.exceptions.ClientException; +import org.fisco.bcos.sdk.v3.client.protocol.model.JsonTransactionResponse; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosBlock; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosBlock.Block; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupInfo.GroupInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupNodeInfo.GroupNodeInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.ConsensusStatus.ConsensusStatusInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.GroupPeers; +import org.fisco.bcos.sdk.v3.client.protocol.response.Peers; +import org.fisco.bcos.sdk.v3.client.protocol.response.SealerList.Sealer; +import org.fisco.bcos.sdk.v3.client.protocol.response.SyncStatus.PeersInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.SyncStatus.SyncStatusInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.TotalTransactionCount; +import org.fisco.bcos.sdk.v3.client.protocol.response.TotalTransactionCount.TransactionCountInfo; +import org.fisco.bcos.sdk.v3.config.exceptions.ConfigException; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; import org.fisco.bcos.sdk.jni.common.JniException; -import org.fisco.bcos.sdk.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/webank/webase/front/web3api/entity/TransactionInfo.java b/src/main/java/com/webank/webase/front/web3api/entity/TransactionInfo.java index f5ef72e99..3d37acd91 100644 --- a/src/main/java/com/webank/webase/front/web3api/entity/TransactionInfo.java +++ b/src/main/java/com/webank/webase/front/web3api/entity/TransactionInfo.java @@ -19,7 +19,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; -import org.fisco.bcos.sdk.client.protocol.model.JsonTransactionResponse; +import org.fisco.bcos.sdk.v3.client.protocol.model.JsonTransactionResponse; import org.springframework.beans.BeanUtils; @Data diff --git a/src/main/resources/application-docker.yml b/src/main/resources/application-docker.yml index b65730391..e5de2f7fb 100644 --- a/src/main/resources/application-docker.yml +++ b/src/main/resources/application-docker.yml @@ -1,5 +1,5 @@ # server version -version: lab-rc2 +version: v3.0.0 server: port: ${SERVER_PORT:5002} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d480eb169..df33e5c88 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,5 +1,5 @@ # server version -version: lab-rc2 +version: v3.0.0 server: port: 5002 diff --git a/src/main/resources/clog.ini b/src/main/resources/clog.ini index d6647b9d4..18db93bc6 100644 --- a/src/main/resources/clog.ini +++ b/src/main/resources/clog.ini @@ -4,6 +4,6 @@ ; network statistics interval, unit is second, default is 60s stat_flush_interval=60 ; info debug trace - level=DEBUG + level=INFO ; MB max_log_file_size=200 diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index b13c50a83..aa8992186 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -15,7 +15,7 @@ vertical-align: -0.15em; fill: currentColor; overflow: hidden; - }