@ablack/fundraising-templates-multisig 中文文档教程

发布于 5年前 浏览 25 项目主页 更新于 3年前

Aragon 0.8 Fundraising Multisig Template

Description

Aragon 筹款多重签名模板区分两组参与者:董事会股东

Board

董事会是由筹款活动资助的。 它们通过自定义 BOARD 令牌和一个专门用作多重签名的投票应用程序来表示。 他们的特权被有意限制以保护股东。 因此,他们只有以下权利。

Handling board members

董事会 [通过其 TokenManager] 决定谁被包括/排除在董事会之外。

Opening presale

董事会决定预售 [以及筹款活动] 何时开放。

Handling fundraising proceeds

董事会决定如何使用定期转移到他们自行决定的 Vault / Finance 应用程序的筹款收益。

Opening votes

董事会决定何时应向股东开放新的投票权,以对组织执行决策。

Shareholders

股东是为筹款活动做出贡献的人。 他们通过 SHARE 绑定令牌 [他们可以通过 Aragon 筹款界面购买和赎回] 和投票应用程序来代表。 他们拥有组织的大部分权利。

Handling system

股东决定安装哪些应用程序、升级哪些应用程序以及如何设置权限。

Handling fundraising parameters

股东决定是否/如何更新受益人、费用、抵押设置和抵押水龙头。

Rationale

该架构将 [大部分] 治理权授予股东 [以保护他们的投资]。 因此,需要缓解持有超过 50% 股份的股东将拥有整个组织的情况。 这就是为什么基于SHARE 的投票[ 大多数组织决策] 只能由董事会公开和发起。

Usage

Prepare instance

部署 DAO 并安装所有与委员会相关的应用程序

template.prepareInstance(boardTokenName, boardTokenSymbol, boardMembers, boardVotingsSettings, financePeriod)
  • boardTokenName Name for the token used by the board
  • boardTokenSymbol Symbol for the token used by the board
  • boardMembers Array of board members addresses
  • boardVotingSettings: Array of [supportRequired, minAcceptanceQuorum, voteDuration] to set up the board voting app [multisig]
  • financePeriod Initial duration for accounting periods of the boards discretionnary vault [it can be set to zero in order to use the default of 30 days]

Install share apps

template.installShareApps(id, shareTokenName, shareTokenSymbol, shareVotingsSettings)
  • id Id for org, will assign [id].aragonid.eth
  • shareTokenName Name for the token used by the shareholders [the bonded token]
  • shareTokenSymbol Symbol for the token used by shareholders [the bonded token]
  • shareVotingSettings: Array of [supportRequired, minAcceptanceQuorum, voteDuration] to set up the shareholders voting app [multisig]

Install fundraising apps

template.installFundraisingApps(
    goal,
    period,
    exchangeRate,
    vestingCliffPeriod,
    vestingCompletePeriod,
    supplyOfferedPct,
    fundingForBeneficiaryPct,
    openDate,
    batchBlocks,
    maximumTapRateIncreasePct,
    maximumTapFloorDecreasePct
)
  • goal The presale goal
  • period The presale period
  • exchangeRate The presale exchange rate [in PPM]
  • vestingCliffPeriod The cliff period for vested shares purchased during presale
  • vestingCompletePeriod The complete period for vested shares purchased during presale
  • supplyOfferedPct The percentage of the initial token supply offered to presale's contributors
  • fundingForBeneficiaryPct The percentage of the presale raised funds which are to be transferred to the board's discretionnary vault
  • openDate The date upon which the presale will be open [if 0, the presale can be open manually later]
  • batchBlocks The number of blocks trading batches will last
  • maximumTapRateIncreasePct The maximum percentage tap rates can be increased at once
  • maximumTapFloorDecreasePct The maximum percentage tap floors can be decreased at once

Finalize instance

设置抵押设置

template.finalizeInstance(virtualSupplies, virtualBalances, slippages, daiRate, daiFloor)
  • virtualSupplies Array of [daiVirtualSupply, antVirtualSupply] to set up the market maker
  • virtualBalances Array of [daiVirtualBalance, antVirtualBalance] to set up the market maker
  • slippages Array of [daiMaxSlippage, antMaxSlippage] to set up the maximum per-batch price slippage in the market maker
  • daiRate The rate at which DAIs are to be tapped
  • daiFloor The floor above which the DAI reserve pool is to be kept

Permissions

System

处理应用程序和权限

AppPermissionGranteeManager
KernelAPP_MANAGERVoting [SHARE]Voting [SHARE]
ACLCREATE_PERMISSIONSVoting [SHARE]Voting [SHARE]
EVMScriptRegistryREGISTRY_MANAGERVoting [SHARE]Voting [SHARE]
EVMScriptRegistryREGISTRYADDEXECUTORVoting [SHARE]Voting [SHARE]

Board

TokenManager

代表委员会成员

AppPermissionGranteeManager
Token Manager [BOARD]MINTVoting [BOARD]Voting [SHARE]
Token Manager [BOARD]BURNVoting [BOARD]Voting [SHARE]
Token Manager [BOARD]ISSUENULLNULL
Token Manager [BOARD]ASSIGNNULLNULL
Token Manager [BOARD]REVOKE_VESTINGSNULLNULL

Voting

执行委员会的决定

AppPermissionGranteeManager
Voting [BOARD]CREATE_VOTESToken Manager [BOARD]Voting [SHARE]
Voting [BOARD]MODIFY_QUORUMVoting [BOARD]Voting [SHARE]
Voting [BOARD]MODIFY_SUPPORTVoting [BOARD]Voting [SHARE]

Vault and Finance

处理委员会的资金< /em>

AppPermissionGranteeManager
VaultTRANSFERFinanceVoting [SHARE]
FinanceCREATE_PAYMENTSVoting [BOARD]Voting [SHARE]
FinanceEXECUTE_PAYMENTSVoting [BOARD]Voting [SHARE]
FinanceMANAGE_PAYMENTSVoting [BOARD]Voting [SHARE]
FinanceCHANGE_PERIODNULLNULL
FinanceCHANGEBUDGETSROLENULLNULL

Share Holders

TokenManager

处理股票/债券的铸造和销毁

AppPermissionGranteeManager
Token Manager [SHARE]MINTMarketMakerVoting [SHARE]
Token Manager [SHARE]BURNMarketMaker, PresaleVoting [SHARE]
Token Manager [SHARE]ISSUEPresaleVoting [SHARE]
Token Manager [SHARE]ASSIGNPresaleVoting [SHARE]
Token Manager [SHARE]REVOKE_VESTINGSPresaleVoting [SHARE]

Voting

执行股东的决定

AppPermissionGranteeManager
Voting [SHARE]CREATE_VOTESToken Manager [BOARD]Voting [SHARE]
Voting [SHARE]MODIFY_QUORUMVoting [SHARE]Voting [SHARE]
Voting [SHARE]MODIFY_SUPPORTVoting [SHARE]Voting [SHARE]

Fundraising apps

Agent / Reserve

处理做市商资金

AppPermissionGranteeManager
PoolSAFE_EXECUTEVoting [SHARE]Voting [SHARE]
PoolADDPROTECTEDTOKENControllerVoting [SHARE]
PoolREMOVEPROTECTEDTOKENNULLNULL
PoolEXECUTENULLNULL
PoolDESIGNATE_SIGNERNULLNULL
PoolADDPRESIGNEDHASHNULLNULL
PoolRUN_SCRIPTNULLNULL
PoolTRANSFERTap, MarketMakerVoting [SHARE]

Presale

处理初步销售

AppPermissionGranteeManager
PresaleOPENControllerVoting [SHARE]
PresaleCONTRIBUTEControllerVoting [SHARE]

MarketMaker

< em>处理买卖订单

AppPermissionGranteeManager
MarketMakerOPENControllerVoting [SHARE]
MarketMakerUPDATE_FORMULANULLNULL
MarketMakerUPDATE_BENEFICIARYControllerVoting [SHARE]
MarketMakerUPDATE_FEESControllerVoting [SHARE]
MarketMakerADDCOLLATERALTOKENControllerVoting [SHARE]
MarketMakerREMOVECOLLATERALTOKENControllerVoting [SHARE]
MarketMakerUPDATECOLLATERALTOKENControllerVoting [SHARE]
MarketMakerOPENBUYORDERControllerVoting [SHARE]
MarketMakerOPENSELLORDERControllerVoting [SHARE]

Tap

控制资金从储备到董事会的流动

AppPermissionGranteeManager
TapUPDATE_CONTROLLERNULLNULL
TapUPDATE_RESERVENULLNULL
TapUPDATE_BENEFICIARYControllerVoting [SHARE]
TapUPDATEMAXIMUMTAPRATEINCREASE_PCTControllerVoting [SHARE]
TapUPDATEMAXIMUMTAPFLOORDECREASE_PCTControllerVoting [SHARE]
TapADDTAPPEDTOKENControllerVoting [SHARE]
TapREMOVETAPPEDTOKENNULLNULL
TapUPDATETAPPEDTOKENControllerVoting [SHARE]
TapRESETTAPPEDTOKENControllerVoting [SHARE]
TapWITHDRAWControllerVoting [SHARE]

Controller

API 合约转发交易到相关合约

AppPermissionGranteeManager
ControllerUPDATE_BENEFICIARYVoting [SHARE]Voting [SHARE]
ControllerUPDATE_FEESVoting [SHARE]Voting [SHARE]
ControllerADDCOLLATERALTOKENVoting [SHARE]Voting [SHARE]
ControllerREMOVECOLLATERALTOKENVoting [SHARE]Voting [SHARE]
ControllerUPDATECOLLATERALTOKENVoting [SHARE]Voting [SHARE]
ControllerUPDATEMAXIMUMTAPRATEINCREASE_PCTVoting [SHARE]Voting [SHARE]
ControllerUPDATEMAXIMUMTAPFLOORDECREASE_PCTVoting [SHARE]Voting [SHARE]
ControllerADDTOKENTAPVoting [SHARE]Voting [SHARE]
ControllerUPDATETOKENTAPVoting [SHARE]Voting [SHARE]
ControllerOPEN_PRESALEVoting [BOARD]Voting [SHARE]
ControllerOPEN_TRADINGPresaleVoting [SHARE]
ControllerCONTRIBUTEAnyVoting [SHARE]
ControllerOPENBUYORDERAnyVoting [SHARE]
ControllerOPENSELLORDERAnyVoting [SHARE]
ControllerWITHDRAWAnyVoting [SHARE]

Aragon 0.8 Fundraising Multisig Template

Description

Aragon Fundraising Multisig Template differenciate two set actors: the board and the shareholders.

Board

The board are the ones being funded by the fundraising campaign. They are represented through a custom BOARD token and a dedicated voting app set to be used as a multisig. Their privileges are intentionnaly limited to protect shareholders. Thus, they only have the following rights.

Handling board members

The board decides on who is to be included / excluded from the board [through its TokenManager].

Opening presale

The board decides on when the presale [and thus the fundraising campaign] is to be open.

Handling fundraising proceeds

The board decides on what use is to be made of the fundraising proceeds which are periodically transferred to their discretionnary Vault / Finance app.

Opening votes

The board decides on when new votes should be open for shareholders to enforce decisions over the organization.

Shareholders

The shareholders are the one contributing to the fundraising campaign. They are represented through a SHARE bonded-token [they can buy and redeem through the Aragon Fundraising interface] and a voting app. They hold most of the rights over the organization.

Handling system

Shareholders decide on which apps are to be installed, which apps are to to upgraded and how permissions are to be set.

Handling fundraising parameters

Shareholders decide on whether / how beneficiary, fees, collateralization settings and collaterals taps should be updated.

Rationale

This architecture grants [most of] the governance rights to shareholders [to protect their investment]. There is thus a need to mitigate situations where a shareholder owning more than 50% of the shares would own the whole organization. This is why SHARE based votes [i.e. most of the organization decisions] can only be open and initiated by the board.

Usage

Prepare instance

Deploy a DAO and install all board related apps

template.prepareInstance(boardTokenName, boardTokenSymbol, boardMembers, boardVotingsSettings, financePeriod)
  • boardTokenName Name for the token used by the board
  • boardTokenSymbol Symbol for the token used by the board
  • boardMembers Array of board members addresses
  • boardVotingSettings: Array of [supportRequired, minAcceptanceQuorum, voteDuration] to set up the board voting app [multisig]
  • financePeriod Initial duration for accounting periods of the boards discretionnary vault [it can be set to zero in order to use the default of 30 days]

Install share apps

template.installShareApps(id, shareTokenName, shareTokenSymbol, shareVotingsSettings)
  • id Id for org, will assign [id].aragonid.eth
  • shareTokenName Name for the token used by the shareholders [the bonded token]
  • shareTokenSymbol Symbol for the token used by shareholders [the bonded token]
  • shareVotingSettings: Array of [supportRequired, minAcceptanceQuorum, voteDuration] to set up the shareholders voting app [multisig]

Install fundraising apps

template.installFundraisingApps(
    goal,
    period,
    exchangeRate,
    vestingCliffPeriod,
    vestingCompletePeriod,
    supplyOfferedPct,
    fundingForBeneficiaryPct,
    openDate,
    batchBlocks,
    maximumTapRateIncreasePct,
    maximumTapFloorDecreasePct
)
  • goal The presale goal
  • period The presale period
  • exchangeRate The presale exchange rate [in PPM]
  • vestingCliffPeriod The cliff period for vested shares purchased during presale
  • vestingCompletePeriod The complete period for vested shares purchased during presale
  • supplyOfferedPct The percentage of the initial token supply offered to presale's contributors
  • fundingForBeneficiaryPct The percentage of the presale raised funds which are to be transferred to the board's discretionnary vault
  • openDate The date upon which the presale will be open [if 0, the presale can be open manually later]
  • batchBlocks The number of blocks trading batches will last
  • maximumTapRateIncreasePct The maximum percentage tap rates can be increased at once
  • maximumTapFloorDecreasePct The maximum percentage tap floors can be decreased at once

Finalize instance

Set collateralization settings

template.finalizeInstance(virtualSupplies, virtualBalances, slippages, daiRate, daiFloor)
  • virtualSupplies Array of [daiVirtualSupply, antVirtualSupply] to set up the market maker
  • virtualBalances Array of [daiVirtualBalance, antVirtualBalance] to set up the market maker
  • slippages Array of [daiMaxSlippage, antMaxSlippage] to set up the maximum per-batch price slippage in the market maker
  • daiRate The rate at which DAIs are to be tapped
  • daiFloor The floor above which the DAI reserve pool is to be kept

Permissions

System

Handle apps and permissions

AppPermissionGranteeManager
KernelAPP_MANAGERVoting [SHARE]Voting [SHARE]
ACLCREATE_PERMISSIONSVoting [SHARE]Voting [SHARE]
EVMScriptRegistryREGISTRY_MANAGERVoting [SHARE]Voting [SHARE]
EVMScriptRegistryREGISTRYADDEXECUTORVoting [SHARE]Voting [SHARE]

Board

TokenManager

Represents board's membership

AppPermissionGranteeManager
Token Manager [BOARD]MINTVoting [BOARD]Voting [SHARE]
Token Manager [BOARD]BURNVoting [BOARD]Voting [SHARE]
Token Manager [BOARD]ISSUENULLNULL
Token Manager [BOARD]ASSIGNNULLNULL
Token Manager [BOARD]REVOKE_VESTINGSNULLNULL

Voting

Enforces board's decisions

AppPermissionGranteeManager
Voting [BOARD]CREATE_VOTESToken Manager [BOARD]Voting [SHARE]
Voting [BOARD]MODIFY_QUORUMVoting [BOARD]Voting [SHARE]
Voting [BOARD]MODIFY_SUPPORTVoting [BOARD]Voting [SHARE]

Vault and Finance

Handle board's funds

AppPermissionGranteeManager
VaultTRANSFERFinanceVoting [SHARE]
FinanceCREATE_PAYMENTSVoting [BOARD]Voting [SHARE]
FinanceEXECUTE_PAYMENTSVoting [BOARD]Voting [SHARE]
FinanceMANAGE_PAYMENTSVoting [BOARD]Voting [SHARE]
FinanceCHANGE_PERIODNULLNULL
FinanceCHANGEBUDGETSROLENULLNULL

Share Holders

TokenManager

Handle shares / bonds minting and burning

AppPermissionGranteeManager
Token Manager [SHARE]MINTMarketMakerVoting [SHARE]
Token Manager [SHARE]BURNMarketMaker, PresaleVoting [SHARE]
Token Manager [SHARE]ISSUEPresaleVoting [SHARE]
Token Manager [SHARE]ASSIGNPresaleVoting [SHARE]
Token Manager [SHARE]REVOKE_VESTINGSPresaleVoting [SHARE]

Voting

Enforces share holders decisions

AppPermissionGranteeManager
Voting [SHARE]CREATE_VOTESToken Manager [BOARD]Voting [SHARE]
Voting [SHARE]MODIFY_QUORUMVoting [SHARE]Voting [SHARE]
Voting [SHARE]MODIFY_SUPPORTVoting [SHARE]Voting [SHARE]

Fundraising apps

Agent / Reserve

Handle market maker funds

AppPermissionGranteeManager
PoolSAFE_EXECUTEVoting [SHARE]Voting [SHARE]
PoolADDPROTECTEDTOKENControllerVoting [SHARE]
PoolREMOVEPROTECTEDTOKENNULLNULL
PoolEXECUTENULLNULL
PoolDESIGNATE_SIGNERNULLNULL
PoolADDPRESIGNEDHASHNULLNULL
PoolRUN_SCRIPTNULLNULL
PoolTRANSFERTap, MarketMakerVoting [SHARE]

Presale

Handle preliminary sale

AppPermissionGranteeManager
PresaleOPENControllerVoting [SHARE]
PresaleCONTRIBUTEControllerVoting [SHARE]

MarketMaker

Handle buy and sell orders

AppPermissionGranteeManager
MarketMakerOPENControllerVoting [SHARE]
MarketMakerUPDATE_FORMULANULLNULL
MarketMakerUPDATE_BENEFICIARYControllerVoting [SHARE]
MarketMakerUPDATE_FEESControllerVoting [SHARE]
MarketMakerADDCOLLATERALTOKENControllerVoting [SHARE]
MarketMakerREMOVECOLLATERALTOKENControllerVoting [SHARE]
MarketMakerUPDATECOLLATERALTOKENControllerVoting [SHARE]
MarketMakerOPENBUYORDERControllerVoting [SHARE]
MarketMakerOPENSELLORDERControllerVoting [SHARE]

Tap

Control the flow of funds from reserve to board

AppPermissionGranteeManager
TapUPDATE_CONTROLLERNULLNULL
TapUPDATE_RESERVENULLNULL
TapUPDATE_BENEFICIARYControllerVoting [SHARE]
TapUPDATEMAXIMUMTAPRATEINCREASE_PCTControllerVoting [SHARE]
TapUPDATEMAXIMUMTAPFLOORDECREASE_PCTControllerVoting [SHARE]
TapADDTAPPEDTOKENControllerVoting [SHARE]
TapREMOVETAPPEDTOKENNULLNULL
TapUPDATETAPPEDTOKENControllerVoting [SHARE]
TapRESETTAPPEDTOKENControllerVoting [SHARE]
TapWITHDRAWControllerVoting [SHARE]

Controller

API contract forwarding transactions to relevant contracts

AppPermissionGranteeManager
ControllerUPDATE_BENEFICIARYVoting [SHARE]Voting [SHARE]
ControllerUPDATE_FEESVoting [SHARE]Voting [SHARE]
ControllerADDCOLLATERALTOKENVoting [SHARE]Voting [SHARE]
ControllerREMOVECOLLATERALTOKENVoting [SHARE]Voting [SHARE]
ControllerUPDATECOLLATERALTOKENVoting [SHARE]Voting [SHARE]
ControllerUPDATEMAXIMUMTAPRATEINCREASE_PCTVoting [SHARE]Voting [SHARE]
ControllerUPDATEMAXIMUMTAPFLOORDECREASE_PCTVoting [SHARE]Voting [SHARE]
ControllerADDTOKENTAPVoting [SHARE]Voting [SHARE]
ControllerUPDATETOKENTAPVoting [SHARE]Voting [SHARE]
ControllerOPEN_PRESALEVoting [BOARD]Voting [SHARE]
ControllerOPEN_TRADINGPresaleVoting [SHARE]
ControllerCONTRIBUTEAnyVoting [SHARE]
ControllerOPENBUYORDERAnyVoting [SHARE]
ControllerOPENSELLORDERAnyVoting [SHARE]
ControllerWITHDRAWAnyVoting [SHARE]
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文