Skip to content

Instantly share code, notes, and snippets.

View anthdm's full-sized avatar

Anthony De Meulemeester anthdm

View GitHub Profile
@anthdm
anthdm / coz_bounty_anthdm_hbbft.md
Last active February 7, 2020 16:09
CoZ bounty submission: The Honey Badger of BFT Protocols

The Honey Badger of BFT Protocols

Like I promised, hereby my official submission for the CoZ bounty, which contains a full and practical implementation of the HoneyBadger algorithm as described in the paper. All sub-protocols are tested and implemented in the top-level HoneyBadger protocol.

The repository can be found here.

Why honey badger as the submission?

Like most other BFT protocols hbbft is very well suited for the land of the wild --which in my opinion the crypto landscape is as today-- it guarantees liveness of the network even when nodes are behaving faulty. But what intrigued me the most is how its constructed --which comes at a high implementation cost in time and effort--. The hbbft algorithm contains 4 protocols which I implemented in modular building blocks. These protocols can be separately tested and implemented.

  • Reliable broadcast algorithm (rbc.go)
  • Byzantine binary agreement (bba.go)
@anthdm
anthdm / coz_contribution_report_#43.md
Created May 4, 2018 05:20
coz_contribution_report_#43

NEO-GO

Consensus research

Spend a lot of time researching NEO's consensus algorithm and its implementation. We all know NEO has issues with its implementation, hence I thought its better to spend more time in looking for better solutions that copy pasting the current implementation from #c to go. I also have an experiment with the "honey badger" algorithm @canesis pointed out on Discord. I will make a PR draft with some implementations next week.

Smart contract ICO template PR #78

As final example before the beta launch of neo-go, I will make full port of the NEX ICO template, by doing this some underlying bugs are being discoverd (which is a good thing).

VARIA

@anthdm
anthdm / coz_contribution_report_#42.md
Last active April 24, 2018 17:43
coz_contribution_report_#42

NEO-GO

Setting up the neo-go compiler for integration with NeoResearch compiler eco

Lost of compiler and VM tests + added the smartcontract crypto VM helper functions PR #73

  • Made new tests for compiler and VM
  • Ported the last compiler tests over to the VM to test both at the same time.
  • Implemented smartcontract crypto helpers in compiler and VM. (SHA1, SHA256, Hash256, Hash160)
@anthdm
anthdm / coz_contribution_report_#41.md
Last active April 17, 2018 05:39
coz_contribution_report_#41

NEO-GO

Networking and storage tweaks PR#66

  • made Encode/Decode message public.
  • added Redis storage adapter.
  • optimized bootstrapping blockchains from stored files.

VM / Compiler / smart contract update PR#67

  • Added support for passing smart contract arguments
  • Compiler support for type assertions
@anthdm
anthdm / coz_contribution_report_#40.md
Created April 10, 2018 05:42
coz_contribution_report_#40

NEO-GO

VM and compiler update #PR63

  • added compiler support for unary expressions (!x)
  • added compiler support for builtin (append)
  • fixed builtin (len) for strings
  • fixed bug where byte opcodes could cause incorrect jump labels
  • added loadgo command for the VM
  • added loadhex command for the VM
  • renamed load to loadavm
@anthdm
anthdm / coz_contribution_report_#39.md
Created April 3, 2018 14:11
coz_contribution_report_#39

NEO-GO

Virtual machine + debugger PR#60

  • complete virtual machine and debugger implementation for Go.
    _   ____________        __________      _    ____  ___
   / | / / ____/ __ \      / ____/ __ \    | |  / /  |/  /
  /  |/ / __/ / / / /_____/ / __/ / / /____| | / / /|_/ /
 / /|  / /___/ /_/ /_____/ /_/ / /_/ /_____/ |/ / /  / /
@anthdm
anthdm / coz_contribution_report_#38.md
Last active March 27, 2018 06:05
coz_contribution_report_#38

NEO-GO

Persist transactions on disk PR#51

  • Implemented the missing transactions
  • Refactored ECPoint into higher lever public key API
  • persist unspent coin states.

Processing of full blocks + persist all states on disk + merkle tree PR#53

  • fixed a bug during encoding/decoding ECPoints
  • account and coin states are now saved on disk
@anthdm
anthdm / coz_contribution_report_#37.md
Created March 19, 2018 18:59
coz_contribution_report_#37

NEO-GO

Node network improvements PR#45

  • small networking improvements
  • fixed data race
  • housekeeping

Node improvements (discovery + testsuite) PR#47

  • Better and faster handling of protocol messsages
  • Implemented Node discovery and peer management
@anthdm
anthdm / COZ_contribution_report_week_#36.md
Last active March 12, 2018 21:06
COZ contribution report week #36

NEO-GO

Started RPC package #PR42

  • sendrawtransaction
  • getblock
  • getaccountstate
  • invokescript

Wired invokescript in the neo-cli for testing out smartcontracts.

@anthdm
anthdm / COZ_contribution_report_week_#35.md
Last active March 5, 2018 15:53
COZ_contribution_report_week_#35

NEO-GO

Compiler update (ready to start writing smart contracts) #PR31

  • refactored struct scope
  • added bytearray type
  • added smart contract examples in the README

Example smart contracts can be found here

Base NEP-2/NEP-6 wallet implementation #PR35