diff --git a/.github/workflows/install_acbsdk.sh b/.github/workflows/install_acbsdk.sh index 60dbdae..168d527 100644 --- a/.github/workflows/install_acbsdk.sh +++ b/.github/workflows/install_acbsdk.sh @@ -18,26 +18,8 @@ CURR_DIR="$(cd `dirname $0`; pwd)" -echo "install BID SDK ..." -git clone -b release/1.0.0 https://github.com/caict-4iot-dev/BID-SDK-JAVA.git -cd BID-SDK-JAVA/BID-SDK -mvn install -Dmaven.test.skip=true -cd - -git clone -b release/1.0.2 https://github.com/caict-4iot-dev/BIF-Core-SDK.git -cd BIF-Core-SDK/bif-chain-sdk -mvn install -Dmaven.test.skip=true -cd - -echo "install BID SDK finished" - echo "install ACB SDK ..." -git clone -b feat/bcdns_support https://github.com/AntChainOpenLabs/AntChainBridgePluginSDK.git -cd AntChainBridgePluginSDK/antchain-bridge-commons -mvn install -Dmaven.test.skip=true -cd - -cd AntChainBridgePluginSDK/antchain-bridge-spi -mvn install -Dmaven.test.skip=true -cd - -cd AntChainBridgePluginSDK/antchain-bridge-bcdns +git clone -b dev/v0.2.0-SNAPSHOT https://github.com/AntChainOpenLabs/AntChainBridgePluginSDK.git +cd AntChainBridgePluginSDK mvn install -Dmaven.test.skip=true -cd - echo "install ACB SDK finished" \ No newline at end of file diff --git a/r-bootstrap/desc_tar.xml b/r-bootstrap/desc_tar.xml index 450fcce..37a1eb5 100644 --- a/r-bootstrap/desc_tar.xml +++ b/r-bootstrap/desc_tar.xml @@ -27,6 +27,7 @@ ${file.separator}config application.yml + db${file.separator}ddl.sql diff --git a/r-bootstrap/src/test/java/com/alipay/antchain/bridge/relayer/bootstrap/manager/BCDNSManagerTest.java b/r-bootstrap/src/test/java/com/alipay/antchain/bridge/relayer/bootstrap/manager/BCDNSManagerTest.java index 2097de4..8f7328c 100644 --- a/r-bootstrap/src/test/java/com/alipay/antchain/bridge/relayer/bootstrap/manager/BCDNSManagerTest.java +++ b/r-bootstrap/src/test/java/com/alipay/antchain/bridge/relayer/bootstrap/manager/BCDNSManagerTest.java @@ -177,8 +177,8 @@ public void testQueryAndSaveDomainCertificateFromBCDNS() { new QueryDomainNameCertificateResponse(true, antchainDotCommCert) ); - AbstractCrossChainCertificate certificate = bcdnsManager.queryAndSaveDomainCertificateFromBCDNS( - antChainDotComDomain, CrossChainDomain.ROOT_DOMAIN_SPACE + AbstractCrossChainCertificate certificate = bcdnsManager.queryDomainCertificateFromBCDNS( + antChainDotComDomain, CrossChainDomain.ROOT_DOMAIN_SPACE, true ); Assert.assertNotNull(certificate); Assert.assertEquals( diff --git a/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/groovyshell/command/BCDNSManagerCmdNamespace.java b/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/groovyshell/command/BCDNSManagerCmdNamespace.java index cc3fd97..1e81d4d 100644 --- a/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/groovyshell/command/BCDNSManagerCmdNamespace.java +++ b/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/groovyshell/command/BCDNSManagerCmdNamespace.java @@ -91,6 +91,12 @@ Object fetchDomainNameCertFromBCDNS(@ArgsConstraint(name = "domain") String doma return queryAPI("fetchDomainNameCertFromBCDNS", domain, domainSpace); } + Object queryDomainNameCertFromBCDNS(@ArgsConstraint(name = "domain") String domain, + @ArgsConstraint(name = "domainSpace") String domainSpace) { + + return queryAPI("queryDomainNameCertFromBCDNS", domain, domainSpace); + } + Object registerDomainRouter(@ArgsConstraint(name = "domain") String domain) { return queryAPI("registerDomainRouter", domain); diff --git a/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/groovyshell/command/BlockchainManagerCmdNamespace.java b/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/groovyshell/command/BlockchainManagerCmdNamespace.java index ee4b4fe..7be5dcf 100644 --- a/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/groovyshell/command/BlockchainManagerCmdNamespace.java +++ b/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/groovyshell/command/BlockchainManagerCmdNamespace.java @@ -42,7 +42,13 @@ Object getBlockchain(@ArgsConstraint(name = "product") String product, return queryAPI("getBlockchain", product, blockchainId); } - Object addHeteroBlockchainAnchor( + Object getBlockchainContracts(@ArgsConstraint(name = "product") String product, + @ArgsConstraint(name = "blockchainId") String blockchainId) { + + return queryAPI("getBlockchainContracts", product, blockchainId); + } + + Object addBlockchainAnchor( @ArgsConstraint(name = "product") String product, @ArgsConstraint(name = "blockchainId") String blockchainId, @ArgsConstraint(name = "domain") String domain, @@ -53,7 +59,7 @@ Object addHeteroBlockchainAnchor( ) { return queryAPI( - "addHeteroBlockchainAnchor", + "addBlockchainAnchor", product, blockchainId, domain, pluginServerId, alias, desc, heteroConfFilePath ); } diff --git a/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/shell/Shell.java b/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/shell/Shell.java index b56466f..05fedb6 100644 --- a/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/shell/Shell.java +++ b/r-cli/src/main/java/com/alipay/antchain/bridge/relayer/cli/shell/Shell.java @@ -37,23 +37,19 @@ public class Shell { - private static String PROMPT = "\033[0;37mrelayer> \033[0m"; + private static final String PROMPT = "\n\033[0;37mrelayer> \033[0m"; - private NamespaceManager namespaceManager; - - private Terminal terminal; + private final NamespaceManager namespaceManager; private GlLineReader reader; - private Map reservedWord = new HashMap<>(); - - private AtomicBoolean loopRunning = new AtomicBoolean(false); + private final Map reservedWord = new HashMap<>(); - private ReentrantLock shellLock = new ReentrantLock(); + private final AtomicBoolean loopRunning = new AtomicBoolean(false); - private PromptCompleter completer; + private final ReentrantLock shellLock = new ReentrantLock(); - private ShellProvider shellProvider; + private final ShellProvider shellProvider; public final static Runtime Runtime = new Runtime(); @@ -67,8 +63,7 @@ public Shell(ShellProvider shellProvider, PromptCompleter completer, GrpcClient this.shellProvider = shellProvider; this.namespaceManager = namespaceManager; - this.completer = completer; - this.reservedWord.keySet().forEach(reservedWord -> this.completer.addReservedWord(reservedWord)); + this.reservedWord.keySet().forEach(completer::addReservedWord); reader.setCompleter(completer); @@ -78,6 +73,7 @@ public Shell(ShellProvider shellProvider, PromptCompleter completer, GrpcClient void init() { // init term + Terminal terminal; try { terminal = TerminalBuilder.builder() .system(true) diff --git a/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/bcdns/BCDNSManager.java b/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/bcdns/BCDNSManager.java index 9180347..c8ec06c 100644 --- a/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/bcdns/BCDNSManager.java +++ b/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/bcdns/BCDNSManager.java @@ -467,7 +467,7 @@ public String applyDomainCertificate(String domainSpace, String domain, ObjectId } @Override - public AbstractCrossChainCertificate queryAndSaveDomainCertificateFromBCDNS(String domain, String domainSpace) { + public AbstractCrossChainCertificate queryDomainCertificateFromBCDNS(String domain, String domainSpace, boolean saveOrNot) { log.info("try to get domain cert of {} from BCDNS {}", domain, domainSpace); try { IBlockChainDomainNameService bcdnsService = getBCDNSService(domainSpace); @@ -499,7 +499,9 @@ public AbstractCrossChainCertificate queryAndSaveDomainCertificateFromBCDNS(Stri ) ); } - blockchainRepository.saveDomainCert(new DomainCertWrapper(response.getCertificate())); + if (saveOrNot) { + blockchainRepository.saveDomainCert(new DomainCertWrapper(response.getCertificate())); + } return response.getCertificate(); } return null; diff --git a/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/bcdns/IBCDNSManager.java b/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/bcdns/IBCDNSManager.java index 58e1c92..16caef6 100644 --- a/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/bcdns/IBCDNSManager.java +++ b/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/bcdns/IBCDNSManager.java @@ -69,7 +69,7 @@ boolean validateCrossChainCertificate( String applyDomainCertificate(String domainSpace, String domain, ObjectIdentity applicantOid, byte[] rawSubject); - AbstractCrossChainCertificate queryAndSaveDomainCertificateFromBCDNS(String domain, String domainSpace); + AbstractCrossChainCertificate queryDomainCertificateFromBCDNS(String domain, String domainSpace, boolean saveOrNot); List getAllApplyingDomainCertApplications(); diff --git a/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/blockchain/BlockchainManager.java b/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/blockchain/BlockchainManager.java index 44cc59f..8caaf95 100644 --- a/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/blockchain/BlockchainManager.java +++ b/r-core/src/main/java/com/alipay/antchain/bridge/relayer/core/manager/blockchain/BlockchainManager.java @@ -294,6 +294,9 @@ public void startBlockchainAnchor(String product, String blockchainId) { } blockchainMeta.getProperties().setAnchorRuntimeStatus(BlockchainStateEnum.RUNNING); + if (ObjectUtil.isNull(blockchainMeta.getProperties().getAmServiceStatus())) { + blockchainMeta.getProperties().setAmServiceStatus(OnChainServiceStatusEnum.INIT); + } if (!updateBlockchainMeta(blockchainMeta)) { throw new RuntimeException( StrUtil.format( diff --git a/r-server/src/main/java/com/alipay/antchain/bridge/relayer/server/admin/impl/BCDNSNamespace.java b/r-server/src/main/java/com/alipay/antchain/bridge/relayer/server/admin/impl/BCDNSNamespace.java index dd9c993..6a59f07 100644 --- a/r-server/src/main/java/com/alipay/antchain/bridge/relayer/server/admin/impl/BCDNSNamespace.java +++ b/r-server/src/main/java/com/alipay/antchain/bridge/relayer/server/admin/impl/BCDNSNamespace.java @@ -64,6 +64,7 @@ public BCDNSNamespace() { addCommand("applyDomainNameCert", this::applyDomainNameCert); addCommand("queryDomainCertApplicationState", this::queryDomainCertApplicationState); addCommand("fetchDomainNameCertFromBCDNS", this::fetchDomainNameCertFromBCDNS); + addCommand("queryDomainNameCertFromBCDNS", this::queryDomainNameCertFromBCDNS); addCommand("registerDomainRouter", this::registerDomainRouter); addCommand("queryDomainRouter", this::queryDomainRouter); addCommand("addBlockchainTrustAnchor", this::addBlockchainTrustAnchor); @@ -214,7 +215,7 @@ Object applyDomainNameCert(String... args) { return "your receipt is " + receipt; } catch (Throwable e) { log.error("failed to apply domain cert from domain space [{}]", args[0], e); - return "failed to restart BCDNS: " + e.getMessage(); + return "failed to apply domain cert : " + e.getMessage(); } } @@ -235,11 +236,11 @@ Object queryDomainCertApplicationState(String... args) { return "your application not finished: " + domainCertApplicationDO.getState().getCode(); } catch (Throwable e) { log.error("failed to query domain cert from BCDNS with domain space [{}]", args[0], e); - return "failed to restart BCDNS: " + e.getMessage(); + return "failed to query domain cert: " + e.getMessage(); } } - Object fetchDomainNameCertFromBCDNS(String... args) { + Object queryDomainNameCertFromBCDNS(String... args) { if (args.length != 2) { return "wrong number of arguments"; } @@ -248,7 +249,7 @@ Object fetchDomainNameCertFromBCDNS(String... args) { String domainSpace = args[1]; try { - AbstractCrossChainCertificate certificate = bcdnsManager.queryAndSaveDomainCertificateFromBCDNS(domain, domainSpace); + AbstractCrossChainCertificate certificate = bcdnsManager.queryDomainCertificateFromBCDNS(domain, domainSpace, false); if (ObjectUtil.isNull(certificate)) { return StrUtil.format("none cert found for domain {} on BCDNS {}", domain, domainSpace); } @@ -259,6 +260,26 @@ Object fetchDomainNameCertFromBCDNS(String... args) { } } + Object fetchDomainNameCertFromBCDNS(String... args) { + if (args.length != 2) { + return "wrong number of arguments"; + } + + String domain = args[0]; + String domainSpace = args[1]; + + try { + AbstractCrossChainCertificate certificate = bcdnsManager.queryDomainCertificateFromBCDNS(domain, domainSpace, true); + if (ObjectUtil.isNull(certificate)) { + return StrUtil.format("none cert found for domain {} on BCDNS {}", domain, domainSpace); + } + return "the cert is : \n" + CrossChainCertificateUtil.formatCrossChainCertificateToPem(certificate); + } catch (Throwable e) { + log.error("failed to query from BCDNS:", e); + return "failed to query from BCDNS: " + ObjectUtil.defaultIfNull(e.getCause(), e).getMessage(); + } + } + Object registerDomainRouter(String... args) { if (args.length != 1) { return "wrong number of arguments"; diff --git a/r-server/src/main/java/com/alipay/antchain/bridge/relayer/server/admin/impl/BlockchainNamespace.java b/r-server/src/main/java/com/alipay/antchain/bridge/relayer/server/admin/impl/BlockchainNamespace.java index 9a8e6c9..4a7ab83 100644 --- a/r-server/src/main/java/com/alipay/antchain/bridge/relayer/server/admin/impl/BlockchainNamespace.java +++ b/r-server/src/main/java/com/alipay/antchain/bridge/relayer/server/admin/impl/BlockchainNamespace.java @@ -62,7 +62,8 @@ public class BlockchainNamespace extends AbstractNamespace { public BlockchainNamespace() { addCommand("getBlockchainIdByDomain", this::getBlockchainIdByDomain); addCommand("getBlockchain", this::getBlockchain); - addCommand("addHeteroBlockchainAnchor", this::addHeteroBlockchainAnchor); + addCommand("getBlockchainContracts", this::getBlockchainContracts); + addCommand("addBlockchainAnchor", this::addBlockchainAnchor); addCommand("deployBBCContractsAsync", this::deployBBCContractsAsync); addCommand("updateBlockchainAnchor", this::updateBlockchainAnchor); addCommand("updateBlockchainProperty", this::updateBlockchainProperty); @@ -107,7 +108,29 @@ Object getBlockchain(String... args) { return JSONObject.toJSONString(blockchainMeta, SerializerFeature.PrettyFormat); } - Object addHeteroBlockchainAnchor(String... args) { + /** + * 查询区块链 + * + * @return + */ + Object getBlockchainContracts(String... args) { + String product = args[0]; + String blockchainId = args[1]; + + BlockchainMeta blockchainMeta = blockchainManager.getBlockchainMeta(product, blockchainId); + if (blockchainMeta == null) { + return "blockchain not exist."; + } + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("state", ObjectUtil.defaultIfNull(blockchainMeta.getProperties().getAmServiceStatus(), "")); + jsonObject.put("am_contract", ObjectUtil.defaultIfEmpty(blockchainMeta.getProperties().getAmClientContractAddress(), "empty")); + jsonObject.put("sdp_contract", ObjectUtil.defaultIfEmpty(blockchainMeta.getProperties().getSdpMsgContractAddress(), "empty")); + + return jsonObject.toJSONString(); + } + + Object addBlockchainAnchor(String... args) { if (args.length != 7) { return "wrong number of arguments"; }