Run a cyberRAISE round
Create a SAFE round, take an investor EOI, allocate it, and close the round
In this tutorial you create a SAFE round on a cyberCORP's RoundManager, take an investor's Expression of Interest, allocate it, and close the round.
Code here is illustrative of the flow, using the real signatures and structs from
cybercorps-contracts(develop). TheRoundandEOIstructs are large — check the source for every field.
The flow at a glance:
Prerequisites
A cyberCORP from Tutorial 1. You need its roundManager address and an officer key.
1. Build the round
A round is a Round struct (RoundLib.sol). Build it with the RoundLib builder — draft(), then setTickets, then setAgreement:
RoundType.FCFS accepts EOIs first-come; RoundType.FounderApproved requires the officer to allocate each one.
The escrowedSignature is the authorityOfficer's EIP-712 signature over the round's economic parameters (the EscrowedSignatureData struct in RoundManagerStorage.sol). createRound recomputes the hash from the draft and reverts InvalidEscrowedSignature if it does not verify.
2. Create the round
createRound also creates a cert printer (LedgerEntryToken) for each CyberCertData entry you pass.
3. Investor submits an EOI
The investor signs the round's agreement (EIP-712) offchain and submits an EOI struct (RoundManagerStorage.sol):
4. Allocate the EOI
The officer allocates an accepted EOI. allocate prices the ticket, mints a SAFE cyberCERT per printer, attaches the officer's escrowed signature and an endorsement, and refunds any rounding dust.
5. Close the round
What you just did
Built and created a SAFE round, which also created its cert printer.
Took a signed EOI, allocated it, and minted the investor's SAFE cyberCERT.
Closed the round.
Next
Reference: RoundManager.
Last updated
Was this helpful?
