aboutsummaryrefslogtreecommitdiffstats
path: root/simulation
Commit message (Collapse)AuthorAgeFilesLines
* crypto: sigtopub to crypto package. remove SigToPubFn (#141)Jimmy Hu2018-09-262-5/+2
|
* core: move crypto to core/crypto (#140)Mission Liao2018-09-263-3/+3
| | | | | | | | | - Move key-holder to authenticator Make core.keyHolder public as core.Authenticator, it is not required to make this part an interface. - Make private when there is no need to go public. - Fix data race
* core: configuration chain test (#137)Jimmy Hu2018-09-261-4/+1
|
* core: run TSIG for first configuration block at startup (#135)Jimmy Hu2018-09-264-12/+46
|
* core: update governance interface to consider genesis state (#136)Wei-Ning Huang2018-09-252-11/+12
|
* Fix naming of methods (#134)Mission Liao2018-09-251-8/+8
| | | | | | - BlockDeliver -> BlockDelivered - TotalOrderingDeliver -> TotalOrderingDelivered - WitnessAckDeliver -> WitnessAckDelivered - VerifyPayload -> VerifyPayloads
* core: add debug (#133)Mission Liao2018-09-251-64/+19
| | | | | | | | | | | | | | | | | | | | | * Split interface * Rename nonblocking-application to nonblocking Parts needs nonblocking gets more. * Implement core.nonBlocking based on interface split * Fix: the witness parent hash could be parent on compaction chain. * Rename Application.DeliverBlock to BlockDeliver To sync with naming of other methods. * Change methods' fingerprint - BlockConfirmed provides block hash only. - BlockDeliver provde a whole block.
* core: run first DKG at startup. (#129)Jimmy Hu2018-09-235-7/+24
|
* core: refactor witness data processing flow (#124)Wei-Ning Huang2018-09-201-0/+15
| | | | | | | | | | | Since witness data need to include data from application after it processed a block (e.g. stateRoot). We should make the process of witness data asynchronous. An interface `BlockProcessedChan()` is added to the application interface to return a channel for notifying the consensus core when a block is processed. The notification object includes a byte slice (witenss data) which will be include in the final witness data object.
* test_config: update config to latest runnable version (#122)Wei-Ning Huang2018-09-201-1/+1
|
* Rename validator* to node* (#120)Mission Liao2018-09-2013-138/+138
|
* core: rename Notary (Acks) to Witness (#118)Wei-Ning Huang2018-09-193-10/+10
|
* core:DKG and TSIG protocol (#115)Jimmy Hu2018-09-193-3/+31
|
* core: refine governance interface to reduce Get* methods (#114)Wei-Ning Huang2018-09-181-56/+24
| | | | | Since we have a bunch of static configurations in the governance contract, instead of using a Get* method for each of them, we instead implement a GetConfiguration() method to return a structure of the configurations.
* core: remove ticker parameter from NewConsensusMission Liao2018-09-183-16/+12
| | | | | | | | | - remove BlockProposingInterval, it's replaced by lambda. - remove ticker parameter of NewConsensus, ticker would be derived from governance. - leave a backdoor to hook the construction of ticker. - move 'Lambda' config from to consensus.
* core: move blockdb into core package and minor change on governance ↵Wei-Ning Huang2018-09-172-3/+8
| | | | | | | interface (#110) Since third party apps will possibly implement their only blockdb class, it make sense for the interface to be in core. Also add GetNumShards into the governance interface.
* core: DKG interface (#108)Jimmy Hu2018-09-173-4/+72
|
* cleanup (#109)Mission Liao2018-09-171-18/+15
| | | | | | - With context, we don't need stopChan - Remove core.BlockChain. - Remove unused variable.
* core: fix VerifyPayload argument (#103)Wei-Ning Huang2018-09-131-1/+1
| | | | Since we are using a byte slice for storing payload. VerifyPayload() should also accepts a byte slice.
* core: replace acks with slice (#102)Mission Liao2018-09-121-1/+1
|
* core: types: use []byte for block Payload type (#101)Wei-Ning Huang2018-09-121-3/+3
| | | | | Change payload type to []byte instead of [][]byte to make it more generic. The user of the consensus core should marshal the payload into a byte slice by themselves.
* simulation: integrate test.Transport (#99)Mission Liao2018-09-1111-950/+468
| | | | | - Add marshaller for simulation by encoding/json - Implement peer server based on test.TranportServer - Remove network models, they are replaced with test.LatencyModel
* core: timestamp (#98)Jimmy Hu2018-09-111-1/+1
|
* misc: Polish BA. (#94)Jimmy Hu2018-09-054-22/+44
|
* core: BA-based consensus core. (#93)Jimmy Hu2018-09-043-2/+16
|
* Add GetChainNumber to Goverance (#92)Jimmy Hu2018-09-033-23/+19
|
* core: minor change to governance interface (#90)Wei-Ning Huang2018-09-031-5/+0
|
* core: Add a new structure `Position` and move `ShardID`, `ChainID` and ↵Jimmy Hu2018-09-031-2/+2
| | | | `Height` from `Block` (#89)
* Add methods to Application interface. (#86)Jimmy Hu2018-08-312-92/+11
|
* Use Network in Consensus core (#85)Jimmy Hu2018-08-311-1/+4
|
* core: Add PreparePayloads to Application and Remove blockConverter ↵Jimmy Hu2018-08-304-7/+16
| | | | interface. (#84)
* core: Change the lattice key from validatorID to chainID. (#83)Jimmy Hu2018-08-301-0/+13
| | | | | * Add chainID in simulation.Validator * Change validatorid to chainID in rbModule
* core: Leader Selector. (#80)Jimmy Hu2018-08-303-6/+24
|
* core: Add agreement module (#77)Jimmy Hu2018-08-291-2/+13
|
* core: tune performance (#73)Mission Liao2018-08-284-37/+70
| | | | | | | | | | | | | | | | | | | | | | - Avoid using recursive function in critical path. - Do not write through when using levelDB. Things put to levelDB would be safe from panic even we didn't force to write through every time. - Dump count of confirmed blocks proposed by self. - Avoid allocating variables in loop. - Return length of acking node set, we only need that when total ordering. - Fix potential bug: make sure win records updated when acking height vectors of candidates are changed. - Keep dirty validators in slice. - Add cache for objects to ease the pressure to garbage collector. - Cache global acking status when total ordering. - Add method to recycle blocks. - Marshal JSON should be called once for each broadcast. - Make updateWinRecord called in parallel. - Log average / deviation of latencies when simulation finished.
* core: Add vote type and add field to block. (#76)Jimmy Hu2018-08-283-0/+19
|
* simulation: remove fake network (#74)Wei-Ning Huang2018-08-253-166/+18
|
* simulation: allow to run simulation with scheduler on k8s (#72)Mission Liao2018-08-226-0/+96
| | | | | | | | To run a simulation with scheduler on k8s: ./run_scheduler.sh 61 5 Where *61* means the simulation contains 61 validators, and *5* means the simulation utilizes 5 vCPUs and corresponding concurrent workers to run.
* core: Notary ack application. (#70)Jimmy Hu2018-08-224-0/+29
|
* core: Notary ack (#69)Jimmy Hu2018-08-211-2/+2
|
* core: NotaryAck interfaces. (#67)Jimmy Hu2018-08-201-0/+4
|
* simulation: taken network latency model into consideration in TCP mode (#68)Mission Liao2018-08-203-15/+26
| | | | | | - Clone block once for each broadcast - Add network latency model for TCPNetwork - Fix map concurrent write
* simulation: Fix port reuse error in simulation. (#65)Jimmy Hu2018-08-172-16/+71
|
* core: Prepare Genesis block. (#54)Jimmy Hu2018-08-141-7/+4
|
* Use RLock for simulation.simApp.blockByHash (#53)Jimmy Hu2018-08-131-4/+3
|
* simulation: Create Consensus core after Join. (#51)Jimmy Hu2018-08-134-32/+31
|
* simulation: fix concurrent map write (#52)Wei-Ning Huang2018-08-134-6/+15
| | | Fix concurrent map write and also change k8s settings.
* core: Sign block in Consensus.PrepareBlock. (#50)Jimmy Hu2018-08-132-5/+10
|
* simulation: kubernetes: update configWei-Ning Huang2018-08-134-11/+11
|
* core: ValidatorID.Hash is the hash of public key. (#49)Jimmy Hu2018-08-132-9/+21
|
* simulation: kubernetes: update config templateWei-Ning Huang2018-08-131-0/+4
|
* core: Modify Consensus interface (#45)Jimmy Hu2018-08-101-1/+1
|
* core: update governance interface and move K into config (#40)Wei-Ning Huang2018-08-105-89/+125
|
* Add genesis block to simulation app. (#44)Jimmy Hu2018-08-101-0/+1
|
* Fix the bug preventing us from testing large group when using TCP-Local (#42)Mission Liao2018-08-102-21/+24
| | | | | | | | | | | | | | | | | | | | * Fix the issue that processing genesis block twice. - Restore the mechanism to avoid sending block to proposer. * Fix the 'keep-alive' not working Quote from comments of net/http/request For client requests, setting this field prevents re-use of TCP connections between requests to the same hosts, as if Transport.DisableKeepAlives were set. * Remove useless field * Fix the test bug: I should provide '3' when test K=3 * Fixup: the parent hash of genesis block should be zero
* core: Deliver only Hash to Application. (#43)Jimmy Hu2018-08-102-9/+17
|
* core: Add Block.IsGenesis() and set Block.ParentHash to 0 in genesis block. ↵Jimmy Hu2018-08-091-4/+3
| | | | (#37)
* simulation: Fix k8s simulation issues. (#36)Jimmy Hu2018-08-092-9/+38
| | | | | | | | | | | | * Refine peer server * k8s ignore * Keep peer server alive on k8s * Stop validators from accepting new blocks after peer server has shut down. * Add comment
* core: Add Consensus to replace core.Blocklattice (#35)Mission Liao2018-08-085-36/+171
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Make Sequencer return slice of blocks. * Fix naming issue The function 'getHeightVecto' would return ackingStatusVector. * Fix comment error. * Add methods to collect info when proposing blocks. * Add test.App * Add test.Gov * Move this type to core.types to avoid cyclic import. * Add core.Consensus * Move getMedianTime, interpoTime to util These functions are not depending on members of core.consensusTimestamp and is required when testing core.Consensus. * Make sure types.Block.Clone would copy critical fields. * Remove core.blocklattice * Define 'infinity' in core/total-ordering This definition is defined in core/blocklattice originally. * Fix a bug when processing the same block twice. * Integrate simulation with core.Consensus core.Consensus is a replacement of core.Blocklattice * Fix the comment to use sigular form. * Move lock mechanism to sub modules. * phi should be 2*fmax+1 * Fixup: should aborting when the validator is added * Fix for new block fields * Fix the bug that the total ordering sequence is wrong.
* simulation: Show internal and external timestamp latency. (#30)Jimmy Hu2018-08-074-17/+193
|
* simulation: tcp-network: force http.Client to reuse connection (#33)Wei-Ning Huang2018-08-061-15/+22
| | | Force connection reuse and TCP keep alive by using the same http client for all reqeusts.
* simulation: free resource after use and misc fix for k8s mode (#31)Wei-Ning Huang2018-08-068-14/+63
|
* Remove timestamp generating function in validator (#25)Jimmy Hu2018-08-011-8/+0
|
* core: refine Application interface and add Governance interface (#24)Wei-Ning Huang2018-07-311-7/+7
| | | | | | | Add a new Governance interface for interaction with the governance contract. Also remove the ValidateBlock call in application interface as the application should validate it before putting it into the consensus module. A new BlockConverter interface is also added. The consensus module should accept the BlockConverter interface in future implementation, and use the Block() function to get the underlying block info.
* blockdb: allow to dump blocks to json-encoded fileMission Liao2018-07-312-10/+9
| | | | | | | | | | | | - Allow to dump blockdb to a json file - Compared to leveldb, a json file is easier to trace. - Add interfaces block database: - Close would be required by database that needs cleanup. - BlockIterator is required when we need to access 'all' blocks, adding a new method 'GetAll' as the constructor for iterators. - Remove GetByValidatorAndHeight from blockdb.Reader - This function is not used anywhere, to make interface minimum, remove it. - Fix typo: backend -> backed
* Print block confirm latency when Peer Server stopped. (#23)Jimmy Hu2018-07-318-26/+67
|
* Print confirmed blocks per second when Peer Server stopped. (#22)Jimmy Hu2018-07-312-0/+47
|
* Add a config that PeerServer can shutdown after receiving enough of block. (#19)Jimmy Hu2018-07-308-22/+240
|
* Verify the Total Ordering Algorithm in peerServer in tcp mode (#11)Jimmy Hu2018-07-269-16/+328
| | | Verify the Total Ordering Algorithm in peerServer in tcp mode.
* simulation: fix tcp-local network simulation (#8)Wei-Ning Huang2018-07-232-2/+6
| | | | | | * simulation: fix tcp-local network simulation * fixup
* Implement simulation on a real network (#5)Wei-Ning Huang2018-07-2014-129/+720
| | | simulation: implement simulation on a real network
* core: refactor acking relationship (#3)Wei-Ning Huang2018-07-181-1/+1
| | | | | | | | | * core: refactor acking relationship Use AckBy only, and remove IndirectAcks. Also fix the issue where validator is not filling Height when proposing block.
* Initial implementation of DEXON consensus algorithmWei-Ning Huang2018-07-167-0/+521