diff --git a/src/templates/fundraising/components/Board.js b/src/templates/fundraising/components/Council.js similarity index 91% rename from src/templates/fundraising/components/Board.js rename to src/templates/fundraising/components/Council.js index 62eabd43a..d398e83ef 100644 --- a/src/templates/fundraising/components/Board.js +++ b/src/templates/fundraising/components/Council.js @@ -101,7 +101,7 @@ function validationError( return 'Please add a token symbol.' } if (signatures < 0) { - return 'Please ensure that board voting requires at least one signature.' + return 'Please ensure that council voting requires at least one signature.' } if (duration < 10 * MINUTE_IN_SECONDS) { return 'Please ensure the vote duration is equal to or longer than 10 minutes.' @@ -109,7 +109,7 @@ function validationError( return null } -function Board({ +function Council({ dataKey, screenProps: { back, data, next, screenIndex, screens }, title, @@ -309,7 +309,7 @@ function Board({ > settings @@ -321,9 +321,9 @@ function Board({ margin-bottom: ${3 * GU}px; `} > - These settings determine who should be a member of the Board and + These settings determine who should be a member of the council and information related to the token used for determining membership. The - Board acts similarly to a traditional multisig account. + council acts similarly to a traditional multisig account.
- Board token name - - Board token name will be the name assigned to - the token representing your organization's board.{' '} - For example: My Board Token. + Council token name + + Council token name will be the name assigned to + the token representing the organization's council.{' '} + For example: My Council Token. } @@ -347,7 +347,7 @@ function Board({ ref={handleTokenNameRef} id={id} onChange={handleTokenNameChange} - placeholder="My Board Token" + placeholder="My Council Token" value={tokenName} wide /> @@ -357,12 +357,12 @@ function Board({ - Board token symbol - - Board token symbol will be the shortened name + Council token symbol + + Council token symbol will be the shortened name (typically in capital letters) assigned to the token - representing your organization's board.{' '} - For example: BRD. + representing the organization's council.{' '} + For example: CNL. } @@ -372,7 +372,7 @@ function Board({ id={id} onChange={handleTokenSymbolChange} value={tokenSymbol} - placeholder="BRD" + placeholder="CNL" wide /> )} @@ -386,7 +386,7 @@ function Board({ ${fieldsLayout} `} > -
Board members
+
Council members
} > @@ -434,7 +434,7 @@ function Board({ > settings @@ -447,14 +447,14 @@ function Board({ margin-bottom: ${3 * GU}px; `} > - These settings affect the decision making process for board members. + These settings affect the decision making process for council members. Number of signatures - Number of signatures is the number of board + Number of signatures is the number of council members who need to approve a vote for it to pass. @@ -485,10 +485,10 @@ function Board({ Vote duration - Vote Duration is the length of time that board's - votes will be open for participation. For example, if the Vote - Duration is set to 24 hours, then board members will have 24 hours - to participate in the vote. + Vote Duration is the length of time that + council's votes will be open for participation. For example, if + the Vote Duration is set to 24 hours, then council members will + have 24 hours to participate in the vote. } @@ -515,18 +515,18 @@ function Board({ ) } -Board.propTypes = { +Council.propTypes = { dataKey: PropTypes.string, screenProps: ScreenPropsType.isRequired, title: PropTypes.string, } -Board.defaultProps = { - dataKey: 'board', - title: 'Configure board', +Council.defaultProps = { + dataKey: 'council', + title: 'Configure council', } -Board.formatReviewFields = formatReviewFields +Council.formatReviewFields = formatReviewFields function Subtitle({ content }) { const theme = useTheme() @@ -698,4 +698,4 @@ function formatReviewFields(screenData) { ] } -export default Board +export default Council diff --git a/src/templates/fundraising/components/BoardInfo.js b/src/templates/fundraising/components/CouncilInfo.js similarity index 64% rename from src/templates/fundraising/components/BoardInfo.js rename to src/templates/fundraising/components/CouncilInfo.js index f95ccce87..3dbd16fad 100644 --- a/src/templates/fundraising/components/BoardInfo.js +++ b/src/templates/fundraising/components/CouncilInfo.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { GU, useTheme } from '@aragon/ui' import { Header, Navigation, ScreenPropsType } from '../../kit' -function BoardInfo({ +function CouncilInfo({ screenProps: { back, data, next, screenIndex, screens }, }) { const handleSubmit = useCallback( @@ -17,7 +17,7 @@ function BoardInfo({ return (
- The board acts as the representatives of the project being funded by - the fundraising campaign. Board members are represented through a - custom token and enforce their decision via a dedicated voting app set - to be used as a multisig. Their privileges are intentionally limited - to protect shareholders. + The council acts as the project team being funded by the fundraising + campaign. Council members are represented through a custom token and + enforce their decisions via a dedicated voting app that acts similarly + to a traditional multisig account. Their privileges are intentionally + limited to protect token holders. - The board only has the ability to: + The council only has the ability to: - Manage board members. The board decides on who is to - be included or excluded from the board. + Manage council members. The council decides on who is + to be included or excluded from the council. - Open the presale. The board decides on when the + Open the presale. The council decides on when the presale—and thus the fundraising campaign—is started. Handle the fundraising's proceeds. The fundraising proceeds are periodically transferred to a Vault / Finance app - controlled by the Board at their discretion. + controlled by the council at their discretion. - Open shareholder votes. The board decides on when new - votes should be opened for shareholders to enforce decisions over the - organization. + Open token holder votes. The council decides on when + new votes should be opened for token holders to enforce decisions over + the organization.
settings @@ -230,9 +230,8 @@ function Share({ margin-bottom: ${3 * GU}px; `} > - These settings configure the token that will represent your - organization's shareholders. This is the token that will be traded - through your fundraising campaign. + These settings configure the token that will represent the organization. + This is the token that can be acquired through the fundraising campaign.
- Share token name - - Share token name will be the name assigned to - the token representing your organization's shareholders.{' '} - For example: My Share Token. + Organization token name + + Organization token name will be the name + assigned to the token representing the organization.{' '} + For example: My Token. } @@ -256,7 +255,7 @@ function Share({ ref={handleTokenNameRef} id={id} onChange={handleTokenNameChange} - placeholder="My Share Token" + placeholder="My Token" value={tokenName} wide /> @@ -266,12 +265,11 @@ function Share({ - Share token symbol - - Share token symbol will be the shortened name - (typically in capital letters) assigned to the token - representing your organization's shareholders.{' '} - For example: SHR. + Organization token symbol + + Organization token symbol will be the shortened + name (typically in capital letters) assigned to the + organization's token. For example: TKN. } @@ -281,7 +279,7 @@ function Share({ id={id} onChange={handleTokenSymbolChange} value={tokenSymbol} - placeholder="SHR" + placeholder="TKN" wide /> )} @@ -307,7 +305,7 @@ function Share({ > settings @@ -321,7 +319,7 @@ function Share({ `} >

- These settings affect the decision making process for shareholders. + These settings affect the decision making process for token holders.

The support and minimum approval thresholds are strict requirements, @@ -336,11 +334,11 @@ function Share({ Support % - Support is the relative percentage of - shareholders' tokens that are required to vote “Yes” for a - proposal to be approved. For example, if “Support” is set to 51%, - then more than 51% of the tokens used to vote on a proposal must - be “Yes” for it to pass. + Support is the relative percentage of token + holders that are required to vote “Yes” for a proposal to be + approved. For example, if “Support” is set to 51%, then more than + 51% of the {tokenSymbol || 'tokens'} used to vote on a proposal + must be “Yes” for it to pass. } @@ -355,10 +353,11 @@ function Share({ Minimum approval % Minimum Approval is the percentage of the total{' '} - {tokenSymbol} supply that is required to vote “Yes” on a proposal - before it can be approved. For example, if the “Minimum Approval” - is set to 20%, then more than 20% of the outstanding {tokenSymbol}{' '} - supply must vote “Yes” on a proposal for it to pass. + {tokenSymbol || 'token'} supply that is required to vote “Yes” on + a proposal before it can be approved. For example, if the “Minimum + Approval” is set to 20%, then more than 20% of the outstanding{' '} + {tokenSymbol || 'token'} supply must vote “Yes” on a proposal for + it to pass. } @@ -373,10 +372,10 @@ function Share({ Vote duration - Vote Duration is the length of time that - shareholders' votes will be open for participation. For example, - if the Vote Duration is set to 24 hours, then shareholders will - have 24 hours to participate in the vote. + Vote Duration is the length of time that token + holders' votes will be open for participation. For example, if the + Vote Duration is set to 24 hours, token holders will have 24 hours + to participate in the vote. } @@ -464,17 +463,17 @@ function formatReviewFields(screenData) { ] } -Share.propTypes = { +Holders.propTypes = { dataKey: PropTypes.string, screenProps: ScreenPropsType.isRequired, title: PropTypes.string, } -Share.defaultProps = { - dataKey: 'share', +Holders.defaultProps = { + dataKey: 'holders', title: 'Configure template', } -Share.formatReviewFields = formatReviewFields +Holders.formatReviewFields = formatReviewFields -export default Share +export default Holders diff --git a/src/templates/fundraising/components/ShareInfo.js b/src/templates/fundraising/components/HoldersInfo.js similarity index 71% rename from src/templates/fundraising/components/ShareInfo.js rename to src/templates/fundraising/components/HoldersInfo.js index e2360a1fc..739292e2a 100644 --- a/src/templates/fundraising/components/ShareInfo.js +++ b/src/templates/fundraising/components/HoldersInfo.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { GU, Info, useTheme } from '@aragon/ui' import { Header, Navigation, ScreenPropsType } from '../../kit' -function ShareInfo({ +function HoldersInfo({ screenProps: { back, data, next, screenIndex, screens }, }) { const handleSubmit = useCallback( @@ -17,7 +17,7 @@ function ShareInfo({ return (

- The shareholders are the accounts contributing to the fundraising + The token holders are the accounts contributing to the fundraising campaign. They are represented through a custom bonded-token and a voting app. They hold most of the governance rights over the organization. - Shareholders can: + Token holders can: - Buy and redeem tokens. Shareholders can buy and + Buy and redeem tokens. Token holders can buy and redeem tokens through the Aragon Fundraising interface. - Handle fundraising parameters. Shareholders decide on - how beneficiary, fees, and collateralization settings should be + Handle fundraising parameters. Token holders decide + on how beneficiary, fees, and collateralization settings should be updated. They also control the amount of funds automatically - transferred to the board each month. + transferred to the council each month. - Handle organization settings. Shareholders decide on - which apps are installed or upgraded and which permissions are set. + Handle organization settings. Token holders decide on + which apps can be installed or upgraded and which permissions are set.

- This architecture grants most of the governance rights to - shareholders, to protect their investment. However, this also requires - the organization to be able to mitigate situations where a shareholder - could own the whole organization by owning more than 50% of the + This architecture grants most of the governance rights to token + holders, to protect their contribution. However, this also requires + the organization to be able to mitigate situations where a token + holder could own the whole organization by owning more than 50% of the shares.

- This is why shareholder votes, where most of the organization’s - decisions are made, can only be opened and initiated by the board. + This is why token holder votes, where most of the organization’s + decisions are made, can only be opened and initiated by the council.

completeDomain(data.domain) || 'Claim domain', props => , ], - ['Configure board', props => ], + ['Configure council', props => ], [ - 'Configure board', + 'Configure council', props => ( - + ), ], - ['Configure shareholders', props => ], + ['Configure token holders', props => ], [ - 'Configure shareholders', + 'Configure token holders', props => ( - ), ], @@ -199,7 +203,7 @@ export default { [ 'Review information', props => { - const { domain, board, share, fundraising } = props.data + const { domain, council, holders, fundraising } = props.data return (

Your fundraising campaign will start with a presale during which - your {data.share.tokenSymbol} tokens will be sold at a constant - price. If your presale succeeds in reaching the goal within its - time period, trading will open. Otherwise, your fundraising - campaign will abort with contributors allocated refunds. + the organization's {data.holders.tokenSymbol} tokens will be + sold at a constant price. If the presale succeeds in reaching + the goal within its time period, trading will open. Otherwise, + your fundraising campaign will abort with contributors allocated + refunds.

@@ -286,10 +287,10 @@ function FundraisingScreen({

Presale price is the constant price (in - DAI) your {data.share.tokenSymbol} tokens will sold at - during the presale.{' '} + DAI) the organization's {data.holders.tokenSymbol}{' '} + tokens will be sold at during the presale.{' '} - For example: 3 DAI per {data.share.tokenSymbol}. + For example: 3 DAI per {data.holders.tokenSymbol}.

- Later on, if the presale succeeds and trading opens, - your ${data.share.tokenSymbol} tokens' price will be - dynamically adjusted based on the market. + Later on, if the presale succeeds and trading opens, the + price of the organization's {data.holders.tokenSymbol}{' '} + tokens will be dynamically adjusted based on the market.

@@ -308,7 +309,7 @@ function FundraisingScreen({ {({ id }) => ( @@ -345,10 +346,10 @@ function FundraisingScreen({ Initial tokens offered % Initial tokens offered % describes the - percentage of the initial {data.share.tokenSymbol} token + percentage of the initial {data.holders.tokenSymbol} token supply that will be offered during the presale. The - remainder of this supply will be minted and sent the Board - if the presale succeeds. + remainder of this supply will be minted and sent to the + council if the presale succeeds. } @@ -362,10 +363,10 @@ function FundraisingScreen({ Project funding % describes the percentage of DAI raised during the presale that will be sent to the - Board (to bootstrap the campaign's underlying project) if + council (to bootstrap the campaign's underlying project) if the presale succeeds. The remainder of the raised DAI will be sent to the automated market maker's reserve pool to - support trading of ${data.share.tokenSymbol}. + support trading of ${data.holders.tokenSymbol}. } @@ -374,22 +375,26 @@ function FundraisingScreen({ /> -
+

- {data.share.tokenSymbol} tokens purchased during the presale + {data.holders.tokenSymbol} tokens purchased during the presale will be vested and thus un-transferable as long as the vesting cliff period has not been reached. The amount of{' '} - {data.share.tokenSymbol} tokens that are unlocked at the cliff + {data.holders.tokenSymbol} tokens that are unlocked at the cliff is directly proportional to the overall vesting schedule.

-

+

When the vesting schedule completes, all{' '} - {data.share.tokenSymbol} tokens will become transferable. + {data.holders.tokenSymbol} tokens will become transferable.

@@ -399,9 +404,9 @@ function FundraisingScreen({ Cliff period Cliff period describes the length of time - required before any {data.share.tokenSymbol} tokens + required before any {data.holders.tokenSymbol} tokens purchased during the presale become transferable.{' '} - For example: {fields.fundingPeriod + 30} days. + For example: {fields.fundingPeriod + 15} days. } @@ -422,7 +427,7 @@ function FundraisingScreen({ Vesting schedule Vesting schedule describes the length of - time required for all {data.share.tokenSymbol} tokens + time required for all {data.holders.tokenSymbol} tokens purchased during the presale to become transferable.{' '} For example: {fields.cliffPeriod + 30} days. @@ -454,9 +459,9 @@ function FundraisingScreen({ >

The funds collected by the fundraising campaign are released - over time to a Board-controlled vault to sustain the underlying - project. This mechanism is called the tap and can be - configured over time. + over time to a council-controlled vault to sustain the + underlying project. This mechanism is called the tap{' '} + and can be configured over time.

Tap rate defines the amount of DAI which can be released every month from the market-maker's - reserve pool to the Board-controlled vault.{' '} + reserve pool to the council-controlled vault.{' '} For example: 3000 DAI / month.

This ensures that the market-maker's reserve pool can't be - emptied - and thus that the {data.share.tokenSymbol} price - can't fall down all the way to zero - even if over a long - period of time. + emptied - and thus that the {data.holders.tokenSymbol}{' '} + price can't fall down all the way to zero - even if over a + long period of time.

@@ -545,9 +550,9 @@ function FundraisingScreen({ margin-top: ${1 * GU}px; `} > - This protects investors by controlling how quickly the - flow of funds from the market-maker's reserve pool to the - Board-controlled vault can evolve. + This protects holders by controlling how quickly the flow + of funds from the market-maker's reserve pool to the + council-controlled vault can evolve.

@@ -570,7 +575,7 @@ function FundraisingScreen({ organization's initial market capitalization. This value is calculated from the presale price, presale goal, initial token % offered, project funding %, and initial trading price per{' '} - {data.share.tokenSymbol}. + {data.holders.tokenSymbol}.

{!acceptableMinimumGrowth && (

- Initial price per {data.share.tokenSymbol} + Initial price per {data.holders.tokenSymbol} - Initial price per {data.share.tokenSymbol} + Initial price per {data.holders.tokenSymbol} {' '} - will be the price in DAI for each {data.share.tokenSymbol}{' '} - token when trading initially opens. Afterwards, the price - will automatically adjust according to the market. + will be the price in DAI for each{' '} + {data.holders.tokenSymbol} token when trading initially + opens. Afterwards, the price will automatically adjust + according to the market. } @@ -607,9 +613,9 @@ function FundraisingScreen({ {({ id }) => ( )} @@ -622,8 +628,8 @@ function FundraisingScreen({

Expected growth is the expected long-term market capitalization growth of{' '} - {data.share.tokenSymbol}. We use this value to set the - parameterization of {data.share.tokenSymbol}'s bonding + {data.holders.tokenSymbol}. We use this value to set the + parameterization of {data.holders.tokenSymbol}'s bonding curve such that the token's price will be 10x its initial trading price once its reached this capitalization. @@ -633,8 +639,9 @@ function FundraisingScreen({ margin-top: ${1 * GU}px; `} > - Setting a high expected growth will cause your bonding - curve to be more sensitive to volatility. + Setting a high expected growth will cause the bonding + curve attached to {data.holders.tokenSymbol} to be{' '} + more sensitive to volatility.

@@ -913,14 +920,14 @@ function ReviewFields({ data }) { group: 'Presale terms', fields: [ ['targetGoal', 'DAI', 'Goal'], - ['presalePrice', 'DAI per share', 'Price'], + ['presalePrice', 'DAI per token', 'Price'], ['fundingPeriod', 'days', 'Period'], ['tokensOffered', '%', 'Initial tokens offered'], ['projectFunding', '%', 'Project funding'], ], }, { - group: 'Investment terms', + group: 'Contribution terms', fields: [ ['cliffPeriod', 'days'], ['vestingSchedule', 'days'], @@ -937,7 +944,7 @@ function ReviewFields({ data }) { { group: 'Trading terms', fields: [ - ['initialPricePerShare', 'DAI per share', 'Initial trading price'], + ['initialPricePerToken', 'DAI per token', 'Initial trading price'], ['expectedGrowth', 'times'], ], },