Skip to content
This repository was archived by the owner on Jan 13, 2025. It is now read-only.

Commit b94fde9

Browse files
authored
Merge pull request #19 from AntChainOpenLabs/feat/embedded-bcdns-supported
Feat/embedded bcdns supported
2 parents fd8867e + 28a4e2c commit b94fde9

File tree

18 files changed

+536
-47
lines changed

18 files changed

+536
-47
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@ hs_err_pid*
2424
replay_pid*
2525
/.idea/
2626
logs
27+
/r-facade/target/

CONTRIBUTING.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,18 @@
22

33
## Branch Strategy
44

5-
We recommend that developers following the rules [here](https://jeffkreeftmeijer.com/git-flow/git-flow.png).
5+
We recommend that developers following the `Trunk-based development` rules [here](https://trunkbaseddevelopment.com/).
66

7-
- Branch `main` with stable code and tags on it.
8-
- Branch `develop` for "next release" development.
7+
- Trunk branch `main` with stable code.
98
- Feature branches start with prefix `feat/`
109
- Release branches start with prefix `release/`
11-
- Hotfix branches start with prefix `hotfix/`
10+
- Hotfix branches start with prefix `hotfix/` or `fix/`
1211

1312
## Contributing
1413

1514
- Fork the repository or create branches.
1615
- Checkout your branch like a feature or bugfix.
17-
- Make a pull request to the `develop` branch of this repository.
16+
- Make a pull request to the `main` branch of this repository.
1817
- Wait for review and PR merged.
1918

2019
---

README.md

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ AntChain Bridge Relayer将功能实现分为两部分,分别为通信和可信
3333

3434
**确保安装了AntChain Bridge Plugin SDK,详情请[](https://github.com/AntChainOpenLabs/AntChainBridgePluginSDK?tab=readme-ov-file#%E6%9E%84%E5%BB%BA)*
3535

36+
> [!IMPORTANT]
37+
>
38+
> 注意当前Relayer要求SDK版本为0.3.0
39+
3640
### 编译
3741

3842
在项目根目录运行maven命令即可:
@@ -80,7 +84,7 @@ wget -qO- https://get.docker.com/ | bash
8084
然后下载MySQL镜像并启动容器,注意这里指定了时区为`+08:00`,请修改为您的时区。
8185

8286
```
83-
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD='YOUR_PWD' mysql --default-authentication-plugin=mysql_native_password --default_time_zone +08:00
87+
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD='YOUR_PWD' mysql:8 --mysql-native-password=ON --default_time_zone +08:00
8488
```
8589

8690
然后下载Redis镜像并启动容器:
@@ -333,7 +337,37 @@ relayer:
333337
{"destDomain":{"domain":"domain.web3.net","domainSpace":false},"destRelayer":{"netAddressList":["https://localhost:8082"],"relayerCert":{"credentialSubject":"AADVAAAAAAAD...hNDRjY2UifV19","credentialSubjectInstance":{"applicant":{"rawId":"ZGlkOmJpZDplZmJ...1b1FHWDZMVUd3Zw==","type":"BID"},"name":"relay","rawSubjectPublicKey":"r2Ze5VBjX...yWnSkTM4=","subject":"eyJwdWJsaWNLZXkiO...jZSJ9XX0=","subjectInfo":"eyJwd...J9XX0=","subjectPublicKey":{"algorithm":"Ed25519","encoded":"MCowBQYDK2V...qJKDyWnSkTM4=","format":"X.509","pointEncoding":"r2Ze5V...ifV19","expirationDate":1733811853,"id":"did:bid:efGeAv4Jr7V2FSyun77m4xTFmTDfG8nh","issuanceDate":1702275853,"issuer":{"rawId":"ZGlkOmJpZDpl...NTdtRENwQw==","type":"BID"},"proof":{"certHash":"Gaw4gcwXzn2i...K6HaPWBxXM=","hashAlgo":"SM3","rawProof":"kMZ/tvT19Tk...TQ4IVYlXkYjSBw==","sigAlgo":"Ed25519"},"type":"RELAYER_CERTIFICATE","version":"1"},"relayerCertId":"did:bid:efGeAv4Jr7V2FSyun77m4xTFmTDfG8nh"}}
334338
```
335339

336-
340+
341+
### 启动Embedded BCDNS
342+
343+
> [!IMPORTANT]
344+
> Relayer从0.3.0版本开始支持启动内嵌的BCDNS服务,注意Relayer使用的Embedded BCDNS相关依赖的版本。
345+
346+
Embedded BCDNS是内嵌在服务内部的BCDNS,提供中心化的权威服务,会使用一把私钥为跨链网络提供认证、准入等功能,按照服务端要求可以通过简单配置接入BCDNS,具体内容可以参考[这里](https://github.com/AntChainOpenLabs/AntChainBridgePluginSDK/tree/main/bcdns-services/embedded-bcdns/README.md)
347+
348+
通过在中继的配置增加下面一项,重启即可启动Embedded BCDNS,详细的配置可以参考AntChain Bridge SDK关于如何使用Embedded的[README](https://github.com/AntChainOpenLabs/AntChainBridgePluginSDK/tree/main/bcdns-services/embedded-bcdns/README.md)
349+
350+
```yaml
351+
acb:
352+
bcdns:
353+
embedded:
354+
server-on: true
355+
root-private-key-file: file:/path/to/embedded-bcdns-root-private-key.key
356+
root-cert-file: file:/path/to/embedded-bcdns-root.crt
357+
```
358+
359+
上面配置中的`root-private-key-file`和`root-cert-file`,可以通过CLI命令`generate-bcdns-root-cert`来生成,详细用法参考[这里](r-cli/README.md#5.5 生成BCDNS根证书)。
360+
361+
需要在DB额外创建一些Embedded BCDNS的表,通过这里的SQL[脚本](https://github.com/AntChainOpenLabs/AntChainBridgePluginSDK/tree/main/bcdns-services/embedded-bcdns/embedded-bcdns-state-jdbc-spring-boot-starter/src/main/resources/ddl/mysql/ddl.sql)
362+
363+
重新启动Relayer,启动日志中会看到:
364+
365+
```
366+
INFO 63164 --- [ main] .EmbeddedBcdnsJdbcStateAutoConfiguration : start jdbc bcdns state
367+
INFO 63164 --- [ main] b.b.e.s.a.EmbeddedBcdnsAutoConfiguration : start embedded bcdns server on 0.0.0.0:8090
368+
```
369+
370+
337371
338372
## 社区治理
339373

pom.xml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
<groupId>com.alipay.antchain.bridge</groupId>
1515
<artifactId>antchain-bridge-relayer</artifactId>
16-
<version>0.2.0</version>
16+
<version>0.3.0</version>
1717
<packaging>pom</packaging>
1818
<modules>
1919
<module>r-bootstrap</module>
@@ -36,7 +36,8 @@
3636
<redisson-spring.version>3.23.5</redisson-spring.version>
3737
<spring-boot.version>2.7.16</spring-boot.version>
3838
<mysql-connector.version>8.0.33</mysql-connector.version>
39-
<acb-sdk.version>0.2.3</acb-sdk.version>
39+
<acb-sdk.version>0.3.0</acb-sdk.version>
40+
<acb-embedded-bcdns.version>0.1.0</acb-embedded-bcdns.version>
4041
<hutool.version>5.8.22</hutool.version>
4142
<junit.version>4.13.2</junit.version>
4243
<h2.version>2.2.224</h2.version>
@@ -116,9 +117,19 @@
116117
</dependency>
117118
<dependency>
118119
<groupId>com.alipay.antchain.bridge</groupId>
119-
<artifactId>antchain-bridge-bcdns</artifactId>
120+
<artifactId>antchain-bridge-bcdns-factory</artifactId>
120121
<version>${acb-sdk.version}</version>
121122
</dependency>
123+
<dependency>
124+
<groupId>com.alipay.antchain.bridge</groupId>
125+
<artifactId>embedded-bcdns-state-jdbc-spring-boot-starter</artifactId>
126+
<version>${acb-embedded-bcdns.version}</version>
127+
</dependency>
128+
<dependency>
129+
<groupId>com.alipay.antchain.bridge</groupId>
130+
<artifactId>embedded-bcdns-spring-boot-starter</artifactId>
131+
<version>${acb-embedded-bcdns.version}</version>
132+
</dependency>
122133
<dependency>
123134
<groupId>junit</groupId>
124135
<artifactId>junit</artifactId>
@@ -198,7 +209,7 @@
198209
<dependency>
199210
<groupId>com.alipay.antchain.bridge</groupId>
200211
<artifactId>r-facade</artifactId>
201-
<version>${project.version}</version>
212+
<version>0.2.0</version>
202213
</dependency>
203214
<dependency>
204215
<groupId>org.projectlombok</groupId>

r-bootstrap/pom.xml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.alipay.antchain.bridge</groupId>
88
<artifactId>antchain-bridge-relayer</artifactId>
9-
<version>0.2.0</version>
9+
<version>0.3.0</version>
1010
</parent>
1111

1212
<artifactId>r-bootstrap</artifactId>
@@ -52,7 +52,7 @@
5252
<dependency>
5353
<groupId>com.h2database</groupId>
5454
<artifactId>h2</artifactId>
55-
<scope>test</scope>
55+
<!-- <scope>test</scope>-->
5656
</dependency>
5757
<dependency>
5858
<groupId>com.baomidou</groupId>
@@ -86,6 +86,14 @@
8686
<groupId>com.github.ulisesbocchio</groupId>
8787
<artifactId>jasypt-spring-boot-starter</artifactId>
8888
</dependency>
89+
<dependency>
90+
<groupId>com.alipay.antchain.bridge</groupId>
91+
<artifactId>embedded-bcdns-state-jdbc-spring-boot-starter</artifactId>
92+
</dependency>
93+
<dependency>
94+
<groupId>com.alipay.antchain.bridge</groupId>
95+
<artifactId>embedded-bcdns-spring-boot-starter</artifactId>
96+
</dependency>
8997
</dependencies>
9098

9199
<build>

r-bootstrap/src/main/java/com/alipay/antchain/bridge/relayer/bootstrap/config/RelayerCoreConfig.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import cn.hutool.core.io.FileUtil;
2626
import cn.hutool.core.lang.Assert;
2727
import cn.hutool.core.util.ObjectUtil;
28+
import cn.hutool.core.util.StrUtil;
2829
import cn.hutool.crypto.PemUtil;
2930
import com.alipay.antchain.bridge.commons.bcdns.AbstractCrossChainCertificate;
3031
import com.alipay.antchain.bridge.commons.bcdns.CrossChainCertificateFactory;
@@ -44,6 +45,7 @@
4445
import com.alipay.antchain.bridge.relayer.server.network.WSRelayerServer;
4546
import com.google.common.util.concurrent.ThreadFactoryBuilder;
4647
import lombok.SneakyThrows;
48+
import lombok.extern.slf4j.Slf4j;
4749
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
4850
import org.redisson.api.RedissonClient;
4951
import org.springframework.beans.factory.BeanInitializationException;
@@ -55,6 +57,7 @@
5557
import org.springframework.core.io.Resource;
5658
import org.springframework.transaction.support.TransactionTemplate;
5759

60+
@Slf4j
5861
@Configuration
5962
public class RelayerCoreConfig {
6063

@@ -98,7 +101,15 @@ public class RelayerCoreConfig {
98101
private boolean isDiscoveryService;
99102

100103
public AbstractCrossChainCertificate getLocalRelayerCrossChainCertificate() {
101-
AbstractCrossChainCertificate relayerCertificate = null;
104+
if (StrUtil.equals("null", relayerCrossChainCert.getFilename())) {
105+
log.warn("your relayer crosschain certificate is not set");
106+
return null;
107+
}
108+
if (!relayerCrossChainCert.exists()) {
109+
log.error("your relayer crosschain certificate {} not exist", relayerCrossChainCert.getFilename());
110+
return null;
111+
}
112+
AbstractCrossChainCertificate relayerCertificate;
102113
try {
103114
relayerCertificate = CrossChainCertificateFactory.createCrossChainCertificateFromPem(
104115
FileUtil.readBytes(relayerCrossChainCert.getFile())
@@ -111,7 +122,8 @@ public AbstractCrossChainCertificate getLocalRelayerCrossChainCertificate() {
111122
}
112123

113124
public RelayerCredentialSubject getLocalRelayerCredentialSubject() {
114-
return RelayerCredentialSubject.decode(getLocalRelayerCrossChainCertificate().getCredentialSubject());
125+
return ObjectUtil.isNull(getLocalRelayerCrossChainCertificate()) ?
126+
null : RelayerCredentialSubject.decode(getLocalRelayerCrossChainCertificate().getCredentialSubject());
115127
}
116128

117129
public String getLocalRelayerIssuerDomainSpace() {
@@ -136,7 +148,8 @@ public PrivateKey getLocalPrivateKey() {
136148
}
137149

138150
public String getLocalRelayerNodeId() {
139-
return RelayerNodeInfo.calculateNodeId(getLocalRelayerCrossChainCertificate());
151+
return ObjectUtil.isNull(getLocalRelayerCrossChainCertificate()) ?
152+
null : RelayerNodeInfo.calculateNodeId(getLocalRelayerCrossChainCertificate());
140153
}
141154

142155
@Bean

r-bootstrap/src/main/resources/logback-spring.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,27 @@
6262
<onMismatch>ACCEPT</onMismatch>
6363
</filter>
6464
</appender>
65+
<appender name="embeddedBcdnsAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
66+
<file>${logging.path}/${APP_NAME}/embedded-bcdns.log</file>
67+
<encoder>
68+
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -
69+
%msg%n
70+
</pattern>
71+
<charset>UTF-8</charset>
72+
</encoder>
73+
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
74+
<FileNamePattern>${logging.path}/${APP_NAME}/embedded-bcdns.log.%d{yyyy-MM-dd}.%i</FileNamePattern>
75+
<maxHistory>7</maxHistory>
76+
<maxFileSize>50MB</maxFileSize>
77+
<totalSizeCap>2GB</totalSizeCap>
78+
<cleanHistoryOnStart>true</cleanHistoryOnStart>
79+
</rollingPolicy>
80+
<filter class="ch.qos.logback.classic.filter.LevelFilter">
81+
<level>INFO</level>
82+
<onMatch>ACCEPT</onMatch>
83+
<onMismatch>ACCEPT</onMismatch>
84+
</filter>
85+
</appender>
6586
<appender name="full-application" class="ch.qos.logback.classic.AsyncAppender">
6687
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
6788
<discardingThreshold>0</discardingThreshold>
@@ -85,6 +106,10 @@
85106
</filter>
86107
</appender>
87108

109+
<logger name="com.alipay.antchain.bridge.bcdns.embedded.server" level="INFO" additivity="false">
110+
<appender-ref ref="embeddedBcdnsAppender"/>
111+
</logger>
112+
88113
<root level="INFO">
89114
<appender-ref ref="CONSOLE"/>
90115
<appender-ref ref="full-application"/>

r-bootstrap/src/test/java/com/alipay/antchain/bridge/relayer/bootstrap/manager/BCDNSManagerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
import cn.hutool.core.collection.ListUtil;
2323
import cn.hutool.core.map.MapUtil;
24-
import com.alipay.antchain.bridge.bcdns.impl.BlockChainDomainNameServiceFactory;
24+
import com.alipay.antchain.bridge.bcdns.factory.BlockChainDomainNameServiceFactory;
2525
import com.alipay.antchain.bridge.bcdns.service.BCDNSTypeEnum;
2626
import com.alipay.antchain.bridge.bcdns.service.IBlockChainDomainNameService;
2727
import com.alipay.antchain.bridge.bcdns.types.base.DomainRouter;

0 commit comments

Comments
 (0)