> For the complete documentation index, see [llms.txt](https://505876833.gitbook.io/gao-jin-yun-xin-xin-yong-chi-v1.0/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://505876833.gitbook.io/gao-jin-yun-xin-xin-yong-chi-v1.0/zhi-neng-he-yue-kai-fa/mainsystem-zhu-he-yue.md).

# MainSystem主合约

#### 基本属性

<table><thead><tr><th align="center">属性</th><th width="451.33333333333326" align="center">说明</th></tr></thead><tbody><tr><td align="center">platformName</td><td align="center">平台名称</td></tr><tr><td align="center">interest</td><td align="center">利益（目前仅作为展示，功能执行中未涉及）</td></tr><tr><td align="center">logs</td><td align="center">历史交易存储合约记录</td></tr><tr><td align="center">stop</td><td align="center">由盟主控制的平台运行权, 但只能停止新交易发生, 已发生交易仍会继续进行流程</td></tr><tr><td align="center">allTransaction</td><td align="center">存储交易合约实例</td></tr><tr><td align="center">allCompany</td><td align="center">存储成员（公司）合约实例</td></tr><tr><td align="center">allBank</td><td align="center">存储成员（银行）合约实例</td></tr><tr><td align="center">blacklist</td><td align="center">黑名单</td></tr><tr><td align="center">usedLimit</td><td align="center">银行总授信中正使用的部分（针对所有授信过的公司）</td></tr></tbody></table>

#### 功能

{% hint style="info" %}
单个流程可能需要在多个合约之间进行交互，但整个过程是完整而不可分割的（自动调用完成）.
{% endhint %}

|           功能          |                                      说明                                     |
| :-------------------: | :-------------------------------------------------------------------------: |
|       addCompany      |                          添加成员（公司）功能，仅能由平台所有者（盟主）调用                          |
|        addBank        |                          添加成员（公司）功能，仅能由平台所有者（盟主）调用                          |
| applyUsedCreditLimit2 |                     发起交易（第二步）/若为增信交易同时完成配额（耗尽已有授信）（第一步）                     |
|     quotaByNormal2    |                     发起普通交易后由发起者进行配额（分别使用哪些公司的多少额度）（第二步）                     |
|      quotaByHelp      |                               盟主对增信交易进行配额（第一步）                              |
|     bankVoteQuota2    |                                银行同意配额结果（第二步）                                |
|   bankReceivedRepay2  |                           当提出申请的公司完成还款，银行进行清算（第二步）                          |
|     bankSetLimit2     |                                 银行对公司授信（第二步）                                |
|    approvedSetLimit   |                                盟主确认银行对公司的授信额度                               |
|       updateTime      | 每年重新授信, 但由于合约设计机制, 判断时间从第一笔授信交易开始, 但这个时间可能并非理想时间(如每年的1月1日), 所以可能需要动态更新（第一步） |
|      changeState      |                                  更改当前平台运行状态                                 |
|   updateAccountState  |                                 将成员拉入或拉出黑名单                                 |

#### 事件

|         名称        |                     说明                    |
| :---------------: | :---------------------------------------: |
|     NewCompany    |         添加新成员（公司），执行*addCompany*触发        |
|      NewBank      |          添加新成员（银行）,执行*addBank*触发          |
|   NewGrantCredit  |           新授信，执行*bankSetLimit*触发          |
| LeaderGrantCredit |       盟主确认授信，执行*approvedSetLimit*触发       |
|       NewTx       |     发起新交易，执行*applyUsedCreditLimit2*触发     |
|   NewQuotaNormal  |        为普通交易配额，执行*quotaByNormal2*触发       |
|   NewQuotaGrant   |        盟主为增信交易配额，执行*quotaByHelp*触发        |
|  NewQotaGrantSelf | 增信交易时先行耗尽已有授信，执行*applyUsedCreditLimit2*触发 |
|   BankGrantQuota  |       银行同意配额结果，执行*bankVoteQuota2*触发       |
|   NewSettlement   |     银行进行最终结算，执行*bankReceivedRepay2*触发     |
|  UserStateChange  |      成员状态改变，执行*updateAccountState*触发      |
