blockchain migration - GenusDev/genie-portal GitHub Wiki

Deploys contracts by specifying

  • rate, the rate is set on a one to one basis with wei, meaning the price per token is pegged to the price of wei. The important factor will be what denomination we set our token at in the front-end. As of now we are going with 100,000. Previously we had set the price to 50, which which would have made the price of each token .02, or 1/50. This seemed arbitrary, which is why we switched to a 1 to 1 basis. (This is subject to an analysis of price vs exchange rate, and their significant differences (which is unclear as of now)).

Contract linking

Allows you to use a library within a contract. We are using ECRecovery to facilitate signing and paying for transactions for someone else's behalf, for voting.

deployment process

Two contracts reference each other - (token and dividends). In order to reference a contract it has to be deployed. The token instance can deploy with out dividends contract, but the dividends contract requires the token instance. For the Token instance there is a function (initializeDividendWallet) that is called in the migration file after the contract deploys that passes the dividend contract instance after it has been deployed. The dividends contract is passed a token instance on deployment. (draw a diagram showing the references and timing of each deployment)

Crowdsale General Ownership

Token, Voting, Dividends, Reimbursements, project(when deployed on main-net), projectLeaderTracker contracts have a function that transfers/designates ownership of that contract to crowdsale. General ownership privileges include

  • the ability to move tokens from a crowdsale to a buyer
  • transference of inactive tokens
  • set the dividend wallet (only done in the migration file)
  • The owner of the project contract (crowdsale) will be able to activate a project (when conditions are met)

Primary Ownership (transferPrimary)

Primary owners can perform specific functionality separate from the general owner specific to that contract. Token, for example, has a primary ownership function that is provided to designate an owner (in this case the voting contract) with powers to free up and assign token votes. Project has a similar function to provide the Voting contract primary ownership powers to add and remove votes from a project.

Issues

Need a system for identifying package management. Which packages are for truffle which are global which are for the root which versions to use which are gem installations

Chronicle error messages found, and what solutions were used to address them.

.env file didn’t have quotes around mnemonic that was being imported potentially also needed it in the root truffle folder Need a system for managing which node modules are being used between the truffle folder and the root folder remove folder and figure out which packages need to be where. Version issue

Error encountered, bailing. Network state unknown. Review successful transactions manually. Error: The contract code couldn't be stored, please check your gas amount.

⚠️ **GitHub.com Fallback** ⚠️