# linked-storage-sync-index
**Repository Path**: dxc520/linked-storage-sync-index
## Basic Information
- **Project Name**: linked-storage-sync-index
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-08-30
- **Last Updated**: 2024-08-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## linked-storage-sync-index
### 环境变量
链 chains 支持配置多链,链的名称无固定,随意(),每条链允许 按照 devNet,testNet,prodNet三个网来划分配置。不配不使用,即使配了,ENABLED=true 才启用
| 名称 | 值 | 默认值 | 描述 |
|---------------------------------------------|--------------------------------------------------------------------------|--------------------------------------------------------------------------|---------------------------------------------------------------------|
| SERVER_PORT | 8188 | 8188 | 服务端口 |
| SERVER_DATAPATH | data | data | 本地生成的数据目录 |
| SERVER_PPROF | true | true | 默认开启prof,生产可关闭,影响性能 |
| SERVER_PPROFPORT | 9123 | 9123 | 默认开启prof,端口号 |
| LOGGER_MODE | debug | debug | gin日志级别:debug,release |
| LOGGER_LEVEL | debug | debug | 业务日志级别 |
| LOGGER_ISOUTPUTFILE | false | false | 日志是否落磁盘 |
| LOGGER_MAXAGEDAY | 7 | 7 | 保存天数7 |
| LOGGER_ROTATIONTIME | 1 | 1 | 日志按天分割 |
| MONGODB_HOSTS | [127.0.0.1] | [127.0.0.1] | 服务地址 |
| MONGODB_USERNAME | "" | "" | 用户名 |
| MONGODB_PASSWORD | "" | "" | 密码 |
| MONGODB_DBNAME | "linked-storage-sync-index" | "linked-storage-sync-index" | db的实例名称 |
| MONGODB_MAXPOOLSIZE | 100 | 100 | 最大连接数 |
| REDIS_HOSTS | "127.0.0.1:6379" | "127.0.0.1:6379" | 服务地址 |
| REDIS_PASSWORD | "" | "" | 密码 |
| REDIS_DB | 0 | 0 | db的实例名称 |
| REDIS_TTL | 300 | 300 | 过期时间秒 |
| REDIS_ENABLED | false | false | 是否启用 |
| CHAINS_SOLARCHAIN_TESTNET_CHAINID | 65534 | 65534 | 链ID |
| CHAINS_SOLARCHAIN_TESTNET_ENABLED | true | true | 是否启用 |
| CHAINS_SOLARCHAIN_TESTNET_INFRAHTTP | http://test-sct-ws.netwarps.com | http://test-sct-ws.netwarps.com | 链http的API入口 |
| CHAINS_SOLARCHAIN_TESTNET_INFRAWEBSOCKET | ws://test-sct-ws.netwarps.com | ws://test-sct-ws.netwarps.com | 链websocket的API入口 |
| CHAINS_SOLARCHAIN_TESTNET_NFT20ADDR | 0x6C7EA87A7B6Fd706EA2730b69753d2D32028683A | 0xE3D22AdAc0F93A25f3Bbe4C31D64851ee6648b9F | ERC20铸币合约 |
| CHAINS_SOLARCHAIN_TESTNET_NFT20SYMBOL | USDK | USDK | |
| CHAINS_SOLARCHAIN_TESTNET_NFT20NAME | "Kugga (PoS) Tether USD" | "Kugga (PoS) Tether USD" | |
| CHAINS_SOLARCHAIN_TESTNET_NFT20DECIMALS | 6 | 6 | |
| CHAINS_SOLARCHAIN_TESTNET_BOUNTYADDR | 0x04063d8978A0Fda255f9410A3De5ea2E16848c17 | 0x04063d8978A0Fda255f9410A3De5ea2E16848c17 | kugga bounty合约 (征稿、PickWinner,提款,提高赏金,增加代币资产 |
| CHAINS_SOLARCHAIN_TESTNET_BOUNTYSYMBOL | BP | BP | |
| CHAINS_SOLARCHAIN_TESTNET_BOUNTYNAME | "BountyPledge " | BountyPledge | |
| CHAINS_SOLARCHAIN_TESTNET_DEPLOYEDFROMBLOCK | 10657097 | 0 | 起始块:部署的起始块,影响同步服务起始块 |
| CHAINS_POLYGON_TESTNET_CHAINID | 80001 | 80001 | 链ID |
| CHAINS_POLYGON_TESTNET_ENABLED | true | true | 是否启用 |
| CHAINS_POLYGON_TESTNET_INFRAHTTP | https://polygon-mumbai.g.alchemy.com/v2/IKklR2Q3T44IATgPXG9GSDnXuGLrG9hL | https://polygon-mumbai.g.alchemy.com/v2/IKklR2Q3T44IATgPXG9GSDnXuGLrG9hL | 链http的API入口 |
| CHAINS_POLYGON_TESTNET_INFRAWEBSOCKET | wss://polygon-mumbai.g.alchemy.com/v2/IKklR2Q3T44IATgPXG9GSDnXuGLrG9hL | wss://polygon-mumbai.g.alchemy.com/v2/IKklR2Q3T44IATgPXG9GSDnXuGLrG9hL | 链websocket的API入口 |
| CHAINS_POLYGON_TESTNET_NFT20ADDR | 0x19dB3385be992Dd3BA7Fb772FC88e3b127D4F7a8 | 0x19dB3385be992Dd3BA7Fb772FC88e3b127D4F7a8 | ERC20铸币合约 |
| CHAINS_POLYGON_TESTNET_NFT20SYMBOL | USDK | USDK | |
| CHAINS_POLYGON_TESTNET_NFT20NAME | Kugga (PoS) Tether USD | Kugga (PoS) Tether USD | |
| CHAINS_POLYGON_TESTNET_NFT20DECIMALS | 6 | 6 | |
| CHAINS_POLYGON_TESTNET_BOUNTYADDR | 0x038D560fAF3aDc3bf6A32116A6CC3Df5BFB05Db1 | 0x038D560fAF3aDc3bf6A32116A6CC3Df5BFB05Db1 | kugga bounty合约 (征稿、PickWinner,提款,提高赏金,增加代币资产) |
| CHAINS_POLYGON_TESTNET_BOUNTYSYMBOL | BP | BP | |
| CHAINS_POLYGON_TESTNET_BOUNTYNAME | "BountyPledge " | BountyPledge | |
| CHAINS_POLYGON_TESTNET_DEPLOYEDFROMBLOCK | 0 | 0 | 起始块:部署的起始块,影响同步服务起始块 |
| CHAINS_POLYGON_TESTNET_CONFIRMEDBLOCKCOUNT | 6 | 6 | 同步确认区块数量 |
| DAPP_HOST | http://www.kugga-api.com | http://www.kugga-api.com | 回调后台服务,刷新数据状态 |
| DAPP_SECRETKEY | linked-storage-sync-index | linked-storage-sync-index | 回调身份 |
| SYNC_CRONSPEC | * * * * * * | 0 */1 * * * * | 1、同步定时任务的时间cron spec:秒 分 时 日 月 星期
2、若取消定时任务,则配置:* * * * * * |
| SYNC_GROUPPAGESIZE | 500 | 500 | 同步区块,分页的 pageSize |
| SYNC_LIMITHANDLERAMOUNT | 1 | 1 | 在同一个批次里面,可以并发处理的并发数,原则上小于pageSize,开启过大,并非好事。默认值 1 |
| SYNC_RETRYCRONSPEC | * * * * * * | 0 */3 * * * * | 1、回调重试定时任务的时间cron spec:秒 分 时 日 月 星期
2、若取消定时任务,则配置:* * * * * * |
**chains配置规则:**
> 允许配置多条chain,名称随意起,主要不重复
> 每条链允许配置三个环境Model:开发(DEVNET),测试(TESTNET),生产(PRODNET)
> CHAINS_{chainName}_{chainModel}_{attributeName}
### Mark
#### Cron 配置说明
- cron表达式
|顺序| 秒 | 分钟| 小时 | 日期| 月份| 星期| 年(可选)|
|-----|-----|-----|-----|-----|-----|-----|-----|
| 取值| 0-59| 0-59 | 0-23| 1-30(31)| 1-12 | 1-7|
| 允许特殊字符| , - * / | , - * /| , - * /| , - * / ? L W C | , - * / | , - * / L # C | 1970-2099 , - * / |
- 字段含义
- **`*`**:代表所有可能的值
- **`-`**:指定范围
- **`,`**:列出枚举 例如在分钟里,"5,15"表示5分钟和20分钟触发
- **`/`**:指定增量 例如在分钟里,"3/15"表示从3分钟开始,没隔15分钟执行一次
- **`?`**:表示没有具体的值,使用?要注意冲突
- **`L`**:表示last,例如星期中表示7或SAT,月份中表示最后一天31或30,6L表示这个月倒数第6天,FRIL表示这个月的最后一个星期五
- **`W`**:只能用在月份中,表示最接近指定天的工作日
- **`#`**:只能用在星期中,表示这个月的第几个周几,例如6#3表示这个月的第3个周五
- 示例:
```
0 * * * * ? 每1分钟触发一次
0 0 * * * ? 每天每1小时触发一次
0 0 10 * * ? 每天10点触发一次
0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
0 30 9 1 * ? 每月1号上午9点半
0 15 10 15 * ? 每月15日上午10:15触发
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 5-15 * * ? 每天5-15点整点触发
0 0/3 * * * ? 每三分钟触发一次
0 0 0 1 * ? 每月1号凌晨执行一次
```
## 如果需要检测,并同步其他代币
**有两种方式:**
- **1、直接初始化数据库**
- **开发与测试环境**
```
use linked-storage-sync-index;
db.ethCoinErc20Config.save({"chain_id":80001,"contract_address":"0xe235AF2460FDCfDDfb1892754A801947dF30D0CD","contract_name":"USD Coin 4 Kugga (PoS)","contract_symbol":"USDC4K","decimals":6,"contract_symbol_alias":"USDC4K"});
```
- **生产环境**
```
use linked-storage-sync-index;
db.ethCoinErc20Config.save({"chain_id":137,"contract_address":"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174","contract_name":"USD Coin (PoS)","contract_symbol":"USDC","decimals":6,"contract_symbol_alias":"USDC"});
```
- 2、通过api 操作
| 配置项 | 配置项| 说明 |
|---|----|---|
| 访问地址 api | /v1/config/erc20 | |
| 访问协议 | http/https | |
| 提交method |POST| |
| 参数请求body |
```{"chain_id": 0,"contract_address": "string","contract_name": "string", "contract_symbol": "string","contract_symbol_alias": "string","decimals": 0,"id": "string", "wallet_address": "string"}``` | |