1. 16 6月, 2017 9 次提交
  2. 15 6月, 2017 5 次提交
    • N
      Fix build · f28757d2
      Nathan Hourt 提交于
      f28757d2
    • N
      Ref #19: Implement producer scheduling · 566c1da9
      Nathan Hourt 提交于
      Calculating the new producer schedule based on votes is now implemented;
      however, the voting itself is not. :D But the code builds, and the tests
      pass. It's good progress, it's been a good day.
      
      Note that "the tests pass" means little at this stage, since I haven't
      written any new tests to exercise the new code. In other words, NEEDS
      TESTING!
      566c1da9
    • N
      Small Refactors · cb13ff0d
      Nathan Hourt 提交于
      - Rename config::ProducerCount -> config::BlocksPerRound
      - Add new config::VotedProducersPerRound = 20
      - Split up staked_balance_objects.hpp moving ProducerVotesObject to
      producer_objects.hpp
      cb13ff0d
    • D
      Merge branch 'master' of github.com:EOSIO/eos · f52851b4
      Daniel Larimer 提交于
      f52851b4
    • D
      Adding wasm-jit code · 3111f0ea
      Daniel Larimer 提交于
      3111f0ea
  3. 14 6月, 2017 5 次提交
    • N
      Ref #19: Progress towards producer scheduling · 67114624
      Nathan Hourt 提交于
      Add producer schedule changes to block_header, so light clients can see
      the round changes by just watching block headers.
      
      Implement changing the producer schedule at round changes, first checking
      that the schedule changes in the block_header are correct, then applying
      them.
      
      TODO: Actually calculating the new round (right not it never changes)
      67114624
    • N
      Change block_header::producer from id_type to AccountName · 925be47f
      Nathan Hourt 提交于
      Wire protocol specs say never to put an id_type on the wire, but
      block_header contained the id_type for the producer which created it.
      Fix this by using the AccountName of the producer's owner instead.
      925be47f
    • N
      Resolve #17: Update blockchain configuration on round change · d0e2c256
      Nathan Hourt 提交于
      The producer-median-voted blockchain configuration parameters are now
      updated when the round changes. The previously expected-failing test
      case for this now passes
      d0e2c256
    • N
      Add chain_administration_interface · dc91c3ca
      Nathan Hourt 提交于
      This new interface allows the chain_controller to request a fresh round
      of producers and request the producers' median voted blockchain
      configuration.
      
      Net yet complete, but integrated sufficiently to get the tests to pass.
      dc91c3ca
    • N
      Move chain_initializer to its own header · 37f2b650
      Nathan Hourt 提交于
      And rename it to chain_initializer_interface
      37f2b650
  4. 13 6月, 2017 5 次提交
  5. 12 6月, 2017 2 次提交
  6. 11 6月, 2017 1 次提交
  7. 10 6月, 2017 2 次提交
  8. 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
  9. 07 6月, 2017 1 次提交
  10. 06 6月, 2017 8 次提交