1. 13 6月, 2017 4 次提交
  2. 12 6月, 2017 2 次提交
  3. 11 6月, 2017 1 次提交
  4. 09 6月, 2017 2 次提交
    • N
      Rename context.recipient->context.scope · e1691416
      Nathan Hourt 提交于
      Ohh, my life would've been easier during my last commit if that rename
      had actually been done rather than just commented about.
      e1691416
    • N
      Exodus of Genesis · 55a84709
      Nathan Hourt 提交于
      OK, so this turned out to be a **massive** refactor that I thought I'd
      never finish, and no, I don't remember everything that changed here, but
      I think it all worked out to be better than before, and almost all of it
      was fairly necessary/the best of available options. Whew. I am SO glad
      this is finally done.
      
      High level goal: Continue refining the native contracts (ref #15),
      specifically
      walling off their state into their own contract DBs rather than globally
      shared (read: stuff that race conditions are made of) general blockchain
      state.
      
      The first real change I made in this commit, which precipitated the
      avalanche of changes that followed before the project became consistent
      again, was to move the account balance out of account_object (globally
      shared) to an object known only to the Eos Contract, thus eliminating
      the possibility of race conditions/nondeterministic behavior.
      
      The trouble is, balances are set at genesis. Genesis is processed by
      chain_controller. chain_controller cannot know about balances, since
      those are an abstraction defined on top of the Eos contract, which is an
      abstraction defined on top of chain_controller. So all of genesis had to
      be reimagined, and quite a lot of architectural changes had to be made
      in order to create a logically consistent solution.
      
      Changes (probably incomplete):
       - Fix up notifications within the native contract to support
      precondition validation as well as application
      
       - Add notify handlers for CreateAccount to Eos and Staked Balance
      contracts
      
       - Move account's liquid balance of EOS from account_object to
      BalanceObject
      
       - Replace {producer,account}_object::id_type with AccountName most
      everywhere except block_header, which still contains a
      producer_object::id_type (potentially in violation of protocol
      standards, but I want to confirm that before fixing it)
         - Reason: The name is not significantly slower, as it's fixed length so
      no heap allocs, and it simplifies the code in quite a few places by
      allowing us to look up objects directly rather than indirectly by
      looking up an ID to get an intermediate object to get a handle for the
      object we really wanted
      
       - Replace native_system_contract_plugin with native_contract library
         - Reason: The plugin was getting in the way. The native system
      contract C++ implementation is simply too fundamental unless/until we
      have a scripted implementation that works until the native
      implementation gets installed
      
       - Completely reimagine genesis initialization, taking it largely out of
      the hands of chain_controller and putting it in the hands of
      native_contract
         - Reason: chain_controller understands relatively little about
      genesis. It understands global_property_object and producer_object, but
      not BalanceObject or StakedBalanceObject, etc... It also doesn't
      understand the native_contract, and things like installing the native
      contract, setting up accounts/balances, etc. all need to be handled by
      something... native_contract is the most logical place to put it.
      
      Sorry for the enormous commit... alas, this was the first time I got it
      all building again and passing tests in days.
      55a84709
  5. 07 6月, 2017 1 次提交
  6. 06 6月, 2017 9 次提交
  7. 04 6月, 2017 1 次提交
  8. 03 6月, 2017 3 次提交
    • N
      Ref #15, #19: Progress Un/Locking EOS · ae5cf81f
      Nathan Hourt 提交于
      Initial work on locking EOS, beginning unlock, and claiming unlocked
      EOS.
      
      TODO: Actually split the system contract, and define names for the
      different parts so we can check that the required notifications are made.
      Also, figure out how to write notify handlers for the native contracts,
      to handle these critical balance updates in the staking/unstaking of
      EOS. See the #warning TODO comments in the commit for context.
      ae5cf81f
    • N
      Ref #19: Progress on producer voting and race · 8c8e555f
      Nathan Hourt 提交于
      Begin defining objects and contract handlers for tracking producer votes
      and the "race" to select runner-up producers
      8c8e555f
    • N
      Refactor native_system_contract_plugin · 0e03af75
      Nathan Hourt 提交于
      Replace monolithic implementation file system_contract_impl.hpp with
      topic-specific implementations in separate files with clean header/
      implementation separation. Use structs to namespace the various message
      handlers rather than Message_ prefixes.
      0e03af75
  9. 02 6月, 2017 3 次提交
    • N
      Resolve #20 for now · 9b1cb2c1
      Nathan Hourt 提交于
      Eventually I'd like proper Docker infrastructure, but this is a good
      enough starting point just to demonstrate a proper development environment
      9b1cb2c1
    • N
      Tweak README.md · a8ce27cf
      Nathan Hourt 提交于
      Make the language a bit more consistent
      a8ce27cf
    • N
      Update README.md · f2181d42
      Nathan Hourt 提交于
      Remove discussion of outdated dependencies and update instructions to describe a single-node testnet.
      
      Since the P2P code was the reason we had the outdated dependencies that made setting up a development environment such a pain, we removed it until we can implement a better solution. In the meantime, only single-node testnets are possible.
      f2181d42
  10. 01 6月, 2017 14 次提交