* Use ristretto_mul builtin to stay below BPF instruction limit
* Test against a full local validator
There's now three levels of integration test:
* local_e2e uses a native program and tests with a single Bank instance.
This configuration is simplest to compile and offers the best error
messages.
* validator_e2e uses a BPF program and tests with a single Validator
instance.
This configuration allows us to test new validator functionality
before it's released without having to spin up nodes manually.
* examples/tps.rs uses whatever cluster the Solana CLI points to,
which may be devnet, testnet, mainnet-beta or a cluster of your
own.
* Move interactions PublicKey to User constructor
* Permit incremental interaction submissions
* Split InitializePoliciesAccount into two instructions
* Clean up BPF instruction count output
* Update Themis program
* Get submit_interactions() working on testnet
* Fix build
* Add THEMIS Policy Contract
* Add test with 128 ads
* Add instructions
* Allow clients to work concurrently
* pub(crate) utils to find unused code
* Remove serde_json dep
* Drop dependency on primitive_types
* Add a simpler inner_product
* Use elgamal for proof verification
* Migrate to Ristretto
Also, use Serde for instruction serialization
* Add remaining instructions to processor
* Remove rand 0.6 dependency
* Add instruction constructors
* Add e2e test
* Move client test out of BPF build
* Add BPF instruction count test
Shows us that serde makes too many recursive calls and causes
a very high instruction count (Vec<U256> becomes impractical).
* Use Borsh serialization and test calculate_aggregate()
Bump BPF instruction count limits after upgrading compiler
* Test SubmitProofDecryption BPF instruction count
* Remove CompressedRistretto
This drops SubmitProofDecryption instructions by ~2.5M.
Also, box up more RistrettoPoints, because they're huge (120 bytes) and
blow up the BPF stack.
* Add transaction size metrics and update BPF counts
* Switch back to BN
* Add benchmarking
* Use configured keypair path
* Make num_users configurable
* Make testnet benchmark an example, not a test
* Exclude themis client from CI build
Because of Travis failure on itertools dependency