区块链与应用层集成及BTA准备全攻略
立即解锁
发布时间: 2025-08-30 00:05:28 阅读量: 7 订阅数: 17 AIGC 

### 区块链与应用层集成及 BTA 准备全攻略
#### 1. 文本编辑器 Vim 的使用
在修改配置文件时,有多种简单的纯文本编辑器可供选择,Vim 就是其中之一。以下是使用 Vim 的具体步骤:
1. 打开文件:在命令行输入 `$ vim .env` 打开 `.env` 文件。
2. 进入插入模式:输入 `i` 即可让 Vim 进入插入模式,开始输入内容。
3. 删除操作:若要删除到行尾,先将光标移至要删除的第一个字符处,按下 `Esc` 键,再按 `Shift+D`。之后输入 `i` 可返回插入模式。
4. 粘贴文本:确保处于插入模式,然后通过菜单或按 `Ctrl+v` 进行粘贴。
5. 保存与退出:完成修改后,按 `Esc` 键,接着输入 `:` 调出 Vim 命令行。
- 若要放弃修改并退出,输入 `:q!` 并按 `Enter`。
- 若要保存修改并退出,输入 `:wq` 并按 `Enter`。
6. 验证保存:输入 `type .env` 查看保存文件的内容。
此外,若使用命令行编辑配置文件,修改后需记得提交文件并推送到仓库,以免他人拉取文件时丢失修改。
#### 2. 使用 OCI 变量配置 env 文件
配置 `.env` 文件需要获取 OCI 相关变量的值,具体操作如下:
1. 登录 OCI 账户,点击 `Identity > Federation`,再点击 `OracleIdentityCloudService`。
2. 用文本编辑器打开 `oracle-connector` 文件夹根目录下的 `.env` 文件,用于复制粘贴从 OCI 获取的值。
3. **OBC_ADMIN_HOST**:复制 Oracle Identity Cloud Service 控制台的 URL(到 `oraclecloud.com` 为止),粘贴到 `.env` 文件中作为 `OBC_ADMIN_HOST` 的值。例如:`https://idcs - e2f496a4xxxxxxxxxe90dac0af081.identity.oraclecloud.com`。
4. **AUTHORIZATION_TOKEN**:
- 点击 `Identity Provider` 选项卡中的 Oracle Identity Cloud Service 控制台链接,在新标签页中,点击左上角菜单,选择 `Oracle Cloud Services`,找到 `oraclebc - ...` 云服务(若没有则需添加)。
- 打开后点击 `Configuration` 选项卡,从 `General Information` 部分复制 `client ID` 和 `client secret`(点击 `Show Secret` 按钮复制 `client secret`)。
- 访问 `base64encode.org`,将 `client ID` 和 `client secret` 按 `<client_id>:<client_secret>` 格式复制,点击 `ENCODE` 按钮获取编码后的 Base64 字符串,将其粘贴到 `.env` 文件中作为 `AUTHORIZATION_TOKEN` 的值。
5. **OBC_ADMIN_USERNAME 和 OBC_ADMIN_PASSWORD**:`OBC_ADMIN_USERNAME` 存储登录 OCI 的用户名,`OBC_ADMIN_PASSWORD` 存储 OCI 用户的密码。
6. **OBC_ADMIN_SCOPE**:按以下示例完成值的设置:
```plaintext
OBC_ADMIN_SCOPE=urn:opc:idm:__myscopes__
```
7. **REDIS_HOST 和 REDIS_PORT**:
- `REDIS_HOST` 是 Redis 主机 URL,一般为本地主机,用于存储通过 Oracle 连接器登录 OCI 后的访问令牌。
- `REDIS_PORT` 是 Redis 部署的端口号,可使用环境文件中的默认值,示例如下:
```plaintext
REDIS_HOST=obc - redis - cache
REDIS_PORT=6379
```
8. **APP_PORT**:是 Oracle 连接器监听的端口,若该端口未被其他应用使用,可使用默认值 `APP_PORT = 3000`。
9. **API_AUTHORIZATION_TOKEN**:为后端应用连接 Oracle 连接器生成的唯一令牌,需在后端应用环境文件中设置该令牌,使其与当前令牌一致。完成所有值的设置后,关闭并保存文件。
#### 3. 启动 Oracle 连接器
完成 `.env` 文件配置后,启动 Oracle 连接器,在命令行输入:
```bash
$ ./setupAndRunOracleConnector.sh
```
脚本成功执行后,会返回如下输出:
```plaintext
---------------------------------------------------
Oracle connector is up and running on port 5818
---------------------------------------------------
```
#### 4. 区块链与应用层集成
BTA 的应用层面向用户,支持创建项目、提交训练和测试后的 AI 模型以及进行审核,它基于 MEAN 栈,以 NestJs 为后端,通过 BTA API 在区块链和 MongoDB 中添加新的模型版本。NestJS 文件以 `.ts`(TypeScript)为扩展名,用于集成区块链与应用层,生成如 `addNewVersion` 和 `invoke` 等函数。
以下是一些重要的代码功能:
1. **query 函数**:用于通过区块链连接器调用查询 API,从区块链状态读取数据。
```typescript
async query(bcAuthenticateDto: BcAuthenticationDto): Promise<BcConnectionDto> {
try {
const response = await axios.get(bcAuthenticateDto.nodeUrl +
bcAuthenticateDto.bcConnectionApi, {
headers: {
'Content - Type': 'application/json',
'authorization': 'Basic ' + bcAuthenticateDto.basicAuthorization,
'org_name': bcAuthenticateDto.organizationName,
'channel_name': bcAuthenticateDto.channelName,
'key': await decryptKey(bcAuthenticateDto.bcKey),
'salt': bcAuthenticateDto.salt
}
});
return new BcConnectionDto(response.data.data);
} catch (error) {
const err = error as AxiosError;
logger.error(err.response? JSON.stringify(err.response.data) : err);
throw err;
}
}
```
2. **OC 用户服务**:支持用户注册和管理。
- **registerUser 函数**:调用 Oracle Cloud 连接器函数,使用电子邮件地址在 Oracle Cloud 中创建用户账户。若邮箱已注册,会抛出错误。
```typescript
async registerUser(ocUserRegisterDto: OCUserRegisterDto): Promise<void> {
try {
ocUserRegisterDto.password = 'Test@1234';
await this.ocConnectorService.post(ocUserRegisterDto,
OC_CONNECTION_API.REGISTER_USER);
} catch (err) {
if (err.status == HttpStatus.CONFLICT) {
```
0
0
复制全文
相关推荐










