- this is a major refactor of the code and may have broken some behavior
in the wallet or witness nodes.
- this commit changes the serialization of operations
- the chain_tests pass
The INITIAL_SUPPLY macro is generally not useful, and there's no good
way to fulfill the promise it creates. By removing it, I can skip the
scaling on the genesis values. Now, if there is an allocation at
genesis, the supply is determined by that allocation. Otherwise, the
supply is GRAPHENE_MAX_SHARE_SUPPLY and it all belongs to
GRAPHENE_COMMITTEE_ACCOUNT.
Also, remove one of the redundant and confusing MAX_SUPPLY macros and
unify the usage to always be GRAPHENE_MAX_SHARE_SUPPLY.
Use static variant to allow the types of vesting balances to be easily
extended and the creation operation allows for many different types of
initialization parameters.
Added a check that requires a minimum claim date which allows creating
of vesting balance objects with a cliff.
Reasons:
1. The protocol should not depend upon implementation details such as
how the database objects are structured or reflected
2. The protocol should deal in abstract concepts
3. Should use fc::datastream rather than istringstream for performance
and memory allocation reasons
4. Fees should be charged proportional to the size of the operation
5. Validate on the assert operation should also perform sanity checks
on types
6. Protocol definition objects should never depend upon the database
because they may be used in situations where the database and
evaluators are not present.
7. Reflected field names should never have '_' in them because they
become part of the *PUBLIC* json definition.
Declare, but not yet implement, account_upgrade_operation which can
upgrade accounts to members.
Resolve#21 by removing all the sketchy pointer arithmetic stuff