- 14 6月, 2017 5 次提交
-
-
由 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)
-
由 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.
-
由 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
-
由 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.
-
由 Nathan Hourt 提交于
And rename it to chain_initializer_interface
-
- 13 6月, 2017 4 次提交
-
-
由 Nathan Hourt 提交于
Previously, we created the initial producers by manually making the producer_object's in prepare_database. Now we create them by creating Messages directing their creation, and invoking the normal CreateProducer infrastructure.
-
由 Nathan Hourt 提交于
Aftermath of 55a84709 -- the chain library no longer ever touches genesis_state_type; this type is only recognized by native_contract now, so move its files from the chain library to the native_contract library.
-
由 Nathan Hourt 提交于
Fix initial supply config constant
-
由 Nathan Hourt 提交于
Add get types api
-
- 12 6月, 2017 2 次提交
-
-
由 Matias Romeo 提交于
-
由 Matias Romeo 提交于
-
- 11 6月, 2017 1 次提交
-
-
由 Matias Romeo 提交于
-
- 09 6月, 2017 2 次提交
-
-
由 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.
-
由 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.
-
- 07 6月, 2017 1 次提交
-
-
由 Daniel Larimer 提交于
-
- 06 6月, 2017 9 次提交
-
-
由 Nathan Hourt 提交于
Fix #26 fc::variant deserialization of boost::multiprecision::number<T>
-
由 Nathan Hourt 提交于
Looks good to me. Doesn't break the build on my Linux box.
-
由 Matias Romeo 提交于
-
由 Nathan Hourt 提交于
-
由 Nathan Hourt 提交于
Define notify handlers and require notifications be set correctly for messages moving funds from liquid to staked and back, so balances are tracked as they move between contracts
-
由 Nathan Hourt 提交于
Create all three native contracts at genesis, and split the various messages among them appropriately.
-
由 Daniel Larimer 提交于
-
由 Daniel Larimer 提交于
-
由 Daniel Larimer 提交于
-
- 04 6月, 2017 1 次提交
-
-
由 Phil Mesnier 提交于
Update the ignore file to include more build artifacts and to exclude some legitimate *.cmake fles. Add to lib/fc/ cmake to add explicit reference to secp256k1 location for an issue on mac.
-
- 03 6月, 2017 3 次提交
-
-
由 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.
-
由 Nathan Hourt 提交于
Begin defining objects and contract handlers for tracking producer votes and the "race" to select runner-up producers
-
由 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.
-
- 02 6月, 2017 3 次提交
-
-
由 Nathan Hourt 提交于
Eventually I'd like proper Docker infrastructure, but this is a good enough starting point just to demonstrate a proper development environment
-
由 Nathan Hourt 提交于
Make the language a bit more consistent
-
由 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.
-
- 01 6月, 2017 9 次提交
-
-
由 Nathan Hourt 提交于
-
由 Daniel Larimer 提交于
-
由 Daniel Larimer 提交于
-
由 Nathan Hourt 提交于
Taking cues from https://github.com/LocutusOfBorg/websocketpp/commit/ 1dd07113f2a7489444a8990a95be42e035f8e9df
-
由 Nathan Hourt 提交于
We shouldn't need this anymore. I don't even think we use this anymore.
-
由 Nathan Hourt 提交于
These changes should add support for openssl 1.1.0 while maintaining compatibility with 1.0.2
-
由 Nathan Hourt 提交于
Missing #include<mutex> necessary to use std::unique_lock. According to http://en.cppreference.com/w/cpp/thread/unique_lock the correct header is <mutex>.
-
由 Daniel Larimer 提交于
-
由 Daniel Larimer 提交于
-