├── .gitignore ├── LICENSE ├── README.md ├── benchmark ├── README.md ├── contracts │ ├── ethereum │ │ ├── cpuheavy.sol │ │ ├── donothing.sol │ │ ├── ioheavy.sol │ │ ├── kvstore.sol │ │ └── smallbank.sol │ ├── fabric-v1.4 │ │ ├── analytic │ │ │ └── analytic.go │ │ ├── donothing │ │ │ └── donothing.go │ │ ├── ioheavy │ │ │ └── ioheavy.go │ │ ├── kvstore │ │ │ └── kvstore.go │ │ ├── smallbank │ │ │ └── smallbank.go │ │ └── sorter │ │ │ └── sorter.go │ ├── fabric-v2.2 │ │ ├── donothing │ │ │ ├── donothing.go │ │ │ ├── go.mod │ │ │ └── go.sum │ │ ├── ioheavy │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── ioheavy.go │ │ ├── kvstore │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── kvstore.go │ │ ├── smallbank │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── smallbank.go │ │ └── sorter │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── sorter.go │ └── hyperledger │ │ ├── go │ │ ├── analytic │ │ │ └── analytic.go │ │ ├── donothing │ │ │ └── donothing.go │ │ ├── io │ │ │ └── io.go │ │ ├── kvstore-v0.6 │ │ │ └── kvstore-v0.6.go │ │ ├── smallbank │ │ │ └── smallbank.go │ │ └── sorter │ │ │ └── sorter.go │ │ └── java │ │ ├── CPUHeavy │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── example │ │ │ └── CPUHeavy.java │ │ ├── DoNothing │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── example │ │ │ └── DoNothing.java │ │ ├── Doubler │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── example │ │ │ └── Doubler.java │ │ ├── EtherId │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── example │ │ │ └── EtherId.java │ │ ├── IOHeavy │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── example │ │ │ └── IOHeavy.java │ │ ├── SmallbankExample │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── example │ │ │ └── SmallbankExample.java │ │ ├── TxValue │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── example │ │ │ └── TxValue.java │ │ ├── VersionKvStore │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── example │ │ │ └── VersionKvStore.java │ │ └── WavesPresale │ │ ├── build.gradle │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ └── java │ │ └── example │ │ └── WavesPresale.java ├── ethereum │ ├── CustomGenesis.json │ ├── CustomGenesis_12.json │ ├── CustomGenesis_16.json │ ├── CustomGenesis_2.json │ ├── CustomGenesis_20.json │ ├── CustomGenesis_24.json │ ├── CustomGenesis_28.json │ ├── CustomGenesis_32.json │ ├── CustomGenesis_4.json │ ├── CustomGenesis_4_large.json │ ├── CustomGenesis_4_low.json │ ├── CustomGenesis_4_lowest.json │ ├── CustomGenesis_8.json │ ├── README.md │ ├── addPeer.txt │ ├── clients │ ├── config.py │ ├── contracts.md │ ├── donothing_exps.md │ ├── enode.sh │ ├── env.sh │ ├── env_donothing.sh │ ├── env_ycsb.sh │ ├── exps.py │ ├── gather.sh │ ├── hosts │ ├── init-all.sh │ ├── init.sh │ ├── install.sh │ ├── partition.py │ ├── partition.sh │ ├── run-bench-security.sh │ ├── run-bench.sh │ ├── saturation_exps.md │ ├── security_exps.md │ ├── start-all.sh │ ├── start-clients.sh │ ├── start-mining.sh │ ├── start-multi-clients.sh │ ├── stop-all.sh │ └── stop.sh ├── fabric-v1.4 │ ├── README.md │ └── four-nodes-docker │ │ ├── channel_artifacts │ │ ├── channel.tx │ │ └── genesis.block │ │ ├── configtx.yaml │ │ ├── core.yaml │ │ ├── crypto_config.yaml │ │ ├── crypto_config │ │ ├── ordererOrganizations │ │ │ └── example.com │ │ │ │ ├── ca │ │ │ │ ├── 000df376ecc737b7b368e50125722fe67ca5bb1232e7b3dab140b953ce44c387_sk │ │ │ │ └── ca.example.com-cert.pem │ │ │ │ ├── msp │ │ │ │ ├── admincerts │ │ │ │ │ └── Admin@example.com-cert.pem │ │ │ │ ├── cacerts │ │ │ │ │ └── ca.example.com-cert.pem │ │ │ │ └── tlscacerts │ │ │ │ │ └── tlsca.example.com-cert.pem │ │ │ │ ├── orderers │ │ │ │ └── orderer.example.com │ │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── Admin@example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.example.com-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ │ └── 5b59570de9e7d3e8300a2ae3593173b6ace9c1bfdaf6b9ebb5b10ab0c536843d_sk │ │ │ │ │ ├── signcerts │ │ │ │ │ │ └── orderer.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.example.com-cert.pem │ │ │ │ │ └── tls │ │ │ │ │ ├── ca.crt │ │ │ │ │ ├── server.crt │ │ │ │ │ └── server.key │ │ │ │ ├── tlsca │ │ │ │ ├── 1e1d81f25e8f2b989d0dd89f3179021c5109af4ca2d1892dcfecb474b2359dcb_sk │ │ │ │ └── tlsca.example.com-cert.pem │ │ │ │ └── users │ │ │ │ └── Admin@example.com │ │ │ │ ├── msp │ │ │ │ ├── admincerts │ │ │ │ │ └── Admin@example.com-cert.pem │ │ │ │ ├── cacerts │ │ │ │ │ └── ca.example.com-cert.pem │ │ │ │ ├── keystore │ │ │ │ │ └── 4ae1aa6ace3e283d4277520d485db918077915762591dfed7785740af51cb230_sk │ │ │ │ ├── signcerts │ │ │ │ │ └── Admin@example.com-cert.pem │ │ │ │ └── tlscacerts │ │ │ │ │ └── tlsca.example.com-cert.pem │ │ │ │ └── tls │ │ │ │ ├── ca.crt │ │ │ │ ├── client.crt │ │ │ │ └── client.key │ │ └── peerOrganizations │ │ │ └── org1.example.com │ │ │ ├── ca │ │ │ ├── 1f82b855463e72fd8a93787f6b734e6f0b044fae32b1ffd360926d841ca6e054_sk │ │ │ └── ca.org1.example.com-cert.pem │ │ │ ├── msp │ │ │ ├── admincerts │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ ├── cacerts │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ └── tlscacerts │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ ├── peers │ │ │ ├── peer0.org1.example.com │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ │ └── 8caac7279c9844a2d7eb26116d62917019c8c7119279a824b0034dbb7a358a83_sk │ │ │ │ │ ├── signcerts │ │ │ │ │ │ └── peer0.org1.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ └── tls │ │ │ │ │ ├── ca.crt │ │ │ │ │ ├── server.crt │ │ │ │ │ └── server.key │ │ │ ├── peer1.org1.example.com │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ │ └── 76d5a05194b6f6ef00f3276bce0dd5ea3034366a82df1692f17c695591044b29_sk │ │ │ │ │ ├── signcerts │ │ │ │ │ │ └── peer1.org1.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ └── tls │ │ │ │ │ ├── ca.crt │ │ │ │ │ ├── server.crt │ │ │ │ │ └── server.key │ │ │ ├── peer2.org1.example.com │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ │ └── e2d995b228f23a1831445d7585c53c91171b7fc301ab118eaddc3e3c5cf92a47_sk │ │ │ │ │ ├── signcerts │ │ │ │ │ │ └── peer2.org1.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ └── tls │ │ │ │ │ ├── ca.crt │ │ │ │ │ ├── server.crt │ │ │ │ │ └── server.key │ │ │ └── peer3.org1.example.com │ │ │ │ ├── msp │ │ │ │ ├── admincerts │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ ├── cacerts │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ ├── keystore │ │ │ │ │ └── fa8744ae3b8d6b6db2fa16f790d13682f750c1b9cc44c61b03b43b0cb2f4232f_sk │ │ │ │ ├── signcerts │ │ │ │ │ └── peer3.org1.example.com-cert.pem │ │ │ │ └── tlscacerts │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ └── tls │ │ │ │ ├── ca.crt │ │ │ │ ├── server.crt │ │ │ │ └── server.key │ │ │ ├── tlsca │ │ │ ├── 42932f89faa9e1bd652303ef0e60e27c9c8b02301190b4b4b76722a39da11356_sk │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ └── users │ │ │ ├── Admin@org1.example.com │ │ │ ├── msp │ │ │ │ ├── admincerts │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ ├── cacerts │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ ├── keystore │ │ │ │ │ └── 004c74ffb0dcf8b4e1a422dd1cc4202ccf6137124f46c6aab0a636dc6ffd28ec_sk │ │ │ │ ├── signcerts │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ └── tlscacerts │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ └── tls │ │ │ │ ├── ca.crt │ │ │ │ ├── client.crt │ │ │ │ └── client.key │ │ │ └── User1@org1.example.com │ │ │ ├── msp │ │ │ ├── admincerts │ │ │ │ └── User1@org1.example.com-cert.pem │ │ │ ├── cacerts │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ ├── keystore │ │ │ │ └── 2f237b2473e0e9f1d63d2715b1c0acdf376a481cbf0259befc1355361229209a_sk │ │ │ ├── signcerts │ │ │ │ └── User1@org1.example.com-cert.pem │ │ │ └── tlscacerts │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ └── tls │ │ │ ├── ca.crt │ │ │ ├── client.crt │ │ │ └── client.key │ │ ├── docker-compose.yaml │ │ ├── init.sh │ │ ├── log.txt │ │ ├── rpcchannel.block │ │ └── setup.sh ├── fabric-v2.2 │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── configtx.yaml │ │ ├── core.yaml │ │ └── orderer.yaml │ ├── configtx │ │ └── configtx.yaml │ ├── docker │ │ ├── .env │ │ ├── docker-compose-ca.yaml │ │ └── docker-compose-test-net.yaml │ ├── network.sh │ ├── organizations │ │ ├── ccp-generate.sh │ │ ├── ccp-template.json │ │ ├── ccp-template.yaml │ │ ├── cryptogen │ │ │ ├── crypto-config-orderer.yaml │ │ │ ├── crypto-config-org1.yaml │ │ │ └── crypto-config-org2.yaml │ │ └── fabric-ca │ │ │ └── registerEnroll.sh │ ├── scripts │ │ ├── createChannel.sh │ │ ├── deployCC.sh │ │ └── envVar.sh │ └── services │ │ ├── .gitignore │ │ ├── app.yaml │ │ ├── block-server.js │ │ ├── enrollAdmin.js │ │ ├── package.json │ │ ├── registerUser.js │ │ └── txn-server.js ├── hyperledger │ ├── README.md │ ├── clients │ ├── config.py │ ├── contracts.md │ ├── docker │ ├── donothing_exps.md │ ├── env.sh │ ├── exps.py │ ├── hl_consensus_1.yaml │ ├── hl_consensus_12.yaml │ ├── hl_consensus_16.yaml │ ├── hl_consensus_2.yaml │ ├── hl_consensus_20.yaml │ ├── hl_consensus_24.yaml │ ├── hl_consensus_28.yaml │ ├── hl_consensus_32.yaml │ ├── hl_consensus_4.yaml │ ├── hl_consensus_8.yaml │ ├── hl_consensus_8_bigbatch.yaml │ ├── hl_consensus_8_smallbatch.yaml │ ├── hl_core.yaml │ ├── hosts │ ├── install.sh │ ├── partition.py │ ├── partition.sh │ ├── run-bench-security.sh │ ├── run-bench.sh │ ├── saturation_exps.md │ ├── security_exps.md │ ├── start-clients.sh │ ├── start-multi-clients-drop4.sh │ ├── start-multi-clients.sh │ ├── start-peers.sh │ ├── start-root.sh │ ├── start-slave.sh │ └── stop-peers.sh ├── parity │ ├── README.md │ ├── chain_spec.json │ ├── chain_spec.json.template │ ├── config.py │ ├── config.toml.1 │ ├── config.toml.template │ ├── config_donothing.py │ ├── config_drop.py │ ├── config_saturation.py │ ├── config_scale.py │ ├── config_scale_fix_8.py │ ├── config_security.py │ ├── config_smallbank.py │ ├── config_ycsb.py │ ├── gen_config.py │ ├── keys │ │ ├── keyfile01 │ │ ├── keyfile02 │ │ ├── keyfile03 │ │ ├── keyfile04 │ │ ├── keyfile05 │ │ ├── keyfile06 │ │ ├── keyfile07 │ │ ├── keyfile08 │ │ ├── keyfile09 │ │ ├── keyfile10 │ │ ├── keyfile11 │ │ ├── keyfile12 │ │ ├── keyfile13 │ │ ├── keyfile14 │ │ ├── keyfile15 │ │ ├── keyfile16 │ │ ├── keyfile17 │ │ ├── keyfile18 │ │ ├── keyfile19 │ │ ├── keyfile20 │ │ ├── keyfile21 │ │ ├── keyfile22 │ │ ├── keyfile23 │ │ ├── keyfile24 │ │ ├── keyfile25 │ │ ├── keyfile26 │ │ ├── keyfile27 │ │ ├── keyfile28 │ │ ├── keyfile29 │ │ ├── keyfile30 │ │ ├── keyfile31 │ │ └── keyfile32 │ ├── node.pwds │ ├── partition.py │ ├── partition.sh │ ├── patch_restclient │ ├── run.py │ ├── run_all.py │ ├── start_donothing_client.sh │ ├── start_parity.sh │ ├── start_smallbank_client.sh │ └── start_ycsb_client.sh ├── quorum_pbft │ ├── clients │ ├── config.py │ ├── config.pyc │ ├── env.sh │ ├── env_donothing.sh │ ├── env_ycsb.sh │ ├── exps.py │ ├── genesis1.json │ ├── genesis12.json │ ├── genesis16.json │ ├── genesis2.json │ ├── genesis4.json │ ├── genesis8.json │ ├── hosts │ ├── init-all.sh │ ├── init.sh │ ├── nodekey │ │ ├── nodekey1 │ │ │ └── 0 │ │ │ │ └── nodekey │ │ ├── nodekey12 │ │ │ ├── 0 │ │ │ │ └── nodekey │ │ │ ├── 1 │ │ │ │ └── nodekey │ │ │ ├── 2 │ │ │ │ └── nodekey │ │ │ ├── 3 │ │ │ │ └── nodekey │ │ │ ├── 4 │ │ │ │ └── nodekey │ │ │ ├── 5 │ │ │ │ └── nodekey │ │ │ ├── 6 │ │ │ │ └── nodekey │ │ │ ├── 7 │ │ │ │ └── nodekey │ │ │ ├── 8 │ │ │ │ └── nodekey │ │ │ ├── 9 │ │ │ │ └── nodekey │ │ │ ├── 10 │ │ │ │ └── nodekey │ │ │ └── 11 │ │ │ │ └── nodekey │ │ ├── nodekey16 │ │ │ ├── 0 │ │ │ │ └── nodekey │ │ │ ├── 1 │ │ │ │ └── nodekey │ │ │ ├── 2 │ │ │ │ └── nodekey │ │ │ ├── 3 │ │ │ │ └── nodekey │ │ │ ├── 4 │ │ │ │ └── nodekey │ │ │ ├── 5 │ │ │ │ └── nodekey │ │ │ ├── 6 │ │ │ │ └── nodekey │ │ │ ├── 7 │ │ │ │ └── nodekey │ │ │ ├── 8 │ │ │ │ └── nodekey │ │ │ ├── 9 │ │ │ │ └── nodekey │ │ │ ├── 10 │ │ │ │ └── nodekey │ │ │ ├── 11 │ │ │ │ └── nodekey │ │ │ ├── 12 │ │ │ │ └── nodekey │ │ │ ├── 13 │ │ │ │ └── nodekey │ │ │ ├── 14 │ │ │ │ └── nodekey │ │ │ └── 15 │ │ │ │ └── nodekey │ │ ├── nodekey2 │ │ │ ├── 0 │ │ │ │ └── nodekey │ │ │ └── 1 │ │ │ │ └── nodekey │ │ ├── nodekey4 │ │ │ ├── 0 │ │ │ │ └── nodekey │ │ │ ├── 1 │ │ │ │ └── nodekey │ │ │ ├── 2 │ │ │ │ └── nodekey │ │ │ └── 3 │ │ │ │ └── nodekey │ │ └── nodekey8 │ │ │ ├── 0 │ │ │ └── nodekey │ │ │ ├── 1 │ │ │ └── nodekey │ │ │ ├── 2 │ │ │ └── nodekey │ │ │ ├── 3 │ │ │ └── nodekey │ │ │ ├── 4 │ │ │ └── nodekey │ │ │ ├── 5 │ │ │ └── nodekey │ │ │ ├── 6 │ │ │ └── nodekey │ │ │ └── 7 │ │ │ └── nodekey │ ├── partition.py │ ├── partition.sh │ ├── run-bench-security.sh │ ├── run-bench.sh │ ├── start-all.sh │ ├── start-clients.sh │ ├── start-mining.sh │ ├── start-multi-clients.sh │ ├── static-nodes │ │ ├── static-nodes1.json │ │ ├── static-nodes12.json │ │ ├── static-nodes16.json │ │ ├── static-nodes2.json │ │ ├── static-nodes4.json │ │ └── static-nodes8.json │ ├── stop-all.sh │ └── stop.sh ├── quorum_raft │ ├── README.md │ ├── addresses │ ├── clients │ ├── config.py │ ├── config.pyc │ ├── env.sh │ ├── env_donothing.sh │ ├── env_ycsb.sh │ ├── exps.py │ ├── genesis_quorum.json │ ├── hosts │ ├── init-all.sh │ ├── init.sh │ ├── install.sh │ ├── keys │ │ ├── key1 │ │ ├── key10 │ │ ├── key11 │ │ ├── key12 │ │ ├── key13 │ │ ├── key14 │ │ ├── key15 │ │ ├── key16 │ │ ├── key17 │ │ ├── key18 │ │ ├── key2 │ │ ├── key3 │ │ ├── key4 │ │ ├── key5 │ │ ├── key6 │ │ ├── key7 │ │ ├── key8 │ │ └── key9 │ ├── partition.py │ ├── partition.sh │ ├── raft │ │ ├── nodekey1 │ │ ├── nodekey10 │ │ ├── nodekey11 │ │ ├── nodekey12 │ │ ├── nodekey13 │ │ ├── nodekey14 │ │ ├── nodekey15 │ │ ├── nodekey16 │ │ ├── nodekey2 │ │ ├── nodekey3 │ │ ├── nodekey4 │ │ ├── nodekey5 │ │ ├── nodekey6 │ │ ├── nodekey7 │ │ ├── nodekey8 │ │ ├── nodekey9 │ │ ├── static-nodes.json │ │ ├── static-nodes16.json │ │ ├── static-nodes2.json │ │ ├── static-nodes4.json │ │ └── static-nodes8.json │ ├── run-bench-security.sh │ ├── run-bench.sh │ ├── start-all.sh │ ├── start-clients.sh │ ├── start-mining.sh │ ├── start-multi-clients.sh │ ├── stop-all.sh │ └── stop.sh └── quorum_vote │ ├── README.md │ ├── addPeer.txt │ ├── addresses │ ├── clients │ ├── config.py │ ├── config.pyc │ ├── enode.sh │ ├── env.sh │ ├── env_donothing.sh │ ├── env_ycsb.sh │ ├── exps.py │ ├── gather.sh │ ├── genesis_quorum.json │ ├── hosts │ ├── init-all.sh │ ├── init.sh │ ├── install.sh │ ├── keys │ ├── key1 │ ├── key10 │ ├── key11 │ ├── key12 │ ├── key13 │ ├── key14 │ ├── key15 │ ├── key16 │ ├── key17 │ ├── key18 │ ├── key2 │ ├── key3 │ ├── key4 │ ├── key5 │ ├── key6 │ ├── key7 │ ├── key8 │ └── key9 │ ├── partition.py │ ├── partition.sh │ ├── raft │ ├── nodekey1 │ ├── nodekey10 │ ├── nodekey11 │ ├── nodekey12 │ ├── nodekey13 │ ├── nodekey14 │ ├── nodekey15 │ ├── nodekey16 │ ├── nodekey2 │ ├── nodekey3 │ ├── nodekey4 │ ├── nodekey5 │ ├── nodekey6 │ ├── nodekey7 │ ├── nodekey8 │ ├── nodekey9 │ ├── static-nodes.json │ ├── static-nodes16.json │ ├── static-nodes2.json │ ├── static-nodes4.json │ └── static-nodes8.json │ ├── run-bench-security.sh │ ├── run-bench.sh │ ├── start-addPeer.sh │ ├── start-all.sh │ ├── start-clients.sh │ ├── start-mining.sh │ ├── start-multi-clients.sh │ ├── stop-all.sh │ └── stop.sh └── src ├── README.md ├── macro ├── README.md ├── kvstore │ ├── .gitignore │ ├── LICENSE │ ├── Makefile │ ├── aggregate.py │ ├── core │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── bb_utils.h │ │ ├── client.h │ │ ├── const_generator.h │ │ ├── core_workload.cc │ │ ├── core_workload.h │ │ ├── counter_generator.h │ │ ├── db.h │ │ ├── discrete_generator.h │ │ ├── evm_utils.cc │ │ ├── evm_utils.h │ │ ├── fabricv2_util.cc │ │ ├── fabricv2_utils.h │ │ ├── generator.h │ │ ├── hyperledger_utils.cc │ │ ├── hyperledger_utils.h │ │ ├── properties.h │ │ ├── scrambled_zipfian_generator.h │ │ ├── skewed_latest_generator.h │ │ ├── timer.h │ │ ├── uniform_generator.h │ │ ├── utils.cc │ │ ├── utils.h │ │ └── zipfian_generator.h │ ├── db │ │ ├── Makefile │ │ ├── README.md │ │ ├── db_factory.cc │ │ ├── db_factory.h │ │ ├── evm_db.cc │ │ ├── evm_db.h │ │ ├── fabric_db.cc │ │ ├── fabric_db.h │ │ ├── fabricv2_db.cc │ │ ├── fabricv2_db.h │ │ ├── hyperledger_db.cc │ │ └── hyperledger_db.h │ ├── fabric-v1.4-node │ │ ├── ccutil.js │ │ ├── deploy_donothing.sh │ │ ├── deploy_kv.sh │ │ ├── env.sh │ │ ├── invoke_donothing.js │ │ ├── invoke_kv.js │ │ ├── package.json │ │ ├── poll_blk.js │ │ └── query_blk_height.js │ ├── lib │ │ ├── mem_alloc.h │ │ ├── string.h │ │ └── string_hashtable.h │ ├── output │ ├── parse_result.py │ ├── workloads │ │ ├── workloada.spec │ │ ├── workloadb.spec │ │ ├── workloadc.spec │ │ └── workloadd.spec │ └── ycsbc.cc └── smallbank │ ├── Makefile │ ├── api_adapters │ ├── DB.h │ ├── EVMDB.cc │ ├── EVMDB.h │ ├── Fabric.cc │ ├── Fabric.h │ ├── FabricV2.cc │ ├── FabricV2.h │ ├── Makefile │ ├── SmallBank.cc │ ├── SmallBank.h │ └── fabric-v1.4-node │ │ ├── ccutil.js │ │ ├── deploy.sh │ │ ├── env.sh │ │ ├── invoke.js │ │ ├── package.json │ │ ├── poll_blk.js │ │ └── query_blk_height.js │ ├── smallbank.cc │ ├── stat.txt │ └── utils │ ├── Makefile │ ├── chaincode_apis.h │ ├── generators.h │ ├── properties.h │ ├── spinlock.h │ ├── statistic.h │ ├── timer.cc │ ├── timer.h │ └── utils.h └── micro ├── README.md ├── analytic ├── README.md ├── ethereum │ ├── README.md │ ├── bench_q1.js │ ├── bench_q2.js │ ├── bench_q3.js │ └── txn_gen.js ├── fabric-v1.4 │ ├── README.md │ ├── bench_q1.js │ ├── bench_q2.js │ ├── ccutil.js │ ├── deploy.sh │ ├── env.sh │ ├── package.json │ ├── populate.js │ └── query_blk_height.js └── hyperledger │ ├── README.md │ ├── bench_q1.js │ ├── bench_q2.js │ ├── deploy.js │ └── populate.js ├── cpuheavy ├── README.md ├── ethereum │ ├── README.md │ └── deploy.js ├── fabric-v1.4 │ ├── README.md │ ├── benchmark.sh │ ├── deploy.sh │ ├── env.sh │ └── log.txt ├── fabric-v2.2 │ └── README.md └── hyperledger │ ├── README.md │ ├── deploy.js │ └── invoke.js ├── ethereum_script ├── genesis.json ├── key │ ├── 0x12f029d57082315085bfb4d4d8345c92c5cdd881 │ ├── 0x5e6c130dcc56495f22842c1853b18a9bed464033 │ ├── 0x5ee89873ac0081ec1227bb5cec31508c761cb8be │ ├── 0x88c65c5ca67b70a75d62bf6e160d2b0c21fff246 │ ├── UTC--2017-12-06T06-40-22.889936405Z--ef900bbbaae5a961677568b85df30b291cd8f553 │ ├── UTC--2017-12-06T06-40-29.433668815Z--459c956fceee8d04fc770b01f9a640fff5c0b622 │ ├── UTC--2017-12-06T06-40-32.169431768Z--d5214baf93444abda6c3e291099764cb5d65b006 │ ├── UTC--2017-12-06T06-40-33.530746290Z--887a5bb2ee499e3b452bd8385d57c7c4cbfbcfbb │ ├── UTC--2017-12-06T06-40-34.762958944Z--5defa977d0702be63ffdbae8a876bba889c0e0aa │ └── UTC--2017-12-06T06-40-36.090178163Z--1434974002bae55e91ae50cafde3fc8c92aec746 └── start_ethereum.sh ├── ioheavy ├── README.md ├── ethereum │ ├── README.md │ ├── deploy.js │ ├── scan.js │ └── write.js ├── fabric-v1.4 │ ├── README.md │ ├── deploy.sh │ ├── env.sh │ ├── scan.sh │ └── write.sh ├── fabric-v2.2 │ └── README.md └── hyperledger │ ├── README.md │ ├── deploy.js │ ├── scan.js │ └── write.js └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Node.js libraries 2 | node_modules/ 3 | data/ 4 | package-lock.json 5 | .node-* 6 | msp/ 7 | vendor/ 8 | *log* 9 | log.txt 10 | *vscode* 11 | driver 12 | *.o 13 | tmp 14 | -------------------------------------------------------------------------------- /benchmark/contracts/ethereum/donothing.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.4.0; 2 | 3 | contract Nothing { 4 | function nothing() { 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /benchmark/contracts/ethereum/kvstore.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.4.0; 2 | 3 | contract KVstore { 4 | 5 | mapping(string=>string) store; 6 | 7 | function get(string key) constant returns(string) { 8 | return store[key]; 9 | } 10 | function set(string key, string value) { 11 | store[key] = value; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /benchmark/contracts/fabric-v1.4/donothing/donothing.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/hyperledger/fabric/core/chaincode/shim" 7 | pb "github.com/hyperledger/fabric/protos/peer" 8 | ) 9 | 10 | type DoNothing struct { 11 | } 12 | 13 | func main() { 14 | err := shim.Start(new(DoNothing)) 15 | if err != nil { 16 | fmt.Printf("Error starting donothing: %s", err) 17 | } 18 | } 19 | 20 | func (t *DoNothing) Init(stub shim.ChaincodeStubInterface) pb.Response { 21 | // nothing to do 22 | return shim.Success(nil) 23 | } 24 | 25 | func (t *DoNothing) Invoke(stub shim.ChaincodeStubInterface) pb.Response { 26 | return shim.Success(nil) 27 | } 28 | -------------------------------------------------------------------------------- /benchmark/contracts/fabric-v2.2/donothing/donothing.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/hyperledger/fabric-contract-api-go/contractapi" 7 | ) 8 | 9 | type DoNothing struct { 10 | contractapi.Contract 11 | } 12 | 13 | func main() { 14 | chaincode, err := contractapi.NewChaincode(new(DoNothing)) 15 | if err != nil { 16 | fmt.Printf("Error starting DoNothing: %s", err) 17 | } 18 | if err := chaincode.Start(); err != nil { 19 | fmt.Printf("Error starting DoNothing: %s", err.Error()) 20 | } 21 | } 22 | 23 | 24 | func (t *DoNothing) Invoke(ctx contractapi.TransactionContextInterface) error { 25 | return nil 26 | } 27 | -------------------------------------------------------------------------------- /benchmark/contracts/fabric-v2.2/donothing/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/blockbench/donothing 2 | 3 | go 1.14 4 | 5 | require github.com/hyperledger/fabric-contract-api-go v1.1.0 6 | -------------------------------------------------------------------------------- /benchmark/contracts/fabric-v2.2/ioheavy/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/blockbench/ioheavy 2 | 3 | go 1.14 4 | 5 | require github.com/hyperledger/fabric-contract-api-go v1.1.0 6 | -------------------------------------------------------------------------------- /benchmark/contracts/fabric-v2.2/kvstore/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/blockbench/kvstore 2 | 3 | go 1.14 4 | 5 | require github.com/hyperledger/fabric-contract-api-go v1.1.0 6 | -------------------------------------------------------------------------------- /benchmark/contracts/fabric-v2.2/smallbank/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/blockbench/smallbank 2 | 3 | go 1.14 4 | 5 | require github.com/hyperledger/fabric-contract-api-go v1.1.0 6 | -------------------------------------------------------------------------------- /benchmark/contracts/fabric-v2.2/sorter/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/blockbench/sorter 2 | 3 | go 1.14 4 | 5 | require github.com/hyperledger/fabric-contract-api-go v1.1.0 6 | -------------------------------------------------------------------------------- /benchmark/contracts/hyperledger/go/donothing/donothing.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "errors" 5 | "fmt" 6 | 7 | "github.com/hyperledger/fabric/core/chaincode/shim" 8 | ) 9 | 10 | type DoNothing struct { 11 | } 12 | 13 | func main() { 14 | err := shim.Start(new(DoNothing)) 15 | if err != nil { 16 | fmt.Printf("Error starting donothing: %s", err) 17 | } 18 | } 19 | 20 | func (t *DoNothing) Init(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) { 21 | return nil, nil 22 | } 23 | 24 | func (t *DoNothing) Invoke(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) { 25 | 26 | if function == "donothing" { 27 | return nil, nil 28 | } 29 | return nil, errors.New("Received unknown function invocation") 30 | } 31 | 32 | func (t *DoNothing) Query(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) { 33 | return nil, errors.New("Received unknown function query") 34 | } 35 | -------------------------------------------------------------------------------- /benchmark/contracts/hyperledger/java/DoNothing/src/main/java/example/DoNothing.java: -------------------------------------------------------------------------------- 1 | // Do nothing, to test Consensus layer 2 | 3 | package example; 4 | 5 | import org.hyperledger.java.shim.ChaincodeBase; 6 | import org.hyperledger.java.shim.ChaincodeStub; 7 | public class DoNothing extends ChaincodeBase { 8 | @Override 9 | public String run(ChaincodeStub stub, String function, String[] args) { 10 | stub.getState("0"); 11 | return null; 12 | } 13 | 14 | @Override 15 | public String query(ChaincodeStub stub, String function, String[] args) { 16 | return ""; 17 | } 18 | 19 | @Override 20 | public String getChaincodeID() { 21 | return "Do nothing"; 22 | } 23 | 24 | public static void main(String[] args) throws Exception { 25 | new DoNothing().start(args); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0x1fffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_12.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0xbfffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_16.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0xefffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0xfffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_20.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0x1afffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_24.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0x1ffffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_28.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0x3ffffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_32.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0x5ffffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_4.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0x5fffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_4_large.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x80000000", 7 | "difficulty": "0x5fffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_4_low.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x800000", 7 | "difficulty": "0x5fffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_4_lowest.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x80000", 7 | "difficulty": "0x5fffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/CustomGenesis_8.json: -------------------------------------------------------------------------------- 1 | { 2 | "nonce": "0x0000000000000042", 3 | "timestamp": "0x0", 4 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 5 | "extraData": "0x0", 6 | "gasLimit": "0x8000000", 7 | "difficulty": "0x9fffff", 8 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 9 | "coinbase": "0x3333333333333333333333333333333333333333", 10 | "alloc": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /benchmark/ethereum/addPeer.txt: -------------------------------------------------------------------------------- 1 | admin.addPeer("enode://def2074b0dc7ee8b6027a76e955fa468f34e52c72237d761e6e6619d189a8e2e35b0fe57512b54e1b02589fb78f7f68ed02ad825f5898d7f612bf73ddb94b718@10.0.0.3:30303") 2 | admin.addPeer("enode://1a2849c910ac440663242906ca225606460cea1556956306d7f3acadbe7c271435ef8b83145d939df9fee011cf3609d111e3d56b29f1a7ea000209cc3d9108dd@10.0.0.4:30303") 3 | -------------------------------------------------------------------------------- /benchmark/ethereum/clients: -------------------------------------------------------------------------------- 1 | 10.0.0.100 2 | 10.0.0.99 3 | 10.0.0.98 4 | 10.0.0.97 5 | 10.0.0.96 6 | 10.0.0.95 7 | 10.0.0.94 8 | 10.0.0.93 9 | 10.0.0.92 10 | 10.0.0.91 11 | 10.0.0.90 12 | 10.0.0.89 13 | 10.0.0.88 14 | 10.0.0.87 15 | 10.0.0.86 16 | 10.0.0.85 17 | -------------------------------------------------------------------------------- /benchmark/ethereum/config.py: -------------------------------------------------------------------------------- 1 | NODES=['10.0.0.{}'.format(x) for x in range(3,11)] 2 | partition_cmd = './partition.sh {} {} {} &' 3 | TIMEOUT=150 4 | -------------------------------------------------------------------------------- /benchmark/ethereum/donothing_exps.md: -------------------------------------------------------------------------------- 1 | # How to run the DoNothing benchmark 2 | 3 | To launch experiments with varying client request rates, we use 4 | 5 | `python exps.py -donothing` 6 | 7 | All the steps are the same as for the [saturation experiment](saturation_exps.md), except the followings: 8 | 9 | + Binary path, logging path settings are in `env_donothing.sh` 10 | 11 | + Pass the `-donothing` flag to the script 12 | -------------------------------------------------------------------------------- /benchmark/ethereum/enode.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ip_addr=$1 3 | ETH_DATA=/data/dinhtta/eth 4 | 5 | geth --datadir=$ETH_DATA --rpc --rpcaddr 0.0.0.0 --rpcport "8000" --rpccorsdomain "*" --gasprice 0 --networkid 9119 --unlock 0 --password <(echo -n "") js <(echo 'console.log(admin.nodeInfo.enode);') 2>/dev/null |grep enode | perl -pe "s/\[\:\:\]/$ip_addr/g" | perl -pe "s/^/\"/; s/\s*$/\"/;" 6 | 7 | -------------------------------------------------------------------------------- /benchmark/ethereum/env.sh: -------------------------------------------------------------------------------- 1 | ETH_HOME=/users/dinhtta/anh/blockchain-perf/benchmark/ethereum 2 | HOSTS=$ETH_HOME/hosts 3 | CLIENTS=$ETH_HOME/clients 4 | ETH_DATA=/data/dinhtta/eth 5 | LOG_DIR=$ETH_HOME/donothing_donothingresults_1 6 | EXE_HOME=/users/dinhtta/anh/wangji_3/blockchain-perf/src/donothing 7 | BENCHMARK=ycsb 8 | 9 | ##comment these out for smallbank 10 | #EXE_HOME=$ETH_HOME/../../src/smallbank/ethereum/ycsb 11 | #BENCHMARK=smallbank 12 | -------------------------------------------------------------------------------- /benchmark/ethereum/env_donothing.sh: -------------------------------------------------------------------------------- 1 | ETH_HOME=/users/dinhtta/anh/blockchain-perf/benchmark/ethereum 2 | HOSTS=$ETH_HOME/hosts 3 | CLIENTS=$ETH_HOME/clients 4 | ETH_DATA=/data/dinhtta/eth 5 | LOG_DIR=$ETH_HOME/donothing_donothing 6 | EXE_HOME=/users/dinhtta/anh/wangji_3/blockchain-perf/src/donothing 7 | BENCHMARK=ycsb 8 | 9 | ##comment these out for smallbank 10 | #EXE_HOME=$ETH_HOME/../../src/smallbank/ethereum/ycsb 11 | #BENCHMARK=smallbank 12 | -------------------------------------------------------------------------------- /benchmark/ethereum/env_ycsb.sh: -------------------------------------------------------------------------------- 1 | ETH_HOME=/users/dinhtta/anh/blockchain-perf/benchmark/ethereum 2 | HOSTS=$ETH_HOME/hosts 3 | CLIENTS=$ETH_HOME/clients 4 | ETH_DATA=/data/dinhtta/eth 5 | LOG_DIR=$ETH_HOME/donothing_ycsb 6 | EXE_HOME=$ETH_HOME/../../src/ycsb 7 | BENCHMARK=ycsb 8 | 9 | ##comment these out for smallbank 10 | #EXE_HOME=$ETH_HOME/../../src/smallbank/ethereum/ycsb 11 | #BENCHMARK=smallbank 12 | -------------------------------------------------------------------------------- /benchmark/ethereum/gather.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #nnodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | i=0 7 | for host in `cat $HOSTS`; do 8 | if [[ $i -lt $1 ]]; then 9 | echo "admin.addPeer("`ssh dinhtta@$host $ETH_HOME/enode.sh $host 2>/dev/null | grep enode`")" >> addPeer.txt 10 | fi 11 | let i=$i+1 12 | echo $i 13 | done 14 | -------------------------------------------------------------------------------- /benchmark/ethereum/hosts: -------------------------------------------------------------------------------- 1 | 10.0.0.3 2 | 10.0.0.4 3 | 10.0.0.5 4 | 10.0.0.6 5 | 10.0.0.7 6 | 10.0.0.8 7 | 10.0.0.9 8 | 10.0.0.10 9 | 10.0.0.11 10 | 10.0.0.12 11 | 10.0.0.13 12 | 10.0.0.14 13 | 10.0.0.16 14 | 10.0.0.17 15 | 10.0.0.18 16 | 10.0.0.19 17 | 10.0.0.20 18 | 10.0.0.21 19 | 10.0.0.22 20 | 10.0.0.23 21 | 10.0.0.24 22 | 10.0.0.25 23 | 10.0.0.26 24 | 10.0.0.27 25 | 10.0.0.28 26 | 10.0.0.29 27 | 10.0.0.30 28 | 10.0.0.31 29 | 10.0.0.32 30 | 10.0.0.33 31 | 10.0.0.34 32 | 10.0.0.35 33 | -------------------------------------------------------------------------------- /benchmark/ethereum/init-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # num_nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | i=0 7 | for host in `cat $HOSTS`; do 8 | if [[ $i -lt $1 ]]; then 9 | ssh -oStrictHostKeyChecking=no dinhtta@$host $ETH_HOME/init.sh $1 10 | echo done node $host 11 | fi 12 | let i=$i+1 13 | done 14 | -------------------------------------------------------------------------------- /benchmark/ethereum/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #args: number_of_nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | geth --datadir=$ETH_DATA init $ETH_HOME/CustomGenesis"_"$1".json" 7 | geth --datadir=$ETH_DATA --password <(echo -n "") account new 8 | -------------------------------------------------------------------------------- /benchmark/ethereum/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # installing ethereum and docker 3 | sudo apt-get install software-properties-common 4 | sudo add-apt-repository -y ppa:ethereum/ethereum 5 | sudo add-apt-repository -y ppa:ethereum/ethereum-dev 6 | sudo apt-get install apt-transport-https ca-certificates 7 | #sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D 8 | #echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list 9 | sudo apt-get update 10 | sudo apt-get install -y ethereum 11 | #sudo apt-get install docker-engine 12 | #sudo service docker start 13 | 14 | -------------------------------------------------------------------------------- /benchmark/ethereum/partition.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import os 3 | import sys 4 | from config import * 5 | 6 | def partition(nodes, timeout): 7 | n=len(nodes) 8 | nodes1 = nodes[:n/2] 9 | nodes2 = nodes[n/2:] 10 | for n1 in nodes1: 11 | for n2 in nodes2: 12 | cmd = partition_cmd.format(n1,n2,timeout) 13 | os.system(cmd) 14 | 15 | if __name__=='__main__': 16 | partition(NODES[:int(sys.argv[1])], TIMEOUT) 17 | -------------------------------------------------------------------------------- /benchmark/ethereum/partition.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | nodeX=$1 4 | nodeY=$2 5 | time=$3 6 | 7 | argErr="Args Error: Usage ./killconn " 8 | 9 | if (($#!=3)); then 10 | echo $argErr 11 | exit 12 | fi 13 | 14 | echo NodeX: $nodeX 15 | echo NodeY: $nodeY 16 | echo Drop Time: $time 17 | 18 | ssh $nodeX sudo iptables -w -A INPUT -p tcp -s $nodeY -j DROP 19 | ssh $nodeY sudo iptables -w -A INPUT -p tcp -s $nodeX -j DROP 20 | sleep $time 21 | ssh $nodeX sudo iptables -w -D INPUT -p tcp -s $nodeY -j DROP 22 | ssh $nodeY sudo iptables -w -D INPUT -p tcp -s $nodeX -j DROP 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /benchmark/ethereum/run-bench-security.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg num_nodes #num_threads num_clients tx_rate [-drop] 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | ./stop-all.sh $1 7 | 8 | ./init-all.sh $1 9 | ./start-all.sh $1 10 | 11 | let M=240+40*$1 12 | sleep $M 13 | 14 | ./start-multi-clients.sh $3 $1 $2 $4 $5 & 15 | BACK=$! 16 | sleep 100 17 | python partition.py $1 18 | wait $BACK 19 | #./start-multi-clients.sh clients_$1 $1 $2 20 | #./start-multi-clients.sh clients_8 $1 $2 21 | ./stop-all.sh $1 22 | 23 | sleep 5 24 | 25 | -------------------------------------------------------------------------------- /benchmark/ethereum/run-bench.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg num_nodes #num_threads num_clients tx_rate [-drop] 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | ./stop-all.sh $1 7 | 8 | ./init-all.sh $1 9 | ./start-all.sh $1 10 | 11 | let M=240+40*$1 12 | sleep $M 13 | 14 | ./start-multi-clients.sh $3 $1 $2 $4 $5 15 | #BACK=$! 16 | #sleep 100 17 | #python partition.py $1 18 | #wait $BACK 19 | #./start-multi-clients.sh clients_$1 $1 $2 20 | #./start-multi-clients.sh clients_8 $1 $2 21 | ./stop-all.sh $1 22 | 23 | sleep 5 24 | 25 | -------------------------------------------------------------------------------- /benchmark/ethereum/start-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | rm -rf addPeer.txt 7 | ./gather.sh $1 8 | sleep 3 9 | i=0 10 | for host in `cat $HOSTS`; do 11 | if [[ $i -lt $1 ]]; then 12 | ssh -oStrictHostKeyChecking=no dinhtta@$host $ETH_HOME/start-mining.sh 13 | echo done node $host 14 | fi 15 | let i=$i+1 16 | done 17 | -------------------------------------------------------------------------------- /benchmark/ethereum/start-clients.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # args=THREADS index N txrate 3 | echo IN START_CLIENTS $1 $2 $3 $4 4 | 5 | cd `dirname ${BASH_SOURCE-$0}` 6 | . env.sh 7 | 8 | #LOG_DIR=$ETH_HOME/../src/ycsb/exp_$3"_"servers_run4 9 | LOG_DIR=$LOG_DIR/exp_$3"_"servers_$1"_"threads_$4"_"rates 10 | mkdir -p $LOG_DIR 11 | i=0 12 | for host in `cat $HOSTS`; do 13 | let n=i/2 14 | let i=i+1 15 | if [[ $n -eq $2 ]]; then 16 | #cd $ETH_HOME/../src/ycsb 17 | cd $EXE_HOME 18 | #both ycsbc and smallbank use the same driver 19 | nohup ./driver -db ethereum -threads $1 -P workloads/workloada.spec -endpoint $host:8000 -txrate $4 -wt 60 > $LOG_DIR/client_$host"_"$1 2>&1 & 20 | fi 21 | done 22 | 23 | -------------------------------------------------------------------------------- /benchmark/ethereum/start-mining.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | 5 | nohup geth --datadir=$ETH_DATA --nodiscover --rpc --rpcaddr 0.0.0.0 --rpcport "8000" --rpccorsdomain "*" --gasprice 0 --maxpeers 32 --networkid 9119 --unlock 0 --password <(echo -n "") --mine --minerthreads 8 > $ETH_DATA/../eth_log 2>&1 & 6 | 7 | sleep 1 8 | 9 | for com in `cat $ETH_HOME/addPeer.txt`; do 10 | geth --exec $com attach ipc:/$ETH_DATA/geth.ipc 11 | done 12 | -------------------------------------------------------------------------------- /benchmark/ethereum/stop-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg nnodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | i=0 7 | for host in `cat $CLIENTS`; do 8 | ssh -oStrictHostKeyChecking=no dinhtta@$host sudo killall -KILL driver 9 | echo done node $host 10 | done 11 | 12 | for host in `cat $HOSTS`; do 13 | if [[ $i -lt $1 ]]; then 14 | ssh -oStrictHostKeyChecking=no dinhtta@$host $ETH_HOME/stop.sh 15 | echo done node $host 16 | fi 17 | let i=$i+1 18 | done 19 | 20 | 21 | -------------------------------------------------------------------------------- /benchmark/ethereum/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | 5 | sudo killall -KILL geth 6 | rm -rf $ETH_DATA 7 | rm -rf ~/.eth* 8 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/README.md: -------------------------------------------------------------------------------- 1 | # Prerequisite 2 | * Install [docker](https://www.docker.com/) and [docker-compose](https://docs.docker.com/compose/) tools 3 | * Download `peer` binary from [here](https://github.com/hyperledger/fabric-samples/tree/release-1.4) and make it accessible from `$PATH` 4 | 5 | # Running Fabric v1.4 6 | 7 | * Spin up a Fabric network with a single orderer and four peers under the same organization. 8 | * Run the network in the docker environment of the localhost in the same bridge network. 9 | 10 | ``` 11 | cd four-nodes-docker/ 12 | docker-compose -f docker-compose.yaml up -d 13 | ./setup.sh # create the channel and join the channel for each peer 14 | ``` 15 | 16 | # Benchmark 17 | * Enter the corresponding workload directory, such as [smallbank](src/../../../src/macro/smallbank), to benchmark against this setup. 18 | 19 | # Shut down 20 | ``` 21 | docker-compose -f docker-compose.yaml down 22 | ``` 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/channel_artifacts/channel.tx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ooibc88/blockbench/147462732712624710fbfdf2cc5eb01cb6b7ad84/benchmark/fabric-v1.4/four-nodes-docker/channel_artifacts/channel.tx -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/channel_artifacts/genesis.block: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ooibc88/blockbench/147462732712624710fbfdf2cc5eb01cb6b7ad84/benchmark/fabric-v1.4/four-nodes-docker/channel_artifacts/genesis.block -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/ca/000df376ecc737b7b368e50125722fe67ca5bb1232e7b3dab140b953ce44c387_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIhiXeEVdUNoRlyve 3 | 9UWWYgyRJ5QY/xig5AIdYBnyKOihRANCAAT1rjBuPnXVHtc7DWe1RUoSGAeYv++T 4 | X9m+oIoIfO//Rx+CLt0N57mPwMtcKJj6oRmvTt+SjYZGBpsq7uMsoXpQ 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICLzCCAdagAwIBAgIRAMou0W3Y6I+uU14ekSkKXx8wCgYIKoZIzj0EAwIwaTEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt 5 | cGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBaMGkxCzAJBgNV 6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp 7 | c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j 8 | b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT1rjBuPnXVHtc7DWe1RUoSGAeY 9 | v++TX9m+oIoIfO//Rx+CLt0N57mPwMtcKJj6oRmvTt+SjYZGBpsq7uMsoXpQo18w 10 | XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD 11 | AQH/MCkGA1UdDgQiBCAADfN27Mc3t7No5QElci/mfKW7EjLns9qxQLlTzkTDhzAK 12 | BggqhkjOPQQDAgNHADBEAiBPGBAb5qLyXqHQch247XgRspr4YzP/J9Y6shnZZppe 13 | iwIgSLQP7DVIBQVeeJ1f2k8gn1VhUJjV08CXrRsJF68v/Iw= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/msp/admincerts/Admin@example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCjCCAbCgAwIBAgIQbaszMl6k4eD4IwFeaWwrKzAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTIwMDExNTA2NDcwMFoXDTMwMDExMjA2NDcwMFowVjELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI 8 | zj0DAQcDQgAEClQTPP+fItSv0fvJFsut4OIMRufEphuh+4Dy7HAXu2ZAooh2ogIN 9 | eJ3cz7+M7yYH3pU9ZzI1cft/mZNrZ+pWV6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG 10 | A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgAA3zduzHN7ezaOUBJXIv5nyluxIy57Pa 11 | sUC5U85Ew4cwCgYIKoZIzj0EAwIDSAAwRQIhANH9ScOaEJVNr3SU4x/nuf7Wb9iO 12 | 5RIECijpD7th1yStAiB81iwswMCTIck7iQroPgTAINAhdzl6nWA17s1ppIu+BA== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICLzCCAdagAwIBAgIRAMou0W3Y6I+uU14ekSkKXx8wCgYIKoZIzj0EAwIwaTEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt 5 | cGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBaMGkxCzAJBgNV 6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp 7 | c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j 8 | b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT1rjBuPnXVHtc7DWe1RUoSGAeY 9 | v++TX9m+oIoIfO//Rx+CLt0N57mPwMtcKJj6oRmvTt+SjYZGBpsq7uMsoXpQo18w 10 | XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD 11 | AQH/MCkGA1UdDgQiBCAADfN27Mc3t7No5QElci/mfKW7EjLns9qxQLlTzkTDhzAK 12 | BggqhkjOPQQDAgNHADBEAiBPGBAb5qLyXqHQch247XgRspr4YzP/J9Y6shnZZppe 13 | iwIgSLQP7DVIBQVeeJ1f2k8gn1VhUJjV08CXrRsJF68v/Iw= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNTCCAdygAwIBAgIRAJcNLNbV+aGfKWNtOqyO91IwCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR0k/a79POz0dEUHS9I 9 | yqLafHybVnzIZ/kAhTx3jTf/vNes28pVrhsvMRMFvWI72OgIyIMfxjFpPZyNDeY5 10 | G8C8o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCAeHYHyXo8rmJ0N2J8xeQIcUQmvTKLRiS3P7LR0 12 | sjWdyzAKBggqhkjOPQQDAgNHADBEAiBUzEITY7saQ6uwlepv0r9be0p9ti/7QzFB 13 | xNOevqtVOAIgeswdnVLTiq5zymO9zXTPXMOMR2J8l484+bHu6l1VkEs= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/admincerts/Admin@example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCjCCAbCgAwIBAgIQbaszMl6k4eD4IwFeaWwrKzAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTIwMDExNTA2NDcwMFoXDTMwMDExMjA2NDcwMFowVjELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI 8 | zj0DAQcDQgAEClQTPP+fItSv0fvJFsut4OIMRufEphuh+4Dy7HAXu2ZAooh2ogIN 9 | eJ3cz7+M7yYH3pU9ZzI1cft/mZNrZ+pWV6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG 10 | A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgAA3zduzHN7ezaOUBJXIv5nyluxIy57Pa 11 | sUC5U85Ew4cwCgYIKoZIzj0EAwIDSAAwRQIhANH9ScOaEJVNr3SU4x/nuf7Wb9iO 12 | 5RIECijpD7th1yStAiB81iwswMCTIck7iQroPgTAINAhdzl6nWA17s1ppIu+BA== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/keystore/5b59570de9e7d3e8300a2ae3593173b6ace9c1bfdaf6b9ebb5b10ab0c536843d_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgQLEdSAWRzSWfnwKl 3 | eF5wfVhHtxyMbolbCHIJkpp/VHGhRANCAATQZEoxBQuUwRDgWX0Z0hVnpzEg2m0B 4 | 2vf2AwJHFwjA74mJGdejUECG9IU2RHDYfqfrm5E9HWyMtjQiCytnxZDi 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts/orderer.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCzCCAbKgAwIBAgIQeNGCAq9N6B17/7axsiKmgTAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTIwMDExNTA2NDcwMFoXDTMwMDExMjA2NDcwMFowWDELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xHDAaBgNVBAMTE29yZGVyZXIuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAATQZEoxBQuUwRDgWX0Z0hVnpzEg2m0B2vf2AwJHFwjA74mJGdej 9 | UECG9IU2RHDYfqfrm5E9HWyMtjQiCytnxZDio00wSzAOBgNVHQ8BAf8EBAMCB4Aw 10 | DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCAADfN27Mc3t7No5QElci/mfKW7EjLn 11 | s9qxQLlTzkTDhzAKBggqhkjOPQQDAgNHADBEAiBkre1k396QtstRUD3KaEYRYjX7 12 | 0UNpwZ8COd7uKU86bgIgCC/dGz1zxU9cEwqMvqzbZECFzaeOumLrifUMz5VG+E8= 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNTCCAdygAwIBAgIRAJcNLNbV+aGfKWNtOqyO91IwCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR0k/a79POz0dEUHS9I 9 | yqLafHybVnzIZ/kAhTx3jTf/vNes28pVrhsvMRMFvWI72OgIyIMfxjFpPZyNDeY5 10 | G8C8o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCAeHYHyXo8rmJ0N2J8xeQIcUQmvTKLRiS3P7LR0 12 | sjWdyzAKBggqhkjOPQQDAgNHADBEAiBUzEITY7saQ6uwlepv0r9be0p9ti/7QzFB 13 | xNOevqtVOAIgeswdnVLTiq5zymO9zXTPXMOMR2J8l484+bHu6l1VkEs= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/b5HHDhojToBjWFH 3 | hl9fHQkEH1+IGf4OG96LQ8SqBqKhRANCAARmIOAjU8SP4gDwUctcRqWakOEjaOUT 4 | uxno9bTU2I0226rgy3pEW6LaTPTu9tswpD0VkLCfluyqOwSLhmCVnmA/ 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/tlsca/1e1d81f25e8f2b989d0dd89f3179021c5109af4ca2d1892dcfecb474b2359dcb_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/8In5d4WdFIFbvoc 3 | xYWBuifKOrCf5Eri4eLMojJxBiKhRANCAAR0k/a79POz0dEUHS9IyqLafHybVnzI 4 | Z/kAhTx3jTf/vNes28pVrhsvMRMFvWI72OgIyIMfxjFpPZyNDeY5G8C8 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNTCCAdygAwIBAgIRAJcNLNbV+aGfKWNtOqyO91IwCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR0k/a79POz0dEUHS9I 9 | yqLafHybVnzIZ/kAhTx3jTf/vNes28pVrhsvMRMFvWI72OgIyIMfxjFpPZyNDeY5 10 | G8C8o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCAeHYHyXo8rmJ0N2J8xeQIcUQmvTKLRiS3P7LR0 12 | sjWdyzAKBggqhkjOPQQDAgNHADBEAiBUzEITY7saQ6uwlepv0r9be0p9ti/7QzFB 13 | xNOevqtVOAIgeswdnVLTiq5zymO9zXTPXMOMR2J8l484+bHu6l1VkEs= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/users/Admin@example.com/msp/admincerts/Admin@example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCjCCAbCgAwIBAgIQbaszMl6k4eD4IwFeaWwrKzAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTIwMDExNTA2NDcwMFoXDTMwMDExMjA2NDcwMFowVjELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI 8 | zj0DAQcDQgAEClQTPP+fItSv0fvJFsut4OIMRufEphuh+4Dy7HAXu2ZAooh2ogIN 9 | eJ3cz7+M7yYH3pU9ZzI1cft/mZNrZ+pWV6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG 10 | A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgAA3zduzHN7ezaOUBJXIv5nyluxIy57Pa 11 | sUC5U85Ew4cwCgYIKoZIzj0EAwIDSAAwRQIhANH9ScOaEJVNr3SU4x/nuf7Wb9iO 12 | 5RIECijpD7th1yStAiB81iwswMCTIck7iQroPgTAINAhdzl6nWA17s1ppIu+BA== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/4ae1aa6ace3e283d4277520d485db918077915762591dfed7785740af51cb230_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgVAW2ns4HLMVXV8ju 3 | zYdSvDxwXxjEfoYJspWSh5E2h0mhRANCAAQKVBM8/58i1K/R+8kWy63g4gxG58Sm 4 | G6H7gPLscBe7ZkCiiHaiAg14ndzPv4zvJgfelT1nMjVx+3+Zk2tn6lZX 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCjCCAbCgAwIBAgIQbaszMl6k4eD4IwFeaWwrKzAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTIwMDExNTA2NDcwMFoXDTMwMDExMjA2NDcwMFowVjELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI 8 | zj0DAQcDQgAEClQTPP+fItSv0fvJFsut4OIMRufEphuh+4Dy7HAXu2ZAooh2ogIN 9 | eJ3cz7+M7yYH3pU9ZzI1cft/mZNrZ+pWV6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG 10 | A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgAA3zduzHN7ezaOUBJXIv5nyluxIy57Pa 11 | sUC5U85Ew4cwCgYIKoZIzj0EAwIDSAAwRQIhANH9ScOaEJVNr3SU4x/nuf7Wb9iO 12 | 5RIECijpD7th1yStAiB81iwswMCTIck7iQroPgTAINAhdzl6nWA17s1ppIu+BA== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNTCCAdygAwIBAgIRAJcNLNbV+aGfKWNtOqyO91IwCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR0k/a79POz0dEUHS9I 9 | yqLafHybVnzIZ/kAhTx3jTf/vNes28pVrhsvMRMFvWI72OgIyIMfxjFpPZyNDeY5 10 | G8C8o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCAeHYHyXo8rmJ0N2J8xeQIcUQmvTKLRiS3P7LR0 12 | sjWdyzAKBggqhkjOPQQDAgNHADBEAiBUzEITY7saQ6uwlepv0r9be0p9ti/7QzFB 13 | xNOevqtVOAIgeswdnVLTiq5zymO9zXTPXMOMR2J8l484+bHu6l1VkEs= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICLDCCAdOgAwIBAgIRALlUVG7di8jooZg8hltsmr4wCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBaMFYxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEG 8 | CCqGSM49AwEHA0IABK8ULp8JLo/NYlHWlfUg9x14NEUY1mBVSp1mue4qLkTlrGW5 9 | VP0rqgBQKuZETo7lXwH3DTi33/NkcTaZMn9h7++jbDBqMA4GA1UdDwEB/wQEAwIF 10 | oDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAr 11 | BgNVHSMEJDAigCAeHYHyXo8rmJ0N2J8xeQIcUQmvTKLRiS3P7LR0sjWdyzAKBggq 12 | hkjOPQQDAgNHADBEAiAOUYlVJ/5SKGZkOSaOkjoLRu2fSrL6TerzKkfrimVodgIg 13 | EQEF6KTdgAnktLTdza2iTtfOoGXSSIAqM1lt6wHi0s0= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg3lSx/XSPA/Vh8VJa 3 | A6EBPyPbtNQbHAvMr4QSYDj8esKhRANCAASvFC6fCS6PzWJR1pX1IPcdeDRFGNZg 4 | VUqdZrnuKi5E5axluVT9K6oAUCrmRE6O5V8B9w04t9/zZHE2mTJ/Ye/v 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/ca/1f82b855463e72fd8a93787f6b734e6f0b044fae32b1ffd360926d841ca6e054_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg75/ZONIic9b29Y5c 3 | MAuC/vvFk1OZcpODkeMQD3DsiJShRANCAARBYe29Gw/LRBCuYoDDCjwtwphZd6uD 4 | Y++PBokFNHCKyg/z/K8mnhn4EfJT9jSatKSv6pDPYQEe5L3WHQdEmUcO 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQEUEgxpvGHeLSsT1DfRXd6zAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBa 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtOLIK2QRNe7bEiutZC/P+20eveEavxDT 9 | gq+nOfe+cLLMCkVc71wFBLZ6Yhx/Pwgy/j3xgCe2Zo/RkahvnfxrU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgH4K4VUY+cv2K 11 | k3h/a3NObwsET64ysf/TYJJthBym4FQwCgYIKoZIzj0EAwIDRwAwRAIgFL3qCBI+ 12 | o2J0+8uOeBcHqNKipfhq0CFEGBCCIpSdq5ACICsCMMqnyPHNvbDGRmgN0pa2G1nQ 13 | 4BLkX8cXIq/ISwva 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQEUEgxpvGHeLSsT1DfRXd6zAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBa 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtOLIK2QRNe7bEiutZC/P+20eveEavxDT 9 | gq+nOfe+cLLMCkVc71wFBLZ6Yhx/Pwgy/j3xgCe2Zo/RkahvnfxrU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgH4K4VUY+cv2K 11 | k3h/a3NObwsET64ysf/TYJJthBym4FQwCgYIKoZIzj0EAwIDRwAwRAIgFL3qCBI+ 12 | o2J0+8uOeBcHqNKipfhq0CFEGBCCIpSdq5ACICsCMMqnyPHNvbDGRmgN0pa2G1nQ 13 | 4BLkX8cXIq/ISwva 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/8caac7279c9844a2d7eb26116d62917019c8c7119279a824b0034dbb7a358a83_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg0nto41YFRr+I+Abj 3 | UbvDXtC4cRxTp5Zc8trAciiEoGyhRANCAASU5TYOcAP20HNmNZPsWvlsShbDfacC 4 | boyr9xhGKQg74nZEcAiBRfVc/NVT7U6ij7uAvUHyXj78fxFQrLa4VI1r 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGjCCAcCgAwIBAgIRAJatFntsSwMnZoH/geYkrNUwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwMTE1MDY0NzAwWhcNMzAwMTEyMDY0NzAw 6 | WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNvbTBZ 8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABJTlNg5wA/bQc2Y1k+xa+WxKFsN9pwJu 9 | jKv3GEYpCDvidkRwCIFF9Vz81VPtTqKPu4C9QfJePvx/EVCstrhUjWujTTBLMA4G 10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIB+CuFVGPnL9 11 | ipN4f2tzTm8LBE+uMrH/02CSbYQcpuBUMAoGCCqGSM49BAMCA0gAMEUCIQDfyQ/e 12 | AWInkUPOhtqhzJ17AwZfVYNCvYAAi3bJz2BC4QIgeK0NAEhDVuF5zIQ0abKwGI8f 13 | vGrfsIHICVuaMuj2/NM= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgZLi/Nj4fnuI0m3WK 3 | LWDHF/a18nKNFVcjGOfq72Hn7+uhRANCAAQk1XZ8pbzEzipT4b0feDtr0WnBA788 4 | ITXLw+KNOKw1sCKzv53fdfQNVVf6ZqxTfd0MvtRAbjL3oE3WE41RcedX 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQEUEgxpvGHeLSsT1DfRXd6zAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBa 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtOLIK2QRNe7bEiutZC/P+20eveEavxDT 9 | gq+nOfe+cLLMCkVc71wFBLZ6Yhx/Pwgy/j3xgCe2Zo/RkahvnfxrU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgH4K4VUY+cv2K 11 | k3h/a3NObwsET64ysf/TYJJthBym4FQwCgYIKoZIzj0EAwIDRwAwRAIgFL3qCBI+ 12 | o2J0+8uOeBcHqNKipfhq0CFEGBCCIpSdq5ACICsCMMqnyPHNvbDGRmgN0pa2G1nQ 13 | 4BLkX8cXIq/ISwva 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/76d5a05194b6f6ef00f3276bce0dd5ea3034366a82df1692f17c695591044b29_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgqrbAD3ehX5Ec79yQ 3 | 5FrxrYgotbHR9APa8vTO8YFu2SGhRANCAAQBb7kWqXO+KxzDZekz4Wa3216rg6w6 4 | 3b7CqzXCDYjxtBgaaDegmr2fa1Nicwi1jBZr4DIlQnDz1MZKyYp4CvF8 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgS+OHaI5z9ECw042e 3 | gOzw+qlcZZ0f6mDWksFU/R4ofYuhRANCAAQYJZ/Sj9uua1LYHz4k3zbJde44pwm/ 4 | GbE/ROv4t3u8vt+DOvE2lCn+iTI2U1obfnoYswLelpOlnZJVYdfwt2MR 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQEUEgxpvGHeLSsT1DfRXd6zAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBa 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtOLIK2QRNe7bEiutZC/P+20eveEavxDT 9 | gq+nOfe+cLLMCkVc71wFBLZ6Yhx/Pwgy/j3xgCe2Zo/RkahvnfxrU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgH4K4VUY+cv2K 11 | k3h/a3NObwsET64ysf/TYJJthBym4FQwCgYIKoZIzj0EAwIDRwAwRAIgFL3qCBI+ 12 | o2J0+8uOeBcHqNKipfhq0CFEGBCCIpSdq5ACICsCMMqnyPHNvbDGRmgN0pa2G1nQ 13 | 4BLkX8cXIq/ISwva 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/msp/keystore/e2d995b228f23a1831445d7585c53c91171b7fc301ab118eaddc3e3c5cf92a47_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgNvG/uFO4vvMqQbZC 3 | LaQTGUJRJhzmoTJJjn/BcyqtvbChRANCAAQ/IcC4iHb8yQERWiLQpJmEqkeoEuW6 4 | 2hci0Ofj5wwIdWB6X5fIXj6r5qq8fnC8Z6lAubvPzTGW6WVPqxe9w8ED 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgs4soeVp20WYRnS1P 3 | mrFiHJH5TvnIn66xpqDdC5fo/iWhRANCAARDjJPwr1DnIhaQLQbnncIW1lWpbaxg 4 | oTmpmTiHfveepC32N7mxZvY/F2qwxFXtQFL5GmDPVZWZHzXGYpYvr+t2 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer3.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQEUEgxpvGHeLSsT1DfRXd6zAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBa 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtOLIK2QRNe7bEiutZC/P+20eveEavxDT 9 | gq+nOfe+cLLMCkVc71wFBLZ6Yhx/Pwgy/j3xgCe2Zo/RkahvnfxrU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgH4K4VUY+cv2K 11 | k3h/a3NObwsET64ysf/TYJJthBym4FQwCgYIKoZIzj0EAwIDRwAwRAIgFL3qCBI+ 12 | o2J0+8uOeBcHqNKipfhq0CFEGBCCIpSdq5ACICsCMMqnyPHNvbDGRmgN0pa2G1nQ 13 | 4BLkX8cXIq/ISwva 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer3.org1.example.com/msp/keystore/fa8744ae3b8d6b6db2fa16f790d13682f750c1b9cc44c61b03b43b0cb2f4232f_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrETu3gOdRVS3RdzF 3 | HxIOZ9ixekxdgH56/27rI9isYQKhRANCAARnoKIcn2fHXF51T66M9il36Devw3uz 4 | tsUgg3YpddNw3Cd64kGVeHzw6bfJNnhyy5cG44H0XVsI0Wq2ckpjgk0N 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/peers/peer3.org1.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg6u0GXn/6PiXFbKM1 3 | Ydj0e/zqyx31s+LvSufzo8oYOnOhRANCAAQCTu+CziqbuqW3sLqaiZs0BkP48Sv4 4 | jfymQFhVLYTfo2msqNShspHsAY5tLCxE74Y/cRAXcVtfzrcznqF45uOz 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/tlsca/42932f89faa9e1bd652303ef0e60e27c9c8b02301190b4b4b76722a39da11356_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg22Nfr0WpartREwry 3 | +DwH3CIUJT+e9XkAe+2+Yyg4xuWhRANCAASwEAxnjXSjNps5Y4Lelfi+xcLT3pLq 4 | M3F2mcr12b44AsFcmjVxJ5qd8XCgDDWF4QNseRqnSc4uvldswzRj5TzQ 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQEUEgxpvGHeLSsT1DfRXd6zAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBa 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtOLIK2QRNe7bEiutZC/P+20eveEavxDT 9 | gq+nOfe+cLLMCkVc71wFBLZ6Yhx/Pwgy/j3xgCe2Zo/RkahvnfxrU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgH4K4VUY+cv2K 11 | k3h/a3NObwsET64ysf/TYJJthBym4FQwCgYIKoZIzj0EAwIDRwAwRAIgFL3qCBI+ 12 | o2J0+8uOeBcHqNKipfhq0CFEGBCCIpSdq5ACICsCMMqnyPHNvbDGRmgN0pa2G1nQ 13 | 4BLkX8cXIq/ISwva 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/004c74ffb0dcf8b4e1a422dd1cc4202ccf6137124f46c6aab0a636dc6ffd28ec_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgaqpFk9GVKeNOCWZw 3 | dhs+sPpJNXhbPY2H1gdavy6rRM6hRANCAAS04sgrZBE17tsSK61kL8/7bR694Rq/ 4 | ENOCr6c5975wsswKRVzvXAUEtnpiHH8/CDL+PfGAJ7Zmj9GRqG+d/GtT 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQEUEgxpvGHeLSsT1DfRXd6zAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDAxMTUwNjQ3MDBaFw0zMDAxMTIwNjQ3MDBa 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtOLIK2QRNe7bEiutZC/P+20eveEavxDT 9 | gq+nOfe+cLLMCkVc71wFBLZ6Yhx/Pwgy/j3xgCe2Zo/RkahvnfxrU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgH4K4VUY+cv2K 11 | k3h/a3NObwsET64ysf/TYJJthBym4FQwCgYIKoZIzj0EAwIDRwAwRAIgFL3qCBI+ 12 | o2J0+8uOeBcHqNKipfhq0CFEGBCCIpSdq5ACICsCMMqnyPHNvbDGRmgN0pa2G1nQ 13 | 4BLkX8cXIq/ISwva 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIAuaNNQXGIgzQGIM 3 | wuhGC9+j456YZk8E+GG+p/4cQXuhRANCAAT0daO4deVquxjfFl68oBov2gV4Vt5D 4 | 8aHG51thiQ8jVcGxmG8OlUP36FhgJZwvKFUnymfrurG3/6+YwhKJzEKV 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/2f237b2473e0e9f1d63d2715b1c0acdf376a481cbf0259befc1355361229209a_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgffU8UW+u2XXJVecb 3 | YyzL6b9s3haFuxayM4Y3uev4op6hRANCAASDhm2AXWaDDDD3poTNx3Yuam0SKvfH 4 | 6NT1u2uCcW4Q5fTyx+wtcsDfgAKsnY4PQkCf77ss+bK4i3fNnl4RhaNI 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgHAXvleRJ0cJvAjPZ 3 | s2mN44AGPGYbnNmSrus9/cRy7TChRANCAARwsqCvw4rOluqAomA8mq3WgmXvAeA+ 4 | CVvIGfHqT3FOEdN1o8vI9vjQV00xqG4VCdeHF9t0f/5bhETuOxh1xLBB 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/init.sh: -------------------------------------------------------------------------------- 1 | cryptogen generate --output=crypto_config --config=crypto_config.yaml 2 | configtxgen --configPath=. -profile OrgsOrdererGenesis -outputBlock channel_artifacts/genesis.block 3 | configtxgen --configPath=. -profile OrgsChannel -outputCreateChannelTx channel_artifacts/channel.tx -channelID rpcchannel 4 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/log.txt: -------------------------------------------------------------------------------- 1 | 2020-08-06 20:36:02.286 +08 [main] InitCmd -> WARN 001 CORE_LOGGING_LEVEL is no longer supported, please use the FABRIC_LOGGING_SPEC environment variable 2 | 2020-08-06 20:36:02.290 +08 [main] SetOrdererEnv -> WARN 002 CORE_LOGGING_LEVEL is no longer supported, please use the FABRIC_LOGGING_SPEC environment variable 3 | 2020-08-06 20:36:02.294 +08 [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized 4 | 2020-08-06 20:36:02.729 +08 [channelCmd] executeJoin -> INFO 004 Successfully submitted proposal to join channel 5 | -------------------------------------------------------------------------------- /benchmark/fabric-v1.4/four-nodes-docker/rpcchannel.block: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ooibc88/blockbench/147462732712624710fbfdf2cc5eb01cb6b7ad84/benchmark/fabric-v1.4/four-nodes-docker/rpcchannel.block -------------------------------------------------------------------------------- /benchmark/fabric-v2.2/.gitignore: -------------------------------------------------------------------------------- 1 | /channel-artifacts/*.tx 2 | /channel-artifacts/*.block 3 | /ledgers 4 | /ledgers-backup 5 | /channel-artifacts/*.json 6 | /org3-artifacts/crypto-config/* 7 | organizations/fabric-ca/ordererOrg/* 8 | organizations/fabric-ca/org1/* 9 | organizations/fabric-ca/org2/* 10 | organizations/ordererOrganizations/* 11 | organizations/peerOrganizations/* 12 | system-genesis-block/* 13 | *.tar.gz 14 | *log 15 | -------------------------------------------------------------------------------- /benchmark/fabric-v2.2/docker/.env: -------------------------------------------------------------------------------- 1 | COMPOSE_PROJECT_NAME=net 2 | IMAGE_TAG=latest 3 | SYS_CHANNEL=system-channel 4 | -------------------------------------------------------------------------------- /benchmark/fabric-v2.2/organizations/ccp-template.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: test-network-org${ORG} 3 | version: 1.0.0 4 | client: 5 | organization: Org${ORG} 6 | connection: 7 | timeout: 8 | peer: 9 | endorser: '300' 10 | organizations: 11 | Org${ORG}: 12 | mspid: Org${ORG}MSP 13 | peers: 14 | - peer0.org${ORG}.example.com 15 | certificateAuthorities: 16 | - ca.org${ORG}.example.com 17 | peers: 18 | peer0.org${ORG}.example.com: 19 | url: grpcs://localhost:${P0PORT} 20 | tlsCACerts: 21 | pem: | 22 | ${PEERPEM} 23 | grpcOptions: 24 | ssl-target-name-override: peer0.org${ORG}.example.com 25 | hostnameOverride: peer0.org${ORG}.example.com 26 | certificateAuthorities: 27 | ca.org${ORG}.example.com: 28 | url: https://localhost:${CAPORT} 29 | caName: ca-org${ORG} 30 | tlsCACerts: 31 | pem: 32 | - | 33 | ${CAPEM} 34 | httpOptions: 35 | verify: false 36 | -------------------------------------------------------------------------------- /benchmark/fabric-v2.2/services/app.yaml: -------------------------------------------------------------------------------- 1 | runtime: nodejs10 2 | -------------------------------------------------------------------------------- /benchmark/fabric-v2.2/services/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Blockbench_Helper", 3 | "version": "1.0.0", 4 | "description": "Helper web services on Fabric v2.2", 5 | "engines": { 6 | "node": ">=8", 7 | "npm": ">=5" 8 | }, 9 | "engineStrict": true, 10 | "author": "Blockbench", 11 | "license": "Apache-2.0", 12 | "dependencies": { 13 | "express": "^4.17.1", 14 | "fabric-ca-client": "^2.2.0", 15 | "fabric-network": "^2.2.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /benchmark/hyperledger/clients: -------------------------------------------------------------------------------- 1 | 127.0.0.1 2 | -------------------------------------------------------------------------------- /benchmark/hyperledger/config.py: -------------------------------------------------------------------------------- 1 | NODES=['10.0.0.{}'.format(x) for x in range(50,59)] 2 | partition_cmd = './partition.sh {} {} {} &' 3 | TIMEOUT=150 4 | -------------------------------------------------------------------------------- /benchmark/hyperledger/docker: -------------------------------------------------------------------------------- 1 | # Docker Upstart and SysVinit configuration file 2 | 3 | # 4 | # THIS FILE DOES NOT APPLY TO SYSTEMD 5 | # 6 | # Please see the documentation for "systemd drop-ins": 7 | # https://docs.docker.com/engine/articles/systemd/ 8 | # 9 | 10 | # Customize location of Docker binary (especially for development testing). 11 | #DOCKERD="/usr/local/bin/dockerd" 12 | 13 | # Use DOCKER_OPTS to modify the daemon startup options. 14 | #DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4" 15 | 16 | # If you need Docker to use an HTTP proxy, it can also be specified here. 17 | #export http_proxy="http://127.0.0.1:3128/" 18 | 19 | # This is also a handy place to tweak where Docker's temporary files go. 20 | #export TMPDIR="/mnt/bigdrive/docker-tmp" 21 | DOCKER_OPTS="-r=true --api-cors-header='*' -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock" 22 | -------------------------------------------------------------------------------- /benchmark/hyperledger/donothing_exps.md: -------------------------------------------------------------------------------- 1 | # How to run the DoNothing benchmark 2 | 3 | To launch experiments with varying client request rates, we use 4 | 5 | `python exps.py -donothing` 6 | 7 | All the steps are the same as for the [saturation experiment](saturation_exps.md), except the followings: 8 | 9 | + Binary path, logging path settings are in `env_donothing.sh` 10 | 11 | + Pass the `-donothing` flag to the script 12 | -------------------------------------------------------------------------------- /benchmark/hyperledger/hosts: -------------------------------------------------------------------------------- 1 | 127.0.0.1 2 | -------------------------------------------------------------------------------- /benchmark/hyperledger/partition.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import os 3 | import sys 4 | from config import * 5 | 6 | def partition(nodes, timeout): 7 | n=len(nodes) 8 | nodes1 = nodes[:n/2] 9 | nodes2 = nodes[n/2:] 10 | for n1 in nodes1: 11 | for n2 in nodes2: 12 | cmd = partition_cmd.format(n1,n2,timeout) 13 | os.system(cmd) 14 | 15 | if __name__=='__main__': 16 | partition(NODES[:int(sys.argv[1])], TIMEOUT) 17 | -------------------------------------------------------------------------------- /benchmark/hyperledger/partition.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | nodeX=$1 4 | nodeY=$2 5 | time=$3 6 | 7 | argErr="Args Error: Usage ./killconn " 8 | 9 | if (($#!=3)); then 10 | echo $argErr 11 | exit 12 | fi 13 | 14 | echo NodeX: $nodeX 15 | echo NodeY: $nodeY 16 | echo Drop Time: $time 17 | 18 | ssh $nodeX sudo iptables -w -A INPUT -p tcp -s $nodeY -j DROP 19 | ssh $nodeY sudo iptables -w -A INPUT -p tcp -s $nodeX -j DROP 20 | sleep $time 21 | ssh $nodeX sudo iptables -w -D INPUT -p tcp -s $nodeY -j DROP 22 | ssh $nodeY sudo iptables -w -D INPUT -p tcp -s $nodeX -j DROP 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /benchmark/hyperledger/run-bench-security.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Args: num_nodes num_threads num_clients txrate [-drop] 3 | if [ $# -lt 4 ]; then 4 | echo "Usage: $0 [-drop]" 5 | exit 1 6 | fi 7 | NNODES=$1 8 | NCLIENTS=$3 9 | NTHREADS=$2 10 | TXRATE=$4 11 | DROP=$5 12 | 13 | cd `dirname ${BASH_SOURCE-$0}` 14 | . env.sh 15 | 16 | ./stop-peers.sh 17 | sleep 2 18 | ./start-peers.sh $NNODES 19 | sleep 5 20 | 21 | ./start-multi-clients.sh $NCLIENTS $NNODES $NTHREADS $TXRATE $DROP & 22 | BACK=$! 23 | sleep 100 24 | python partition.py $NNODES 25 | wait $BACK 26 | ./stop-peers.sh 27 | sleep 5 28 | -------------------------------------------------------------------------------- /benchmark/hyperledger/run-bench.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Args: num_nodes num_threads num_clients txrate [-drop] 3 | if [ $# -lt 4 ]; then 4 | echo "Usage: $0 [-drop]" 5 | exit 1 6 | fi 7 | NNODES=$1 8 | NCLIENTS=$3 9 | NTHREADS=$2 10 | TXRATE=$4 11 | DROP=$5 12 | 13 | cd `dirname ${BASH_SOURCE-$0}` 14 | . env.sh 15 | 16 | ./stop-peers.sh 17 | sleep 2 18 | ./start-peers.sh $NNODES 19 | sleep 5 20 | 21 | ./start-multi-clients.sh $NCLIENTS $NNODES $NTHREADS $TXRATE $DROP & 22 | BACK=$! 23 | #sleep 100 24 | #python partition.py $NNODES 25 | echo "Waiting for PID $BACK ..." 26 | wait $BACK 27 | ./stop-peers.sh 28 | sleep 5 29 | -------------------------------------------------------------------------------- /benchmark/hyperledger/start-multi-clients-drop4.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #host num_nodes threads 3 | HOSTS=$1 4 | 5 | let i=0 6 | #let K=$2/2 7 | let K=4 8 | for client in `cat $HOSTS`; do 9 | if [[ $i -lt $K ]]; then 10 | echo $client index $i 11 | ssh -oStrictHostKeyChecking=no $client 'cd /users/dinhtta/blockchain-perf/hyperledger-fabric/scripts ; ./start-clients-drop4.sh '$3 $i $2 12 | fi 13 | let i=$i+1 14 | done 15 | 16 | let M=$2*10+320 17 | let SR=$M-250 18 | 19 | sleep 250 20 | let idx=$2-4 21 | let i=0 22 | for server in `cat hosts`; do 23 | if [[ $i -ge $idx ]]; then 24 | ssh -oStrictHostKeyChecking=no $server killall -KILL peer java 25 | echo "Dropped "$server 26 | fi 27 | let i=$i+1 28 | done 29 | 30 | sleep $SR 31 | let i=0 32 | for client in `cat $HOSTS`; do 33 | if [[ $i -lt $K ]]; then 34 | ssh -oStrictHostKeyChecking=no $client 'killall -KILL ycsbc' 35 | fi 36 | let i=$i+1 37 | done 38 | 39 | -------------------------------------------------------------------------------- /benchmark/hyperledger/start-peers.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Args: number of nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | if [ $# -lt 1 ]; then 7 | NP=`wc -l $HOSTS | cut -d ' ' -f 1` 8 | else 9 | NP=$1 10 | fi 11 | 12 | echo "Starting nodes ($NP) ..." 13 | 14 | CONFIG=hl_consensus_$NP".yaml" 15 | for peer in `cat $HOSTS`; do 16 | scp $CONFIG $peer:$HL_SOURCE/consensus/pbft/config.yaml 17 | done 18 | 19 | i=0 20 | for peer in `cat $HOSTS`; do 21 | if [[ $i -eq 0 ]]; then 22 | ssh $peer . $HL_HOME/start-root.sh 23 | bpeer=$peer 24 | elif [[ $i -lt $NP ]]; then 25 | ssh $peer . $HL_HOME/start-slave.sh $bpeer $i 26 | fi 27 | let i=$i+1 28 | done 29 | echo bpeer = $bpeer 30 | -------------------------------------------------------------------------------- /benchmark/hyperledger/start-root.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | PEER="$HL_SOURCE/build/bin/peer" 7 | if ! [ -e $PEER ]; then 8 | echo "Hyperledger peer executable not found: $PEER" 9 | exit 1 10 | fi 11 | 12 | export CORE_PEER_ID=vp0 13 | export CORE_PEER_ADDRESSAUTODETECT=true 14 | export CORE_PEER_NETWORKID=dev2 15 | export CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft 16 | export CORE_PEER_FILE_SYSTEM_PATH=/tmp/hyperledger 17 | export CORE_VM_ENDPOINT=http://0.0.0.0:2375 18 | export CORE_PBFT_GENERAL_MODE=batch 19 | 20 | rm -rf $CORE_PEER_FILE_SYSTEM_PATH 21 | mkdir -p $CORE_PEER_FILE_SYSTEM_PATH 22 | mkdir -p $LOG_DIR 23 | 24 | # GO environment 25 | export GOPATH=$HL_DATA/go 26 | export PATH=$PATH:$HL_DATA/go/bin 27 | 28 | # rocksdb lib 29 | export LD_LIBRARY_PATH=/usr/local/lib 30 | 31 | HOST=`hostname` 32 | nohup $PEER node start > $LOG_DIR/hl_log_root_$HOST 2>&1 & 33 | -------------------------------------------------------------------------------- /benchmark/hyperledger/stop-peers.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "Stopping nodes and clients..." 7 | # stop peers 8 | for peer in `cat $HOSTS`; do 9 | ssh $peer killall -KILL peer java driver 10 | done 11 | 12 | # stop clients 13 | for client in `cat $CLIENTS`; do 14 | ssh $client killall -KILL driver peer java 15 | done 16 | -------------------------------------------------------------------------------- /benchmark/parity/chain_spec.json.template: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PoA", 3 | "engine": { 4 | "authorityRound": { 5 | "params": { 6 | "gasLimitBoundDivisor": "0x400", 7 | "stepDuration": "1", 8 | "validators" : { 9 | "list": [ 10 | ] 11 | } 12 | } 13 | } 14 | }, 15 | "params": { 16 | "maximumExtraDataSize": "0x20", 17 | "minGasLimit": "0x1", 18 | "networkID" : "0x2323" 19 | }, 20 | "genesis": { 21 | "seal": { 22 | "authorityRound": { 23 | "step": "0x0", 24 | "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 25 | } 26 | }, 27 | "difficulty": "0x20000", 28 | "gasLimit": "0xFF000000000000" 29 | }, 30 | "accounts": { 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /benchmark/parity/config.toml.1: -------------------------------------------------------------------------------- 1 | [parity] 2 | chain = "chain_spec.json" 3 | base_path = "/home/jingo/parity-test/chain-data" 4 | [network] 5 | port = 30300 6 | [rpc] 7 | port = 8545 8 | apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces", "rpc", "parity_accounts"] 9 | [account] 10 | password = ["node.pwds"] 11 | [footprint] 12 | num_verifiers = 8 13 | [mining] 14 | reseal_on_txs = "none" 15 | gas_floor_target = "0xf0000000000000" 16 | usd_per_tx = "0.0" 17 | tx_gas_limit = "0xf0000000000000" 18 | engine_signer = "0xbaa984160be2e533d5d116a384a664b72008bc3c" -------------------------------------------------------------------------------- /benchmark/parity/config.toml.template: -------------------------------------------------------------------------------- 1 | [parity] 2 | chain = "chain_spec.json" 3 | base_path = "/data/dinhtta/chain-data" 4 | [network] 5 | port = 30300 6 | [rpc] 7 | port = 8545 8 | apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces", "rpc", "parity_accounts"] 9 | [account] 10 | password = ["node.pwds"] 11 | unlock =["0x0956e52cb729097e58fc3d945b0464e0ad68df2e"] 12 | [footprint] 13 | scale_verifiers = true 14 | num_verifiers = 8 15 | [mining] 16 | tx_queue_size = 10240 17 | reseal_on_txs = "none" 18 | gas_floor_target = "0xf0000000000000" 19 | usd_per_tx = "0.0" 20 | tx_gas_limit = "0xf0000000000000" 21 | engine_signer = 22 | -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile01: -------------------------------------------------------------------------------- 1 | {"id":"e38bab02-75b8-d05a-9e81-dbf1329b2f55","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"2629f050c0172514ea8a6e59481710d5"},"ciphertext":"c88a46cbaa977e0a00e5733135f5c6e8297b68e5e6ca5023d02c068e19be8556","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"b81796a392f4818d44d22f35037ce9925815f3994ea38ec5815217804a101558"},"mac":"660b260411653f2260dcbec5683c8e1210d8d3748b172a961633e054689966b5"},"address":"baa984160be2e533d5d116a384a664b72008bc3c","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile02: -------------------------------------------------------------------------------- 1 | {"id":"469a580b-5ec0-3bda-a7f1-e6df832b1f2e","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"2298a9caecc1a4c7f0e407681c10eb51"},"ciphertext":"5cdc8f0a4a6e84cf21c044ca6765c9bf6cc8e56d3d55c32620b96f572a166512","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"8c0f64e285180381457a6859f46aff14f2b45c120649cdc89e8b0ffa23d30cd1"},"mac":"408a6f40b4baf7d4cd975bc4e4d8fd8b80f6dd26fda2ec73a20ef00c711b712a"},"address":"4c1d0a027175352d9f73059b4f80509955802f80","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile03: -------------------------------------------------------------------------------- 1 | {"id":"3e80f953-0270-1945-968c-5e7874bcd515","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"a6e9ea98923c4957e185a7aa6576c3e3"},"ciphertext":"29c19b7af1ac2145ddc26fd496926347f020e1efadfa0da7616296746c93ff90","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"799d93362133ed418dc86d397aa6c87abe4e3a2004cf73a592dd83c928a85609"},"mac":"d172d3275a93f7640a623c4e4e0df71acf80c3089a9eb2d663ad05e8711f679d"},"address":"74a4ee6f3a9827628f917abf6b98682a3bc00093","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile04: -------------------------------------------------------------------------------- 1 | {"id":"f1436c62-d3f0-15b4-f609-4f7e89a4ac60","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"ec75bcca76513a980912ab6396979f55"},"ciphertext":"d508a58012bf13b8fedf767dc3f71d3e4110c8fcd343a084d808ebc759d21444","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"62b614342a9c23531392b3bbcbfb48309875a245523aa3b31fb6021703b9670d"},"mac":"8057b6f1c2dad71f0df807e9b4ce4e1b152de2a89f6eb41fe17f92419313407d"},"address":"521fe759204076932c3ba1a59900de918e13a34a","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile05: -------------------------------------------------------------------------------- 1 | {"id":"20bebc9a-ad23-a97c-63e2-9968b6bb00d1","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"ca1cc5f9ec9fc6544e9dbe6b46278c80"},"ciphertext":"67ba4f0bd93ef691f67c4e24b9da43767263cc07da579333f6b9b2256e58b674","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"5e039efe5db25b10349d57e2a48fcb47cc835026dc9d982ae5cb956645e9a70d"},"mac":"caba85827473ede6e91af7d8536653ba37240a6614339fa5a8029fa87aaa558d"},"address":"3440338752aed240fbb9245ff2dcce5df05e7757","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile06: -------------------------------------------------------------------------------- 1 | {"id":"7469a135-de7c-9322-6dc9-9ea060b97c7e","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"c22eb43dcd7929c2a5638f62d94e4905"},"ciphertext":"cb017eed1081e67c4d7ccc71b9496e4b206a30d6519f96137b4f82dd97bef7d2","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"e438ecc4a112f4a1bc0c6d4fd59cb0282c437bcc0e8aa34c34e92c2564d4ed1b"},"mac":"cbda13e68e1a00a5be3d45b8f48a30b29ec06f943f3b47e881af93495fbaf8b8"},"address":"f33c47d1863fbede415410da38aae08034391cdc","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile07: -------------------------------------------------------------------------------- 1 | {"id":"ad5d616b-6597-3d8c-4076-0e742eac32eb","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"66dbbae266e81cb02905e6c1f6277b02"},"ciphertext":"98ac4f5973b414158ffd26822aceb0a81e9bcebfba7dcbfdf0ef80719e2d7467","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"4ce3b5009b921bd1675723f641550fd8ce65b9f6c64342e04eaffd35b9809136"},"mac":"f18cc205a6b1d01783e6a4e7b894373ae19c4b381d9b4cfa28857e6fd39f5ca6"},"address":"3a280012560eec59b1b22451e80c04aa165700a2","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile08: -------------------------------------------------------------------------------- 1 | {"id":"16206fdb-1c1d-74dd-8e19-27df0a5f53c9","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"17737b3a1ad66217a6d6bea6c5a8b1f1"},"ciphertext":"511284568880f8a4cea5c66b5b8673ba307dc9f79358a6617bdd8fd49d54a70f","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"4282cacc380b4b429f5326f779c3051b6b0b2322c7254dfa4dc61accc0951770"},"mac":"e3c60e7ad714988d22496d9ad7aa72dac628a3224a87276462f93eba639e1fe3"},"address":"e6d8ce6fe0a3104b135147952960c81299a66bc2","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile09: -------------------------------------------------------------------------------- 1 | {"id":"24752aaa-c3b2-afdd-1b30-ec605b671d82","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"169faa1c0ab8a0f05534efa5ea3e9c29"},"ciphertext":"7e18789c7fdf12c0d0c49bc146f131d12dc3ccefdb9c0e567bad7890f7765018","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"36e953f601c0cdc2db76053a5cca7ac15c1579c4079cfe63ca1e6da0b51113d2"},"mac":"dac9019369e33f50b2a3d1054cd4ac9f53975d8a520ec630c00f2bb5c519e1bb"},"address":"794ed26126130431bc130e072b33416451d1b796","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile10: -------------------------------------------------------------------------------- 1 | {"id":"183a559e-50d3-7e4e-356a-680cf24661fe","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"caeaeb9d4866fcae39964cddf7710835"},"ciphertext":"c38d00f4124cd3b381d26d7f9945e3a7c2d80c59f0ecb0c83cf7b79eebf26e71","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"8aa6a080003a64faaa75163900d9ecca2d0ff54420dbc139666db74d0091cac8"},"mac":"c6f0a0272b49484b894fe550fdc44984d00581e5bbb2137c0b343713e6f5ac93"},"address":"2150dcfebe74231f5053e54f72d8ed3cfd0e2b1c","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile11: -------------------------------------------------------------------------------- 1 | {"id":"235bbe70-0ff8-5c93-5972-fe053157a124","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"9f4b88c736ce3bde4c92dee84a3f64aa"},"ciphertext":"5fea9d6dbfec2efcad44137c3a7f57dc8ba3885a6e840cbd0a2ec0da04f9b169","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"6e3000524e3b5675db76568599202efbb9d15d6884e7a29cf8642c6bb01172ac"},"mac":"c015eccf7414f5a2210faea415658a670d3262f5905af2e8b9bed6ffda1bfdbb"},"address":"d6483282f514bc694a61b75393aa57aaca4d3d61","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile12: -------------------------------------------------------------------------------- 1 | {"id":"1c1eb00c-6554-502f-f75a-95ceb3ccc902","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"bd23c25d04b741720796a005a54d8c7a"},"ciphertext":"15c40495efc8e3bbed9c38f39546e646bb8b30e99e6a3d0f5d00cd73bdb58dbe","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"e98c2767bdc1b37b4fc8441d791937226c2c7b66253c130867f8d1ebaf2fe689"},"mac":"7a9d0fd34567a8a45cd333110a3ec781d218df2dc2c3eff5039fc2f604b8263b"},"address":"f1a300a3be1bac704ec8d6228731575c5bed59a4","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile13: -------------------------------------------------------------------------------- 1 | {"id":"d7d33750-925d-f63c-090c-3c08683d49cb","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"915000b932ab7ac0e1dc6130b43c5d25"},"ciphertext":"86fa66019bc3dbe101869641b19da7252cc12d6d53985e7a4cb4bf29147801bf","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"e47fd37487e78c5c1fe1e1b033fcc55d7836f1f29637c0da13f83a8efe957627"},"mac":"b23fb918d7df2bc41406fb52137f3b068f67e979cde3a7d9cf245c9520edf171"},"address":"1be6fef780ce21553f8f77de2c68733381b1fc57","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile14: -------------------------------------------------------------------------------- 1 | {"id":"e8d9331d-e751-74e3-65e8-aed1bb592289","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"996c4e1e9c98af7c883abeae2480134c"},"ciphertext":"44a7e0a401bd3704e754c5011de3c7002fd20035c6da2d068b748c9d72fbae2e","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"c52d591afcd219bded9df16f1587e07edab66839e4eeb5f252b8e274fc958053"},"mac":"4073b059e8368355efe4c75c1c07e091bdff63d4c9f250fb35fa6476e45c418b"},"address":"eccde5db0b5094e23f69742855c0cb7f11d293c7","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile15: -------------------------------------------------------------------------------- 1 | {"id":"a3815f95-bf4a-01df-8f03-3c9b5120ab3a","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"966001a3c46f1e7660d72c65633c7748"},"ciphertext":"4ca6dec509801020d886abc1d2db33486854bcf264809611ccbee50f6ee7d27f","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"d6619016861ea9ce424549aa29cb3c85b155d39d20a25e6e39056665f039e5f2"},"mac":"700149d6f32c30bf1b1e76cff4b97faf9f86b4a889dd9637781e812f671dd6c6"},"address":"e47c4c1b67b85a6f878a4d551ba40740d470ce87","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile16: -------------------------------------------------------------------------------- 1 | {"id":"238a561b-c9e8-ee82-eba6-54519cd6a892","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"90c69a4e7c5835a5887ea62580cf8e23"},"ciphertext":"0dbbf66164ba3d8390556e8374145408aa1c25056b21b2fa9b1cff6e2131aba8","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"b0eb32f0536c9e0c5546c47272a9bf27e39c825da1521cc37968be1c89027465"},"mac":"d6d889778dd62fc864deb2dc6ae2e9c467eea4fe81438640078e10c7d694c12b"},"address":"0dfd04c777230100a1c589b5ee7a470703ecc7a6","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile17: -------------------------------------------------------------------------------- 1 | {"id":"b271c9fd-724d-eab2-f740-cf968ba2c333","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"44066b9b52993b30d47c0b3f529db68d"},"ciphertext":"cc3bf73425f0473aa2aedc7c92c8167e41827d10cddab858eb38609a222c0c09","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"de9545cfbea93c220ce3557f8fb4bca65e1eb67553d21464484fb1bccf13a449"},"mac":"4c1c6a02608b28ebea72fbd068fc2a53de6f8b98af44c7b20f98d5d5c3240d1e"},"address":"7c5b47e3ceae3e0442ca0ebbdcb5fb43a224e870","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile18: -------------------------------------------------------------------------------- 1 | {"id":"3059ec6c-e64b-2fbf-b4f6-6bfda9b560e9","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"4ae3f4a91b798c105155274e72ff0e8e"},"ciphertext":"d911a44342076be168aaf6280b278eb5261a58fc30a5d91865fc31ec95ad2e52","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"77cc5d0ab34c577678060efa5c253f1042470e54ce4c87ef296f18f401bb4c29"},"mac":"2895d2062a66bd7223ffe72de4fa4b3691ab153e7ea4439fa82870a3fc9ce1e1"},"address":"bafb3ce90fe0802e65b5a84e02b3e9c1d0641b9f","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile19: -------------------------------------------------------------------------------- 1 | {"id":"81f1029a-0d01-56a8-5280-850f73f02aec","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"6d05824de0d894cbb438d250dd27e038"},"ciphertext":"90b306dce0b19356f90c8b6e83da63584427a38c0a21351667d23ede727a39c5","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"456f5dc57a0636137f32da6a85709c745b575f56cb743d9d4dbe0aa72e6cf161"},"mac":"2a9bfa17de1954395330b39477f60ea5a0d01f6a17f1a1bacd69a04cd1b099c7"},"address":"3e0916413eb4da6922df612c4f451efa25b12fd9","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile20: -------------------------------------------------------------------------------- 1 | {"id":"dbf83e55-b41e-b40c-b1fb-41511293e014","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"8ce88bb681659e82a9c4333b3a90bb46"},"ciphertext":"e71e292086d1710ff6760301d9c1202097554fa0fc1d977ac544ec7a76005246","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"29f9a44ff97688ab2df79dd97654860f5110052ebb23abd48299652c0b92aefb"},"mac":"918ef479d9fd10d44e082a8edb00f651516f6a847cb712c84d916ddadabdc236"},"address":"0956e52cb729097e58fc3d945b0464e0ad68df2e","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile21: -------------------------------------------------------------------------------- 1 | {"id":"1795c1e5-2280-091e-5baf-4c13533b2174","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"d8b4e4796f78a339c688895907aa2ef1"},"ciphertext":"56503ad40851ebbc524b7fbdc355fafe66ec499b94fc453a041fc1ae285cc954","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"325a0dcfdd19cee2f2915b542b8927987c2b7f9bf5c8041d5b65126b0ee816bd"},"mac":"40133420fd9b2a9eff3a0a57d5feb7ae4e1aa9847028ff1afba285921078df63"},"address":"cc922e6de5bff67f811283437a841372eb8148a9","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile22: -------------------------------------------------------------------------------- 1 | {"id":"b5d7bbf0-08d3-681d-7a08-37848d35414e","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"31df338d139d3a32e8a3a10146876cf6"},"ciphertext":"1fcf9318f226f28b9adf1f055b49826c00d766513a6c1615338ef2cdc91f7a42","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"c340092f5b50730db86e952a7dc6c18f168d29f76d9e880bd3bed1c59f390142"},"mac":"139c6adca8f7a4310e9f49d1daf4dcc9de4cf4d8ae9191dc7d6c32dc8e061dd1"},"address":"1185721c924aa34b09ac82b7fce25d5bebc01272","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile23: -------------------------------------------------------------------------------- 1 | {"id":"611eb5f3-eb20-493d-bc83-542caee5d4b4","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"bd8a246d92bfbd6e935854b1541b1a26"},"ciphertext":"17a7d433ecb56bfb5d9ce6cfb5751180ff1d4ed7eb1157cdf3253df9ab570ffb","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"56f3858a007b6bef6aac5cf3c4dfdc8eb353383ed7c2d94c4fbc70c42fcfb708"},"mac":"c0da5574c50daa6bd2eebb4ac4e4708ffbf411024d2040d3b6af18a5d26a08ae"},"address":"6b5088b5974585e9c36c9484a61925035a1564b9","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile24: -------------------------------------------------------------------------------- 1 | {"id":"b0b5a268-fd89-2bec-00c3-c5915c1842cb","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"bce292992bfbbb47e7be4caf210a5038"},"ciphertext":"962ea6939563a093e7a7e744fdaa991a51507b8bf90e959506eb30c04f346906","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"1e63de1df380e3e507e3229f0c7800ce3c56fab51432efa41f5c74e832833f03"},"mac":"634aef752a2f065d48f1152dc1456fae758f9a918db86755baf2787f36ab8ccb"},"address":"c54e7b5dd77e09893c6d86cf0411da776e76271c","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile25: -------------------------------------------------------------------------------- 1 | {"id":"7d3c9220-6cef-8988-de63-551efa82eea2","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"c2332a3b9f3d34ec77ba6b25360be51a"},"ciphertext":"fff6c9706e2e512b339ee27afdfd37e60e450898d866c5ac2e033fd9fbebefe9","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"1fbcb94d27a5d9cc1531f55712e9423b2fe04656690b0b7ad5f66e68dd38d012"},"mac":"2013d1aef0c498162ec2b391c2d656dfeb20fa30af4efd51a016b650a1f1146a"},"address":"1fe4235929fd562f19743214727d1e90724b53d8","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile26: -------------------------------------------------------------------------------- 1 | {"id":"42919226-3d99-8d3c-c463-4e1519421f4a","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"a044ae07e7b2c9ef142c08c2eb74aa09"},"ciphertext":"aaf45d78066fa5e69fb8c72f24ec5fa6bb91d63c83b6dcfe3286288d8bb22734","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"3f1be30951619a3582e09d8647fe4c4d7d9830ff5b31e5842e5ca7f7c294109d"},"mac":"1c4035ea7aaa9acde832372ec8cf920a98ddfe3e12da2ec933d2cf25c0d09695"},"address":"d864328de426c0c6e4a4e83a09e5164b2b788dec","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile27: -------------------------------------------------------------------------------- 1 | {"id":"73c8079f-13d4-34c6-b495-5fdfbb3bb044","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"17b0ef7f3c13abf3023935f399e8b844"},"ciphertext":"311e279321d7ba913f40335693e0eae0afd3db717b5107a428ba8b08c2a77f57","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"28bbd8ef336d9f582f3a0a3166fdba168bdac73b9b53367a3de19ca1406c8c37"},"mac":"3da01b93ca7e4bc771f8e2b5b138f09aa46c555a6205b00bda9ac68bc63865cf"},"address":"132a920b9548fcc193ddc6fbdb1e9b02161a33a0","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile28: -------------------------------------------------------------------------------- 1 | {"id":"bdd2d376-dbf4-83f8-5064-0acc310725db","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"bd819b9f5c816b7966fb56d1a02e1359"},"ciphertext":"c1627b8123e91525f654d194af7751be907981491ae38f7b96874cbe5691abb8","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"c3eef407bd412943ac2fd3c3727ae87b13dc72fa26ba818836cfc0a400d25e75"},"mac":"480f13cebdbc8f1460f5521f2a8058f7d7ea606f60dfb39d6742a4a45475b174"},"address":"3c432b47790e6983a7173a1875a98e7d45f577e6","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile29: -------------------------------------------------------------------------------- 1 | {"id":"f17ef88d-30ef-4065-b7e7-ef6e1d49220a","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"d29327523f07ec86dd277c6f89a5fa8a"},"ciphertext":"3215b2e29ac00a490186a0bf8e49723a6b8d2b77184baf25a68a6b25076f885f","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"8f75cc2e6405989ead81a48c408f730e805ada09cd0ffe1b3e9128f55508ffbe"},"mac":"d31da6c5d25df3a500d70ea1654d1abbcee3d992cb21df8ddaa5bbbf7900b6ec"},"address":"c926a71a56a9a7143b1512454c88277e12f64fea","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile30: -------------------------------------------------------------------------------- 1 | {"id":"0174030e-7a12-a8f4-ad8d-6800b239b46f","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"4320614889c3800cbffb45696d982b40"},"ciphertext":"19a485c5206134b9955effdae28b23802476c489cb22f9cca2649b474cc9e049","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"53efe66ca3a86e3d2bc000d6674d979b64ecfb03f893e87f64610a0d900eee5f"},"mac":"282f6298746bcf32bf0a0380d60c8b3a5f301e3b3c3bd74cdda17ee0bdea5101"},"address":"36d38cb68107532499e44362803d1e983ed67d66","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile31: -------------------------------------------------------------------------------- 1 | {"id":"ba154392-1ce0-e60a-c770-f651fb77c841","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"d2637c9e8ef546f5c1c3047700a9227f"},"ciphertext":"d950d5503506f26dab38944eaedfb686bc5d9091e1f507f00164508e5ac241b1","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"d7905ca8f88f70625037df8df7c77f7e5f45c2e74d2b6a26b77e8edc88d7aa57"},"mac":"83c2be82ef9dc77bbd66b5c3e0e6939a42e1e9e5e7d2944648774aafc7896c41"},"address":"fb42e2cae088dab917210b65ce590a8b960bf553","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/keys/keyfile32: -------------------------------------------------------------------------------- 1 | {"id":"ede72475-c1e0-dc31-4346-9b2fe9bfb334","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"4d6713c0a7a4007961bf068c73d17e0e"},"ciphertext":"9a34e51a7f8b8c5e441170940f456d524a53e639fbb3114a33bd366bc532dc5e","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"6e1783daee2d91a0864e1f436a7b31e7f37357c2cec9d73cbe44624aadcea678"},"mac":"b3584f6295ae27ee5a67ec15100f9edb18ef37180da375679700d1cad1ce10cb"},"address":"ad1f5b5e09cbde9a39a43e237baa95afad8733b8","name":"","meta":"{}"} -------------------------------------------------------------------------------- /benchmark/parity/node.pwds: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /benchmark/parity/partition.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import os 3 | import sys 4 | from config import * 5 | 6 | def partition(nodes, timeout): 7 | n=len(nodes) 8 | nodes1 = nodes[:n/2] 9 | nodes2 = nodes[n/2:] 10 | for n1 in nodes1: 11 | for n2 in nodes2: 12 | cmd = partition_cmd.format(n1,n2,timeout) 13 | os.system(cmd) 14 | 15 | if __name__=='__main__': 16 | partition(NODES[:int(sys.argv[1])], TIMEOUT) 17 | -------------------------------------------------------------------------------- /benchmark/parity/partition.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | nodeX=$1 4 | nodeY=$2 5 | time=$3 6 | 7 | argErr="Args Error: Usage ./killconn " 8 | 9 | if (($#!=3)); then 10 | echo $argErr 11 | exit 12 | fi 13 | 14 | echo NodeX: $nodeX 15 | echo NodeY: $nodeY 16 | echo Drop Time: $time 17 | 18 | ssh $nodeX sudo iptables -w -A INPUT -p tcp -s $nodeY -j DROP 19 | ssh $nodeY sudo iptables -w -A INPUT -p tcp -s $nodeX -j DROP 20 | sleep $time 21 | ssh $nodeX sudo iptables -w -D INPUT -p tcp -s $nodeY -j DROP 22 | ssh $nodeY sudo iptables -w -D INPUT -p tcp -s $nodeX -j DROP 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /benchmark/parity/patch_restclient: -------------------------------------------------------------------------------- 1 | diff -ruN source/restclient.cc ../../tmp_patch/restclient-cpp/source/restclient.cc 2 | --- source/restclient.cc 2017-03-07 17:24:24.933326969 +0800 3 | +++ ../../tmp_patch/restclient-cpp/source/restclient.cc 2017-03-07 17:25:28.917329940 +0800 4 | @@ -68,6 +68,7 @@ 5 | RestClient::Response ret; 6 | RestClient::Connection *conn = new RestClient::Connection(""); 7 | conn->AppendHeader("Content-Type", ctype); 8 | + conn->AppendHeader("Expect",""); 9 | ret = conn->post(url, data); 10 | delete conn; 11 | return ret; 12 | -------------------------------------------------------------------------------- /benchmark/parity/run_all.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import os 3 | import time 4 | # re-run the saturation and security benchmark 5 | 6 | cp_cmd='cp config_{}.py config.py' 7 | run_cmd='python run.py start {}' 8 | def run_benchmark(name, param): 9 | # copy the config file 10 | os.system(cp_cmd.format(name)) 11 | os.system(run_cmd.format(param)) 12 | 13 | if __name__=='__main__': 14 | run_benchmark('saturation', '') 15 | time.sleep(10) 16 | run_benchmark('security', '-security') 17 | time.sleep(10) 18 | run_benchmark('scale', '') 19 | time.sleep(10) 20 | run_benchmark('scale_fix_8', '-fixed') 21 | time.sleep(10) 22 | run_benchmark('drop', '-drop') 23 | time.sleep(10) 24 | run_benchmark('smallbank', '-smallbank') 25 | time.sleep(10) 26 | run_benchmark('donothing', '-donothing') 27 | time.sleep(10) 28 | print 'DONE ALL BENCHMARKS for Parity' 29 | -------------------------------------------------------------------------------- /benchmark/parity/start_donothing_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | THREADS=$1 3 | HOST=$2 4 | LOG=$3 5 | RATE=$4 6 | cd `dirname ${BASH_SOURCE-$0}` 7 | EXE='../../src/donothing/driver' 8 | 9 | nohup $EXE -db parity -threads $THREADS -P ../../src/ycsb/workloads/workloada.spec -endpoint $HOST -txrate $RATE > $LOG 2>&1 & 10 | -------------------------------------------------------------------------------- /benchmark/parity/start_parity.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CHAIN_DATA=$1 3 | KEYS=$CHAIN_DATA/keys/PoA 4 | HOST=$2 5 | LOGS=$3 6 | PARITY=$4 7 | IDX=$5 8 | cd `dirname ${BASH_SOURCE-$0}` 9 | 10 | # remove chain data 11 | rm -rf $CHAIN_DATA 12 | mkdir -p $KEYS 13 | mkdir -p $LOGS 14 | # copy keys 15 | cp keys/key* $KEYS/ 16 | 17 | nohup ${PARITY} --config config.toml.$IDX --rpcport 8545 --rpcaddr $HOST > $LOGS/log 2>&1 & 18 | -------------------------------------------------------------------------------- /benchmark/parity/start_smallbank_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | THREADS=$1 3 | HOST=$2 4 | LOG=$3 5 | RATE=$4 6 | cd `dirname ${BASH_SOURCE-$0}` 7 | EXE='../../src/macro/smallbank/driver' 8 | 9 | nohup $EXE -db parity -threads $THREADS -P ../../src/macro/kvstore/workloads/workloada.spec -endpoint $HOST -txrate $RATE > $LOG 2>&1 & 10 | -------------------------------------------------------------------------------- /benchmark/parity/start_ycsb_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | THREADS=$1 3 | HOST=$2 4 | LOG=$3 5 | RATE=$4 6 | cd `dirname ${BASH_SOURCE-$0}` 7 | EXE="../../src/macro/kvstore/driver" 8 | nohup $EXE -db parity -threads $THREADS -P ../../src/macro/kvstore/workloads/workloada.spec -endpoint $HOST -txrate $RATE > $LOG 2>&1 & 9 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/clients: -------------------------------------------------------------------------------- 1 | 10.0.0.100 2 | 10.0.0.99 3 | 10.0.0.98 4 | 10.0.0.97 5 | 10.0.0.96 6 | 10.0.0.95 7 | 10.0.0.94 8 | 10.0.0.93 9 | 10.0.0.92 10 | 10.0.0.91 11 | 10.0.0.90 12 | 10.0.0.89 13 | 10.0.0.88 14 | 10.0.0.87 15 | 10.0.0.86 16 | 10.0.0.85 17 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/config.py: -------------------------------------------------------------------------------- 1 | NODES=['10.0.0.{}'.format(x) for x in range(3,11)] 2 | partition_cmd = './partition.sh {} {} {} &' 3 | TIMEOUT=150 4 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/config.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ooibc88/blockbench/147462732712624710fbfdf2cc5eb01cb6b7ad84/benchmark/quorum_pbft/config.pyc -------------------------------------------------------------------------------- /benchmark/quorum_pbft/hosts: -------------------------------------------------------------------------------- 1 | 10.0.0.3 2 | 10.0.0.4 3 | 10.0.0.5 4 | 10.0.0.6 5 | 10.0.0.7 6 | 10.0.0.8 7 | 10.0.0.9 8 | 10.0.0.10 9 | 10.0.0.11 10 | 10.0.0.12 11 | 10.0.0.13 12 | 10.0.0.14 13 | 10.0.0.16 14 | 10.0.0.17 15 | 10.0.0.18 16 | 10.0.0.19 17 | 10.0.0.20 18 | 10.0.0.21 19 | 10.0.0.22 20 | 10.0.0.23 21 | 10.0.0.24 22 | 10.0.0.25 23 | 10.0.0.26 24 | 10.0.0.27 25 | 10.0.0.28 26 | 10.0.0.29 27 | 10.0.0.30 28 | 10.0.0.31 29 | 10.0.0.32 30 | 10.0.0.33 31 | 10.0.0.34 32 | 10.0.0.35 33 | 34 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/init-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # num_nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "init-all" 7 | i=0 8 | for host in `cat $HOSTS`; do 9 | if [[ $i -lt $1 ]]; then 10 | ssh -oStrictHostKeyChecking=no $host $QUO_HOME/init.sh $i $1 11 | echo done node $host 12 | fi 13 | let i=$i+1 14 | done 15 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #args: number_of_nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "init.sh" 7 | mkdir -p $QUO_DATA/{keystore,geth} 8 | 9 | let i=$1+1 10 | echo "$i..$1...$2" 11 | 12 | cp static-nodes/static-nodes$2.json $QUO_DATA/static-nodes.json 13 | cp nodekey/nodekey$2/$1/nodekey $QUO_DATA/geth/nodekey 14 | #cat static-nodes/static-nodes$2.json 15 | #echo static-nodes/static-nodes$2.json 16 | #echo nodekey/nodekey$2/$1/nodekey 17 | 18 | ${QUORUM} --datadir=$QUO_DATA init $QUO_HOME/genesis$2.json 19 | ${QUORUM} --datadir=$QUO_DATA account new --password <(echo -n "") 20 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey1/0/nodekey: -------------------------------------------------------------------------------- 1 | 76a3f1fadc2b114c02f69f53b9c24bbf58d67c31c398df35695b7848241c61fe -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/0/nodekey: -------------------------------------------------------------------------------- 1 | 5ec442ce21ba51e86f84049ef26fd36a6a8aaa4b2cbc45251d052448c74d41fe -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/1/nodekey: -------------------------------------------------------------------------------- 1 | 10c780f5f5c8f0a6567cf5b6cfacba2d0ec690d684d113b8adf8fc5dd467a041 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/10/nodekey: -------------------------------------------------------------------------------- 1 | 8ea506ec7bbaa98b7f7bcd69c520223ee06d3ee0fdcfb84f9a447f7e4e7c4606 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/11/nodekey: -------------------------------------------------------------------------------- 1 | 679c4d07fb231d8b1492618004b9dc114bc8404aa9dd0ef3f1250bdaed52a028 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/2/nodekey: -------------------------------------------------------------------------------- 1 | ab54c1abe42b63ee2059fad0fdfea69057e3dceec2595ab62e7e87e6a5ca681d -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/3/nodekey: -------------------------------------------------------------------------------- 1 | bb886605aaaf535170cb80a81373b0d34a343f2a85bb3457453120ca168dd2b4 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/4/nodekey: -------------------------------------------------------------------------------- 1 | 324ec830d94561ec78e19988e16899d0002001ffbac6ff634e4f63f34d8de112 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/5/nodekey: -------------------------------------------------------------------------------- 1 | 1385abb1393a32f2bca0a0a659f3fafee74468559879097ecda927163b02b658 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/6/nodekey: -------------------------------------------------------------------------------- 1 | faae6e57c2aff49938fb59d62f42de0326fa65981d0cdea20de807453c67de5f -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/7/nodekey: -------------------------------------------------------------------------------- 1 | b9450216f307751c6ce3ae3d64b8f99090408adc6bf7ece8b9e8a073399d2e01 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/8/nodekey: -------------------------------------------------------------------------------- 1 | 83c2c12b692a45ed9005ea852df9a063625808cc12f67c6670d316e819ebe86f -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey12/9/nodekey: -------------------------------------------------------------------------------- 1 | cce86bbacbcad6e4caa02ed0bb7121c52ee2d99860f2a454d00f73a5503b55b3 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/0/nodekey: -------------------------------------------------------------------------------- 1 | 63ccfbf608a7bb55593d3844d977d8b9f70c5b85bdb37d9ba9bdd8075b2549f6 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/1/nodekey: -------------------------------------------------------------------------------- 1 | fb529bd65937e411a9d9364c99460bbecb90a3ad4bb6259398eedc3569a078eb -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/10/nodekey: -------------------------------------------------------------------------------- 1 | d7ed2b3023887d2706d5229361d2f4938bfba36e8a567fd62305f4821ab05427 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/11/nodekey: -------------------------------------------------------------------------------- 1 | d117532441feccd2f9d65f83be75a95e706fcb947e087af4736e66d636ac8efd -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/12/nodekey: -------------------------------------------------------------------------------- 1 | 2baa401eae14df6126ca1959ffeccbaed66832047eb191758592040a494acd3b -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/13/nodekey: -------------------------------------------------------------------------------- 1 | 2130d9207f27cc24b8dd7c97cbacd6d397f2f94ebba3bfd94a842f89aaa7e483 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/14/nodekey: -------------------------------------------------------------------------------- 1 | 7ed52eb2c59585854c8e01dab5d1ae5f32044cfb6453858f0df1d39a81908b55 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/15/nodekey: -------------------------------------------------------------------------------- 1 | 0e27c971da68ded473222ad1087a12e225cc233d0104963416afd0cea5f5beab -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/2/nodekey: -------------------------------------------------------------------------------- 1 | 90fcbcf6485a72a2b9531903c680e0f966e0a6025440328d1adc865bdc695ed9 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/3/nodekey: -------------------------------------------------------------------------------- 1 | d1ecc6220a45aedb46e40318c4f83cc4953ee635f15c3a5ad7dc149e6bf13235 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/4/nodekey: -------------------------------------------------------------------------------- 1 | c52b2116bb4927157c4bfb1d35d4abf6163984c567d3f55732ee9b1c4af0e180 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/5/nodekey: -------------------------------------------------------------------------------- 1 | aa0a89c14229d76b633180d44232df2db929ad9fa06e031164c1386cf45abdfc -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/6/nodekey: -------------------------------------------------------------------------------- 1 | 7e91d3eea49596aef32bf5de9eceed10d6b292f7a0c678c923e2b7e60d27d52f -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/7/nodekey: -------------------------------------------------------------------------------- 1 | d7e3fc388db5f53105c4db10405c1cf9b7dddc6dba9172f9961888c06bd8ee58 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/8/nodekey: -------------------------------------------------------------------------------- 1 | 50b80ab06fd3a2095089165f613ffa05f336984dd3cca7be9e9e0618e2d20044 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey16/9/nodekey: -------------------------------------------------------------------------------- 1 | 2f3528d737954e382128999c1c7054aff30f0e564d962e932e02cf9d682bcf95 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey2/0/nodekey: -------------------------------------------------------------------------------- 1 | 1de9d97b8a561ade4f5a4ed08e569804bfef14eeb36ad707e43b4e3e94ac8ce0 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey2/1/nodekey: -------------------------------------------------------------------------------- 1 | bf3d23a78a682db6ffe1b129e25c068fc19373e27f92ba3c0fe88ae6c698a167 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey4/0/nodekey: -------------------------------------------------------------------------------- 1 | ad39d2bb695b5dc0fcb76efed12508d1e6591fd8f128969351bcdabf7e66672c -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey4/1/nodekey: -------------------------------------------------------------------------------- 1 | b5f45a0f547e6833b7efa00951865217036972db15fd28258acd60c316d04e25 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey4/2/nodekey: -------------------------------------------------------------------------------- 1 | ec506b50f89ec3683ff7ed1f7e53ac6fae0186207820e8006b4cac611d304667 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey4/3/nodekey: -------------------------------------------------------------------------------- 1 | fdedf419fe5ed3544c29edc3d017a0ad44b841fcc3b4c67d3b42c33577f2e040 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey8/0/nodekey: -------------------------------------------------------------------------------- 1 | 8dab8ad47f82d907b22ddc5a633fd7432527c634ff5568623be6ef97448a2d7d -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey8/1/nodekey: -------------------------------------------------------------------------------- 1 | b7cef28c7eed0034c42671a2d0ff5f816190bee688dce4a0499ec060f4f4e92c -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey8/2/nodekey: -------------------------------------------------------------------------------- 1 | 40e2640a2edd5948943f282a4b887db63152eb0eeb830f6da9e1cad7c8a5cb02 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey8/3/nodekey: -------------------------------------------------------------------------------- 1 | 15e7d86e8810e660873e6aae16131ecb5c27310d563061bc36b4f0b17ee0cf74 -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey8/4/nodekey: -------------------------------------------------------------------------------- 1 | f8b9ba9fc0b6fe2a184d7d3c941b099c5756b4565c608b7c24c150a683a44fcc -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey8/5/nodekey: -------------------------------------------------------------------------------- 1 | 0d7ca74b273294ca2b342d139c471f88a12cdd6e573568fdc7574896828a289b -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey8/6/nodekey: -------------------------------------------------------------------------------- 1 | 47f7465d2657d8696bb3a63c6ab84bdd9e8e71565b2cdebfe826110cc1ef851b -------------------------------------------------------------------------------- /benchmark/quorum_pbft/nodekey/nodekey8/7/nodekey: -------------------------------------------------------------------------------- 1 | 0430f93ef768e81285cce074a90d66dcf3ab753804df2633157b5f7303cecc6e -------------------------------------------------------------------------------- /benchmark/quorum_pbft/partition.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import os 3 | import sys 4 | from config import * 5 | 6 | def partition(nodes, timeout): 7 | n=len(nodes) 8 | nodes1 = nodes[:n/2] 9 | nodes2 = nodes[n/2:] 10 | for n1 in nodes1: 11 | for n2 in nodes2: 12 | cmd = partition_cmd.format(n1,n2,timeout) 13 | os.system(cmd) 14 | 15 | if __name__=='__main__': 16 | partition(NODES[:int(sys.argv[1])], TIMEOUT) 17 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/partition.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "partition.sh" 4 | 5 | nodeX=$1 6 | nodeY=$2 7 | time=$3 8 | 9 | argErr="Args Error: Usage ./killconn " 10 | 11 | if (($#!=3)); then 12 | echo $argErr 13 | exit 14 | fi 15 | 16 | echo NodeX: $nodeX 17 | echo NodeY: $nodeY 18 | echo Drop Time: $time 19 | 20 | ssh $nodeX sudo iptables -w -A INPUT -p tcp -s $nodeY -j DROP 21 | ssh $nodeY sudo iptables -w -A INPUT -p tcp -s $nodeX -j DROP 22 | sleep $time 23 | ssh $nodeX sudo iptables -w -D INPUT -p tcp -s $nodeY -j DROP 24 | ssh $nodeY sudo iptables -w -D INPUT -p tcp -s $nodeX -j DROP 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/run-bench-security.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg num_nodes #num_threads num_clients tx_rate [-drop] 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "run-bench-security.sh" 7 | ./stop-all.sh $1 8 | 9 | ./init-all.sh $1 10 | ./start-all.sh $1 11 | 12 | let M=240+40*$1 13 | sleep $M 14 | 15 | ./start-multi-clients.sh $3 $1 $2 $4 $5 & 16 | BACK=$! 17 | sleep 100 18 | python partition.py $1 19 | wait $BACK 20 | #./start-multi-clients.sh clients_$1 $1 $2 21 | #./start-multi-clients.sh clients_8 $1 $2 22 | ./stop-all.sh $1 23 | 24 | sleep 5 25 | 26 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/run-bench.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg num_nodes #num_threads num_clients tx_rate [-drop] 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "run-bench.sh" 7 | ./stop-all.sh $1 8 | 9 | ./init-all.sh $1 10 | ./start-all.sh $1 11 | 12 | let M=2*$1 13 | #240+40*$1 14 | echo "sleep $M" 15 | sleep $M 16 | 17 | ./start-multi-clients.sh $3 $1 $2 $4 $5 18 | 19 | #BACK=$! 20 | #sleep 100 21 | #python partition.py $1 22 | #wait $BACK 23 | #./start-multi-clients.sh clients_$1 $1 $2 24 | #./start-multi-clients.sh clients_8 $1 $2 25 | ./stop-all.sh $1 26 | 27 | sleep 5 28 | 29 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/start-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | # echo "start-all.sh" 7 | # rm -rf addPeer.txt 8 | # ./gather.sh $1 9 | # sleep 3 10 | 11 | i=0 12 | for host in `cat $HOSTS`; do 13 | if [[ $i -lt $1 ]]; then 14 | ssh -oStrictHostKeyChecking=no $host $QUO_HOME/start-mining.sh $i 15 | echo done node $host 16 | fi 17 | let i=$i+1 18 | done 19 | 20 | # i=0 21 | # for host in `cat $HOSTS`; do 22 | # if [[ $i -lt $1 ]]; then 23 | # ssh -oStrictHostKeyChecking=no $host $QUO_HOME/start-addPeer.sh $i 24 | # echo done node $host 25 | # fi 26 | # let i=$i+1 27 | # done -------------------------------------------------------------------------------- /benchmark/quorum_pbft/start-clients.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # args=THREADS index N txrate 3 | echo IN START_CLIENTS $1 $2 $3 $4 4 | 5 | cd `dirname ${BASH_SOURCE-$0}` 6 | . env.sh 7 | 8 | #.. 9 | export CPATH=/users/dinhtta/local/include 10 | export LIBRARY_PATH=/users/dinhtta/local/lib:$LIBRARY_PATH 11 | export LD_LIBRARY_PATH=/users/dinhtta/local/lib:$LD_LIBRARY_PATH 12 | #.. 13 | 14 | LOG_DIR=$LOG_DIR/exp_$3"_"servers_$1"_"threads_$4"_"rates 15 | mkdir -p $LOG_DIR 16 | i=0 17 | for host in `cat $HOSTS`; do 18 | let n=i/2 19 | let i=i+1 20 | if [[ $n -eq $2 ]]; then 21 | cd $EXE_HOME 22 | #both ycsbc and smallbank use the same driver 23 | nohup ./driver -db ethereum -threads $1 -P workloads/workloadb.spec -endpoint $host:8000 -txrate $4 > $LOG_DIR/client_$host"_"$1 2>&1 & 24 | fi 25 | done 26 | 27 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/start-mining.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | echo "start-mining.sh" 5 | 6 | if [[ $1 -eq 0 ]]; then 7 | echo $1 8 | nohup ${QUORUM} --datadir $QUO_DATA --rpccorsdomain "*" --nodiscover --syncmode full --mine --rpc --rpcaddr 0.0.0.0 --rpcapi admin,db,eth,debug,miner,net,shh,txpool,personal,web3,quorum,istanbul --rpcport 8000 --unlock 0 --password <(echo -n "") > $QUO_DATA/../pbft_quorum_log 2>&1 & 9 | else 10 | nohup ${QUORUM} --datadir $QUO_DATA --rpccorsdomain "*" --nodiscover --syncmode full --mine --rpc --rpcaddr 0.0.0.0 --rpcapi admin,db,eth,debug,miner,net,shh,txpool,personal,web3,quorum,istanbul --rpcport 8000 --unlock 0 --password <(echo -n "") > $QUO_DATA/../pbft_quorum_log 2>&1 & 11 | fi 12 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/static-nodes/static-nodes1.json: -------------------------------------------------------------------------------- 1 | [ 2 | "enode://e920c84cb687ef096729e926bcfe3dff324cdc05337118745091784f9f037b828e3d197cd5dd80746ece6f0278af210198f47dc27962c6983590b7fa7ddd048e@10.0.0.3:30303?discport=0" 3 | ] -------------------------------------------------------------------------------- /benchmark/quorum_pbft/static-nodes/static-nodes2.json: -------------------------------------------------------------------------------- 1 | [ 2 | "enode://f98321f00a4e337d31c4e348e2870e3a475a138ab63f53594c8c758c8cc3adb27fae2bd90317de3c39b81bb64cf55d0994bf1bdae3a50ba9535a7965e7f298f9@10.0.0.3:30303?discport=0", 3 | "enode://f3f376e9e48a9bb79e1fe8eae6ab3480fe0cc512fec97c1ae06d323bba5c8b322b38407f670765712be193b10f571617bc705b9f8bd5c789a260f5636ec1bb02@10.0.0.4:30303?discport=0" 4 | ] -------------------------------------------------------------------------------- /benchmark/quorum_pbft/static-nodes/static-nodes4.json: -------------------------------------------------------------------------------- 1 | [ 2 | "enode://2917aa10836a19e3cb3c5132f1f68cd6096856080bb2d4b2a4ab9ee67a53d8c9e601022b640e6d38b1634afbcb68e7525d168ab27290180cb7267ec2db2927c7@10.0.0.3:30303?discport=0", 3 | "enode://63bace01b9254964146ed146bc4340c316e43d6c052e5c0d32bfb45aef75cc52a7e6d9a22e0e8519eb68e7180535c794e5b2d33fc58a69ab548fae57e15adbf0@10.0.0.4:30303?discport=0", 4 | "enode://8c5ba5fffa38f03040ed7f030b57d834e086e4fd67a34fd6ec294fdf5b6ba2f3f1e524df5e7cbad390371c2d598f2ef1e20b2d5d14071cd2e4cd818f270d746c@10.0.0.5:30303?discport=0", 5 | "enode://92240db6392762514a12348ea4bafc4fe046468f8f1b4a7707f67227d43b7d91deba1d142d3a70f2bc6807ee6f2468615a499fc055dec102d5a337d14a095efb@10.0.0.6:30303?discport=0" 6 | ] -------------------------------------------------------------------------------- /benchmark/quorum_pbft/stop-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg nnodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | i=0 7 | for host in `cat $CLIENTS`; do 8 | ssh -oStrictHostKeyChecking=no fuwanzeng@$host killall -KILL driver 9 | echo done node $host 10 | done 11 | 12 | for host in `cat $HOSTS`; do 13 | if [[ $i -lt $1 ]]; then 14 | ssh -oStrictHostKeyChecking=no fuwanzeng@$host $QUO_HOME/stop.sh 15 | echo done node $host 16 | fi 17 | let i=$i+1 18 | done 19 | 20 | 21 | -------------------------------------------------------------------------------- /benchmark/quorum_pbft/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | 5 | echo "stop.sh" 6 | killall -KILL geth ${QUORUM} 7 | rm -rf $QUO_DATA 8 | #rm -rf $QUO_DATA/chaindata/ 9 | rm -rf ~/.eth* 10 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/addresses: -------------------------------------------------------------------------------- 1 | 0xeb6902c98ed64b7b16f743a7c09b36b8fa1aff59 2 | 0x981010def42136f95ad6f302052e660bac5f2b3f 3 | 0xbe80f950c3d6c6baecd78b2d32a65275bad9ab58 4 | 0x748d769bdecf1d4ad0b0311af3165acf6eb0f44f 5 | 0x8f720812bec35d562e01b19b3e34706e14ebbcbb 6 | 0xda3c2783743bdfaae95b6fc711eb38ab5d1d82df 7 | 0x06f8337ab1e5016473d592ff874aef64cef01994 8 | 0xd701c341dab9abb0aaa0748a9be693f6f10911e2 9 | 0xbc8e7c58be8783f1848d38db88a6280994dad919 10 | 0x05d7769a10c4f7627178936a588e15cfaaa42731 11 | 0x6f313ba59ca1d26d5493ce49174c1db8f32bcc62 12 | 0x8cc77cf47be0aa1639bffed75ea0fa74d6ba3cd8 13 | 0xa7572e33a52d455834ee654577e3c08f4b8feec3 14 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/clients: -------------------------------------------------------------------------------- 1 | 10.0.0.100 2 | 10.0.0.99 3 | 10.0.0.98 4 | 10.0.0.97 5 | 10.0.0.96 6 | 10.0.0.95 7 | 10.0.0.94 8 | 10.0.0.93 9 | 10.0.0.92 10 | 10.0.0.91 11 | 10.0.0.90 12 | 10.0.0.89 13 | 10.0.0.88 14 | 10.0.0.87 15 | 10.0.0.86 16 | 10.0.0.85 17 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/config.py: -------------------------------------------------------------------------------- 1 | NODES=['10.0.0.{}'.format(x) for x in range(3,11)] 2 | partition_cmd = './partition.sh {} {} {} &' 3 | TIMEOUT=150 4 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/config.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ooibc88/blockbench/147462732712624710fbfdf2cc5eb01cb6b7ad84/benchmark/quorum_raft/config.pyc -------------------------------------------------------------------------------- /benchmark/quorum_raft/env.sh: -------------------------------------------------------------------------------- 1 | QUO_HOME=~/blockchain-perf/benchmark/quorum_raft 2 | HOSTS=$QUO_HOME/hosts 3 | CLIENTS=$QUO_HOME/clients 4 | QUO_DATA=/data/fuwanzeng/quorum_raft 5 | LOG_DIR=$QUO_HOME/../data/raft 6 | EXE_HOME=$QUO_HOME/../../src/macro/kvstore 7 | BENCHMARK=ycsb 8 | QUORUM=~/download/quorum/build/bin/geth 9 | ADDRESSES=$QUO_HOME/addresses 10 | 11 | ##comment these out for smallbank 12 | #EXE_HOME=$QUO_HOME/../../src/macro/smallbank 13 | #BENCHMARK=smallbank 14 | #LOG_DIR=$QUO_HOME/smallbank_results_2 15 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/env_donothing.sh: -------------------------------------------------------------------------------- 1 | QUO_HOME=~/blockchain-perf/benchmark/quorum_raft 2 | HOSTS=$QUO_HOME/hosts 3 | CLIENTS=$QUO_HOME/clients 4 | QUO_DATA=/data/fuwanzeng/quorum_raft 5 | LOG_DIR=$QUO_HOME/../data/raft 6 | EXE_HOME=$QUO_HOME/../../src/macro/kvstore 7 | BENCHMARK=ycsb 8 | QUORUM=~/download/quorum/build/bin/geth 9 | ADDRESSES=$QUO_HOME/addresses 10 | 11 | ##comment these out for smallbank 12 | #EXE_HOME=$QUO_HOME/../../src/macro/smallbank 13 | #BENCHMARK=smallbank 14 | #LOG_DIR=$QUO_HOME/smallbank_results_2 15 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/env_ycsb.sh: -------------------------------------------------------------------------------- 1 | QUO_HOME=~/blockchain-perf/benchmark/quorum_raft 2 | HOSTS=$QUO_HOME/hosts 3 | CLIENTS=$QUO_HOME/clients 4 | QUO_DATA=/data/fuwanzeng/quorum_raft 5 | LOG_DIR=$QUO_HOME/../data/raft 6 | EXE_HOME=$QUO_HOME/../../src/macro/kvstore 7 | BENCHMARK=ycsb 8 | QUORUM=~/download/quorum/build/bin/geth 9 | ADDRESSES=$QUO_HOME/addresses 10 | 11 | ##comment these out for smallbank 12 | #EXE_HOME=$QUO_HOME/../../src/macro/smallbank 13 | #BENCHMARK=smallbank 14 | #LOG_DIR=$QUO_HOME/smallbank_results_2 15 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/hosts: -------------------------------------------------------------------------------- 1 | 10.0.0.3 2 | 10.0.0.4 3 | 10.0.0.5 4 | 10.0.0.6 5 | 10.0.0.7 6 | 10.0.0.8 7 | 10.0.0.9 8 | 10.0.0.10 9 | 10.0.0.11 10 | 10.0.0.12 11 | 10.0.0.13 12 | 10.0.0.14 13 | 10.0.0.16 14 | 10.0.0.17 15 | 10.0.0.18 16 | 10.0.0.19 17 | 10.0.0.20 18 | 10.0.0.21 19 | 10.0.0.22 20 | 10.0.0.23 21 | 10.0.0.24 22 | 10.0.0.25 23 | 10.0.0.26 24 | 10.0.0.27 25 | 10.0.0.28 26 | 10.0.0.29 27 | 10.0.0.30 28 | 10.0.0.31 29 | 10.0.0.32 30 | 10.0.0.33 31 | 10.0.0.34 32 | 10.0.0.35 33 | 34 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/init-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # num_nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "init-all" 7 | i=0 8 | for host in `cat $HOSTS`; do 9 | if [[ $i -lt $1 ]]; then 10 | ssh -oStrictHostKeyChecking=no $host $QUO_HOME/init.sh $i $1 11 | echo done node $host 12 | fi 13 | let i=$i+1 14 | done 15 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #args: number_of_nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "init.sh" 7 | mkdir -p $QUO_DATA/{keystore,geth} 8 | 9 | let i=$1+1 10 | echo "keys/key$i" 11 | cp keys/key$i $QUO_DATA/keystore 12 | cp raft/static-nodes$2.json $QUO_DATA/static-nodes.json 13 | cp raft/nodekey$i $QUO_DATA/geth/nodekey 14 | ${QUORUM} --datadir=$QUO_DATA init $QUO_HOME/genesis_quorum.json 15 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # installing quorum 3 | git clone https://github.com/jpmorganchase/quorum.git 4 | cd quorum 5 | make all 6 | 7 | #Binaries are placed in $REPO_ROOT/build/bin. Put that folder in your PATH to make geth and bootnode easily invokable, or copy those binaries to a folder already in PATH, e.g. /usr/local/bin. 8 | #An easy way to supplement PATH is to add PATH=$PATH:/path/to/repository/build/bin to your ~/.bashrc or ~/.bash_aliases file. 9 | #[quorum-Getting-Set-Up]https://github.com/jpmorganchase/quorum/wiki/Getting-Set-Up -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key1: -------------------------------------------------------------------------------- 1 | {"address":"eb6902c98ed64b7b16f743a7c09b36b8fa1aff59","crypto":{"cipher":"aes-128-ctr","ciphertext":"7c4962019db1e6e894f301f1b57961e88f6b6a35bbf0e947b2ad97436cc6c56d","cipherparams":{"iv":"c65b94aa2cacb66b4991141a1760b7e7"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"260ce09bb03dab9ca37c73812f69bdba1f6e87a7ce77c07913752fe568a8a53e"},"mac":"6d59b1b3e620efb3648779684f03e9006d7d40990667044d6edebb4008c92f95"},"id":"9d763d76-f95f-4048-8911-c69a4acd50de","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key10: -------------------------------------------------------------------------------- 1 | {"address":"05d7769a10c4f7627178936a588e15cfaaa42731","crypto":{"cipher":"aes-128-ctr","ciphertext":"70522ca6a403a25f560fa890406703b0836e4e973fdad3ec938d0ecf8ef76b3b","cipherparams":{"iv":"8d1de767d44c0b3322db7fdeece1d943"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"7a9b523c5014b48a76d276a6417f78e26d8ee7a63732886df5096dffbf340480"},"mac":"ceab578199aca4559d6b2ad1f50c22f06e4067292f4169e35182849b2b6c73f7"},"id":"75f9b053-41a2-4ff2-b608-801e65dd2bcd","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key11: -------------------------------------------------------------------------------- 1 | {"address":"6f313ba59ca1d26d5493ce49174c1db8f32bcc62","crypto":{"cipher":"aes-128-ctr","ciphertext":"3e727a2cb8f302d0ea6eca18e3eca20d1abcf5c4f95d4506db824ee724764ac1","cipherparams":{"iv":"f6d8c47c27c2fab75d2a6a7fd2efecb6"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"9cc742a53e059bdc7c9ee2a405de87e0efeab967af8e851345825d78c773b3fc"},"mac":"3568755177a56f0e736d7a4350c388f8d0baed823eadc511cd6f9dc1aedf5729"},"id":"f6eab120-571b-424d-8e9f-10babeecf06b","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key12: -------------------------------------------------------------------------------- 1 | {"address":"8cc77cf47be0aa1639bffed75ea0fa74d6ba3cd8","crypto":{"cipher":"aes-128-ctr","ciphertext":"b989fbf50bc03b50046896d3fab689db6cd80d3b6ff75453b479940da038acab","cipherparams":{"iv":"2c7703d9249667f50ed4f0fade27d51c"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"deead6e37258f7d469d12e8b900a82e7a9b8e923ccc68793b5e6d16e3205b615"},"mac":"3b96fe796ce28038138accaa4f62520c621c94ec0bbfe19203c4511b23304767"},"id":"02a9400e-9e22-46b0-872f-b8ae67480904","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key13: -------------------------------------------------------------------------------- 1 | {"address":"a7572e33a52d455834ee654577e3c08f4b8feec3","crypto":{"cipher":"aes-128-ctr","ciphertext":"9421c2c4477cdf2e0c5796a293f1fe5b1b7a860697efdda6c47f70c0a0c1ba4e","cipherparams":{"iv":"4eb2df171e3a69bbc7f456fcab0332f2"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"c30935ec0765a34ea27efe0ae1ecd5d55d88933196bfb7f56e3b6c2ded6e66f0"},"mac":"2db7990857a547f7eadcdd4604e664847c34db2f06e653f48889290ee1582497"},"id":"7c9dde74-8387-4043-9911-a2abdaf2f945","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key14: -------------------------------------------------------------------------------- 1 | {"address":"099e814f8851c7b199160bf481b7965707e10d02","crypto":{"cipher":"aes-128-ctr","ciphertext":"8f2e4e3c47097536278aab2aba71f090a4ee563bef4c6f251ef39fded6073f77","cipherparams":{"iv":"d8046a07c4fe64787fa2bc326b10b6b1"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"5727a4fb58b8300dd1f51a645565bff32dcfdb28940dcd6fad8274cec444a114"},"mac":"9400ccc5d903a1bf079bc34ca2879c12de6f04fc87eded6cd8916b2b81d38e2e"},"id":"3bea2861-e41c-4bab-ab60-f1aa1998c969","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key15: -------------------------------------------------------------------------------- 1 | {"address":"81f37b112313264981f910e71a918f7b4caca645","crypto":{"cipher":"aes-128-ctr","ciphertext":"f454e089dabe060a4eea445df49de07606a74f7c32ba895784b4534d27cfef77","cipherparams":{"iv":"d6a23ea1a8e388feedc5a133932735b9"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"7a48c3fc91fc67baf1c5bd7c5517b59d90b46aabda8aab7d63b21de78278f48d"},"mac":"918705755520c79a9542513ec9885b76909d152e06507b96a5d3e4d0b3acdef4"},"id":"62ca2eb2-9aa9-4e15-83b8-0df3bbd725aa","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key16: -------------------------------------------------------------------------------- 1 | {"address":"60b3b936ae3a385d998a57af58433637296118a2","crypto":{"cipher":"aes-128-ctr","ciphertext":"8f0acba85ad87df08871038fd3aee85fd9a353e25b9be75c426f84c5c0203811","cipherparams":{"iv":"08e1908721da43d06ccbcbc301e769a6"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"0e2a7b56627715b52cafc88458db8ecf94b1139b5b1c4ab17a69f3b539b9ab7e"},"mac":"39e89f889051de2b892bcdb9cb3a77f78388a137fc55b0fd118a7fdaeed9464f"},"id":"ec02c87c-a0ef-48bf-aac4-a6e6e66701dd","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key17: -------------------------------------------------------------------------------- 1 | {"address":"c987886780e26c475d57f4a20d444ba40f74c04e","crypto":{"cipher":"aes-128-ctr","ciphertext":"d43c0e7fa84b4f58609a9ca75ab2492707605a4cc418d986e3cfb0f10bb7ac0b","cipherparams":{"iv":"6e90c12c838938706566f3277bd07676"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"afda1d25f2b0bef8da537eac34a3be75345430e58d9d1fd654586679dbf769f9"},"mac":"1df7780ac658122d371bc2ba2f2d442cae1aff34e0251cec9d76c458140d5fda"},"id":"9a0a981c-f933-4d65-b1e0-99d1f04bd5cf","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key18: -------------------------------------------------------------------------------- 1 | {"address":"cf595911a31f1c5adfeede06465bea52cb9e4983","crypto":{"cipher":"aes-128-ctr","ciphertext":"526fcf06233e66d123c4a9f89ab6297a0cc2354ea31bd6924725e0d54f6584a9","cipherparams":{"iv":"ba66ae780f7acab26b718aa02eff54f7"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"835edc81d72484c2973d4bb180d4b839e4a9ce5ad0f6fe2eff388e2ede308338"},"mac":"d321311bcd961925eeb52ec01fc617c4af2e6d292e944844f34d4a1d078b4a7a"},"id":"0a698bf4-2b9a-4d1f-b822-00552ea512e9","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key2: -------------------------------------------------------------------------------- 1 | {"address":"981010def42136f95ad6f302052e660bac5f2b3f","crypto":{"cipher":"aes-128-ctr","ciphertext":"f925fcb23feee949a254f6ced332aedf75b8ed382c06af5ea4144e90f30d6ce0","cipherparams":{"iv":"68eaf1d654596f0b1dbd46404285b0b2"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"918f919440f0c03267924e3fd098a0a805fa9daf5b1b6098df19c75a69ed9a76"},"mac":"35362d438e343221ef4ab7fac011632aa2177b62777c41a6176afd5a141098fe"},"id":"eaba36ec-1d26-473a-8119-83cd7a5ae9e2","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key3: -------------------------------------------------------------------------------- 1 | {"address":"be80f950c3d6c6baecd78b2d32a65275bad9ab58","crypto":{"cipher":"aes-128-ctr","ciphertext":"d995a4fd205fc394e6ff81d81e76860f9c49b3db06de2b2c2494d20284795b45","cipherparams":{"iv":"6d79a608df33d37b04575a95ebee0b17"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"8a8bdaef39f63c84bac78eca2aec556efb2ff58ceec1a76b60d68faf15e50837"},"mac":"1af7839f9a414ca87986dc6cc410f777c4a5d46cdcc95275c7270499e98a0811"},"id":"86bdd2e1-7b04-4dcf-a27a-a8afc2feeff7","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key4: -------------------------------------------------------------------------------- 1 | {"address":"748d769bdecf1d4ad0b0311af3165acf6eb0f44f","crypto":{"cipher":"aes-128-ctr","ciphertext":"e34781d33d65cb11e7a83afa8a986cfbee1fa19aadd8c373979c07c7cfaed5e7","cipherparams":{"iv":"6c93b553f3ad1cf12b9bde96f24f8e97"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"0f01c5c34de7bcded2389cf14c61a10d148a885438c71b4efe3a85505d84b7b3"},"mac":"61a09e9d761108f56f5a5d1b7dcc89970f80ef93594055ed539e36f751ab3f3b"},"id":"5213a0f8-732d-4c32-a0a7-187fffcad169","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key5: -------------------------------------------------------------------------------- 1 | {"address":"8f720812bec35d562e01b19b3e34706e14ebbcbb","crypto":{"cipher":"aes-128-ctr","ciphertext":"0a872a1b20826e8a9e5b10ec7428e248fe37e71fd76a09ea4689a0fe9ee9401a","cipherparams":{"iv":"2cd7a4e0697daddfb21126468781ed3c"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"7c2742b0aa514a00a0850212dde3a9feaf2b75bffe1f9434d2ae0607b58cf81f"},"mac":"ef91863869b9fcfaa25042abafd66771b56f794dd4fa17b036dd519f1c67b376"},"id":"9d7e614e-9773-4c41-b281-2b067a385930","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key6: -------------------------------------------------------------------------------- 1 | {"address":"da3c2783743bdfaae95b6fc711eb38ab5d1d82df","crypto":{"cipher":"aes-128-ctr","ciphertext":"53ac1dac7c6be3d03276dc5c7ac1aab8601a038b5d2c17fa508b370cee7b90b6","cipherparams":{"iv":"971ad0c8960e8f6554bdd43f78b41123"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"d00df50a10b3bc5b2215a6ce4355308c961ad4a327a272ddb60c6153dc819d01"},"mac":"1f4aa77903301b8fd75e87f251ed93fdcba04dd3ba6a8429db7b642cb580fcb1"},"id":"2bb3f101-9555-41b8-89c8-f6484c51aefc","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key7: -------------------------------------------------------------------------------- 1 | {"address":"06f8337ab1e5016473d592ff874aef64cef01994","crypto":{"cipher":"aes-128-ctr","ciphertext":"9273c86540811b3c3a894ea2e50dd4daab27c2540e55866bbc5a45883919523d","cipherparams":{"iv":"8831ac7f266818bae9355b3a85400188"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"4818fc560099751d1eb2abe512e4b283ecb12bf42874f94686f937c08773230f"},"mac":"a6ad373abbd1620a3e7e5fcf58302105353ea02e1d56d727e28324dd7e3888a7"},"id":"94d620e6-4076-4b09-a275-b9192a06942c","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key8: -------------------------------------------------------------------------------- 1 | {"address":"d701c341dab9abb0aaa0748a9be693f6f10911e2","crypto":{"cipher":"aes-128-ctr","ciphertext":"571484b33f96178d3a98212ede7f39461313092c159bd47a0cba665982c5ae27","cipherparams":{"iv":"34243a9b548b71fdd16532d58511589d"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"b578568d1d17a8e4e1e4af724266201953420509fe741ff5694891263e5b2a82"},"mac":"c0cd890c3c152d0efb65e006c27e3b7f63e436cb54f1f6c6213eb85fe55eebe5"},"id":"fd7f5f51-cfc9-41bc-b6b3-7a62e53ca05a","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/keys/key9: -------------------------------------------------------------------------------- 1 | {"address":"bc8e7c58be8783f1848d38db88a6280994dad919","crypto":{"cipher":"aes-128-ctr","ciphertext":"27132af35f934e1db5c9510153da474408846e3f6cb3eb4797b73b10637f8a0a","cipherparams":{"iv":"f6f41e8f33bc3cc7377ff8649f84dce3"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"eee092b675f9c8f9f9540f930adb6489e71ee31098ff7f5266148f0565fe8fa5"},"mac":"f7933f4f8ca73f2270149a939d883c60c23b16996b49cdd69705ef9c270d514b"},"id":"63b623e6-9d5c-44d1-89b0-6d569e568dba","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_raft/partition.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import os 3 | import sys 4 | from config import * 5 | 6 | def partition(nodes, timeout): 7 | n=len(nodes) 8 | nodes1 = nodes[:n/2] 9 | nodes2 = nodes[n/2:] 10 | for n1 in nodes1: 11 | for n2 in nodes2: 12 | cmd = partition_cmd.format(n1,n2,timeout) 13 | os.system(cmd) 14 | 15 | if __name__=='__main__': 16 | partition(NODES[:int(sys.argv[1])], TIMEOUT) 17 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/partition.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "partition.sh" 4 | 5 | nodeX=$1 6 | nodeY=$2 7 | time=$3 8 | 9 | argErr="Args Error: Usage ./killconn " 10 | 11 | if (($#!=3)); then 12 | echo $argErr 13 | exit 14 | fi 15 | 16 | echo NodeX: $nodeX 17 | echo NodeY: $nodeY 18 | echo Drop Time: $time 19 | 20 | ssh $nodeX sudo iptables -w -A INPUT -p tcp -s $nodeY -j DROP 21 | ssh $nodeY sudo iptables -w -A INPUT -p tcp -s $nodeX -j DROP 22 | sleep $time 23 | ssh $nodeX sudo iptables -w -D INPUT -p tcp -s $nodeY -j DROP 24 | ssh $nodeY sudo iptables -w -D INPUT -p tcp -s $nodeX -j DROP 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey1: -------------------------------------------------------------------------------- 1 | 1be3b50b31734be48452c29d714941ba165ef0cbf3ccea8ca16c45e3d8d45fb0 2 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey10: -------------------------------------------------------------------------------- 1 | 10f12c459c305c9484fc897c25bbd9e2afc6d6b6067574bb3a14a93e126400b5 -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey11: -------------------------------------------------------------------------------- 1 | 8390e4caa2f6a8fdc0fc87855062fbede324d6499e0293b5a87c690da124ba74 -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey12: -------------------------------------------------------------------------------- 1 | 7ea88971522bd76546fe78d33480e4499273c53c54ffadf87f66f925c61ce2e8 -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey13: -------------------------------------------------------------------------------- 1 | 9dccb7e53dd2cd5173f02bc9f708843ae8d54274becff78402821e4762e1da4e -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey14: -------------------------------------------------------------------------------- 1 | 32924a7c10fb87b53d989911853df705e3bac9a5279ec27d7ffb9a96f0213a1a -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey15: -------------------------------------------------------------------------------- 1 | b63a97b6889faf86dfd6ad692430659db813891d7f2eea79438dd6f9d1ccf15c -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey16: -------------------------------------------------------------------------------- 1 | b15bcc3781002e668cdc0e5339e26920deb685995f7173e7761c5511f032b2e9 -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey2: -------------------------------------------------------------------------------- 1 | 9bdd6a2e7cc1ca4a4019029df3834d2633ea6e14034d6dcc3b944396fe13a08b 2 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey3: -------------------------------------------------------------------------------- 1 | 722f11686b2277dcbd72713d8a3c81c666b585c337d47f503c3c1f3c17cf001d 2 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey4: -------------------------------------------------------------------------------- 1 | 6af685c4de99d44c620ccd9464d19bdeb62a750b9ae49b1740fb28d68a0e5c7d 2 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey5: -------------------------------------------------------------------------------- 1 | 103bb5d20384b9af9f693d4287822fef6da7d79cb2317ed815f0081c7ea8d17d 2 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey6: -------------------------------------------------------------------------------- 1 | 79999aef8d5197446b6051df47f01fd4d6dd1997aec3f5282e77ea27b6727346 2 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey7: -------------------------------------------------------------------------------- 1 | e85dae073b504871ffd7946bf5f45e6fa8dc09eb1536a48c4b6822332008973d 2 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey8: -------------------------------------------------------------------------------- 1 | 32de869d747211e077479a0232ac407a45a664adb2a82d029f275646d2b53375 -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/nodekey9: -------------------------------------------------------------------------------- 1 | 0fce8ef6411e0a7551b2364c7ef87a4bcfe808d382a60fc3063855a1fc9936a6 -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/static-nodes2.json: -------------------------------------------------------------------------------- 1 | [ 2 | "enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@10.0.0.3:9000?discport=0&&raftport=50400", 3 | "enode://0ba6b9f606a43a95edc6247cdb1c1e105145817be7bcafd6b2c0ba15d58145f0dc1a194f70ba73cd6f4cdd6864edc7687f311254c7555cc32e4d45aeb1b80416@10.0.0.4:9000?discport=0&&raftport=50400" 4 | ] 5 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/raft/static-nodes4.json: -------------------------------------------------------------------------------- 1 | [ 2 | "enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@10.0.0.3:9000?discport=0&&raftport=50400", 3 | "enode://0ba6b9f606a43a95edc6247cdb1c1e105145817be7bcafd6b2c0ba15d58145f0dc1a194f70ba73cd6f4cdd6864edc7687f311254c7555cc32e4d45aeb1b80416@10.0.0.4:9000?discport=0&&raftport=50400", 4 | "enode://579f786d4e2830bbcc02815a27e8a9bacccc9605df4dc6f20bcc1a6eb391e7225fff7cb83e5b4ecd1f3a94d8b733803f2f66b7e871961e7b029e22c155c3a778@10.0.0.5:9000?discport=0&&raftport=50400", 5 | "enode://3d9ca5956b38557aba991e31cf510d4df641dce9cc26bfeb7de082f0c07abb6ede3a58410c8f249dabeecee4ad3979929ac4c7c496ad20b8cfdd061b7401b4f5@10.0.0.6:9000?discport=0&&raftport=50400" 6 | ] 7 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/run-bench-security.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg num_nodes #num_threads num_clients tx_rate [-drop] 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "run-bench-security.sh" 7 | ./stop-all.sh $1 8 | 9 | ./init-all.sh $1 10 | ./start-all.sh $1 11 | 12 | let M=240+40*$1 13 | sleep $M 14 | 15 | ./start-multi-clients.sh $3 $1 $2 $4 $5 & 16 | BACK=$! 17 | sleep 100 18 | python partition.py $1 19 | wait $BACK 20 | #./start-multi-clients.sh clients_$1 $1 $2 21 | #./start-multi-clients.sh clients_8 $1 $2 22 | ./stop-all.sh $1 23 | 24 | sleep 5 25 | 26 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/run-bench.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg num_nodes #num_threads num_clients tx_rate [-drop] 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "run-bench.sh" 7 | ./stop-all.sh $1 8 | 9 | ./init-all.sh $1 10 | ./start-all.sh $1 11 | 12 | let M=5*$1 13 | #240+40*$1 14 | echo "sleep $M" 15 | sleep $M 16 | 17 | ./start-multi-clients.sh $3 $1 $2 $4 $5 18 | 19 | #BACK=$! 20 | #sleep 100 21 | #python partition.py $1 22 | #wait $BACK 23 | #./start-multi-clients.sh clients_$1 $1 $2 24 | #./start-multi-clients.sh clients_8 $1 $2 25 | ./stop-all.sh $1 26 | 27 | sleep 5 28 | 29 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/start-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "start-all.sh" 7 | 8 | i=0 9 | for host in `cat $HOSTS`; do 10 | if [[ $i -lt $1 ]]; then 11 | ssh -oStrictHostKeyChecking=no fuwanzeng@$host $QUO_HOME/start-mining.sh 12 | echo done node $host 13 | fi 14 | let i=$i+1 15 | done 16 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/start-clients.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # args=THREADS index N txrate 3 | echo IN START_CLIENTS $1 $2 $3 $4 4 | 5 | cd `dirname ${BASH_SOURCE-$0}` 6 | . env.sh 7 | 8 | #.. 9 | export CPATH=/users/dinhtta/local/include 10 | export LIBRARY_PATH=/users/dinhtta/local/lib:$LIBRARY_PATH 11 | export LD_LIBRARY_PATH=/users/dinhtta/local/lib:$LD_LIBRARY_PATH 12 | #.. 13 | 14 | #LOG_DIR=$ETH_HOME/../src/ycsb/exp_$3"_"servers_run4 15 | LOG_DIR=$LOG_DIR/exp_$3"_"servers_$1"_"threads_$4"_"rates 16 | mkdir -p $LOG_DIR 17 | i=0 18 | for host in `cat $HOSTS`; do 19 | let n=i/2 20 | let i=i+1 21 | if [[ $n -eq $2 ]]; then 22 | cd $EXE_HOME 23 | #both ycsbc and smallbank use the same driver 24 | nohup ./driver -db ethereum -threads $1 -P workloads/workloada.spec -endpoint $host:8000 -txrate $4 > $LOG_DIR/client_$host"_"$1 2>&1 & 25 | fi 26 | done 27 | 28 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/start-mining.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | echo "start-mining.sh" 5 | 6 | nohup ${QUORUM} --datadir $QUO_DATA --rpc --rpcaddr 0.0.0.0 --rpcport 8000 --port 9000 --raft --raftport 50400 --raftblocktime 2000 --unlock 0 --password <(echo -n "") > $QUO_DATA/../raft_quorum_log 2>&1 & 7 | #echo --datadir $QUO_DATA --rpc --rpcaddr 0.0.0.0 --rpcport 8000 --port 9000 --raft --raftport 50400 --raftblocktime 2000 --unlock 0 --password <(echo -n "") 8 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/stop-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg nnodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | i=0 7 | for host in `cat $CLIENTS`; do 8 | ssh -oStrictHostKeyChecking=no fuwanzeng@$host killall -KILL driver 9 | echo done node $host 10 | done 11 | 12 | for host in `cat $HOSTS`; do 13 | if [[ $i -lt $1 ]]; then 14 | ssh -oStrictHostKeyChecking=no fuwanzeng@$host $QUO_HOME/stop.sh 15 | echo done node $host 16 | fi 17 | let i=$i+1 18 | done 19 | 20 | 21 | -------------------------------------------------------------------------------- /benchmark/quorum_raft/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | 5 | echo "stop.sh" 6 | killall -KILL geth ${QUORUM} 7 | rm -rf $QUO_DATA 8 | #rm -rf $QUO_DATA/chaindata/ 9 | rm -rf ~/.eth* 10 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/addresses: -------------------------------------------------------------------------------- 1 | 0xeb6902c98ed64b7b16f743a7c09b36b8fa1aff59 2 | 0x981010def42136f95ad6f302052e660bac5f2b3f 3 | 0xbe80f950c3d6c6baecd78b2d32a65275bad9ab58 4 | 0x748d769bdecf1d4ad0b0311af3165acf6eb0f44f 5 | 0x8f720812bec35d562e01b19b3e34706e14ebbcbb 6 | 0xda3c2783743bdfaae95b6fc711eb38ab5d1d82df 7 | 0x06f8337ab1e5016473d592ff874aef64cef01994 8 | 0xd701c341dab9abb0aaa0748a9be693f6f10911e2 9 | 0xbc8e7c58be8783f1848d38db88a6280994dad919 10 | 0x05d7769a10c4f7627178936a588e15cfaaa42731 11 | 0x6f313ba59ca1d26d5493ce49174c1db8f32bcc62 12 | 0x8cc77cf47be0aa1639bffed75ea0fa74d6ba3cd8 13 | 0xa7572e33a52d455834ee654577e3c08f4b8feec3 14 | 0x099e814f8851c7b199160bf481b7965707e10d02 15 | 0x81f37b112313264981f910e71a918f7b4caca645 16 | 0x60b3b936ae3a385d998a57af58433637296118a2 17 | 0xc987886780e26c475d57f4a20d444ba40f74c04e 18 | 0xcf595911a31f1c5adfeede06465bea52cb9e4983 19 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/clients: -------------------------------------------------------------------------------- 1 | 10.0.0.100 2 | 10.0.0.99 3 | 10.0.0.98 4 | 10.0.0.97 5 | 10.0.0.96 6 | 10.0.0.95 7 | 10.0.0.94 8 | 10.0.0.93 9 | 10.0.0.92 10 | 10.0.0.91 11 | 10.0.0.90 12 | 10.0.0.89 13 | 10.0.0.88 14 | 10.0.0.87 15 | 10.0.0.86 16 | 10.0.0.85 17 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/config.py: -------------------------------------------------------------------------------- 1 | NODES=['10.0.0.{}'.format(x) for x in range(3,11)] 2 | partition_cmd = './partition.sh {} {} {} &' 3 | TIMEOUT=150 4 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/config.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ooibc88/blockbench/147462732712624710fbfdf2cc5eb01cb6b7ad84/benchmark/quorum_vote/config.pyc -------------------------------------------------------------------------------- /benchmark/quorum_vote/enode.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ip_addr=$1 3 | QUORUM=~/download/quorum/build/bin/geth 4 | QUO_HOME=~/blockchain-perf/benchmark/quorum_vote 5 | QUO_DATA=/data/fuwanzeng/quorum_vote 6 | . QUO_HOME/env.sh 7 | 8 | ${QUORUM} --datadir=$QUO_DATA --rpc --rpcaddr 0.0.0.0 --rpcport "8000" --rpccorsdomain "*" --networkid 9119 --unlock 0 --password <(echo -n "") js <(echo 'console.log(admin.nodeInfo.enode);') 2>/dev/null |grep enode | perl -pe "s/\[\:\:\]/$ip_addr/g" | perl -pe "s/^/\"/; s/\s*$/\"/;" 9 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/env.sh: -------------------------------------------------------------------------------- 1 | QUO_HOME=~/blockchain-perf/benchmark/quorum_vote 2 | HOSTS=$QUO_HOME/hosts 3 | CLIENTS=$QUO_HOME/clients 4 | QUO_DATA=/data/fuwanzeng/quorum_vote 5 | LOG_DIR=$QUO_HOME/../data/vote 6 | EXE_HOME=$QUO_HOME/../../src/macro/kvstore 7 | BENCHMARK=ycsb 8 | QUORUM=~/download/quorum/build/bin/geth 9 | ADDRESSES=$QUO_HOME/addresses 10 | 11 | ##comment these out for smallbank 12 | #EXE_HOME=$QUO_HOME/../../src/macro/smallbank 13 | #BENCHMARK=smallbank 14 | #LOG_DIR=$QUO_HOME/smallbank_results_2 15 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/env_donothing.sh: -------------------------------------------------------------------------------- 1 | QUO_HOME=~/blockchain-perf/benchmark/quorum_vote 2 | HOSTS=$QUO_HOME/hosts 3 | CLIENTS=$QUO_HOME/clients 4 | QUO_DATA=/data/fuwanzeng/quorum_vote 5 | LOG_DIR=$QUO_HOME/../data/vote 6 | EXE_HOME=$QUO_HOME/../../src/macro/kvstore 7 | BENCHMARK=ycsb 8 | QUORUM=~/download/quorum/build/bin/geth 9 | ADDRESSES=$QUO_HOME/addresses 10 | 11 | ##comment these out for smallbank 12 | #EXE_HOME=$QUO_HOME/../../src/macro/smallbank 13 | #BENCHMARK=smallbank 14 | #LOG_DIR=$QUO_HOME/smallbank_results_2 15 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/env_ycsb.sh: -------------------------------------------------------------------------------- 1 | QUO_HOME=~/blockchain-perf/benchmark/quorum_vote 2 | HOSTS=$QUO_HOME/hosts 3 | CLIENTS=$QUO_HOME/clients 4 | QUO_DATA=/data/fuwanzeng/quorum_vote 5 | LOG_DIR=$QUO_HOME/../data/vote 6 | EXE_HOME=$QUO_HOME/../../src/macro/kvstore 7 | BENCHMARK=ycsb 8 | QUORUM=~/download/quorum/build/bin/geth 9 | ADDRESSES=$QUO_HOME/addresses 10 | 11 | ##comment these out for smallbank 12 | #EXE_HOME=$QUO_HOME/../../src/macro/smallbank 13 | #BENCHMARK=smallbank 14 | #LOG_DIR=$QUO_HOME/smallbank_results_2 15 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/gather.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #nnodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "gather.sh" 7 | 8 | i=0 9 | for host in `cat $HOSTS`; do 10 | if [[ $i -lt $1 ]]; then 11 | echo "$host" 12 | echo "admin.addPeer("`ssh $host $QUO_HOME/enode.sh $host $i 2>/dev/null | grep enode`")" >> addPeer.txt 13 | fi 14 | let i=$i+1 15 | done 16 | 17 | cat addPeer.txt 18 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/hosts: -------------------------------------------------------------------------------- 1 | 10.0.0.3 2 | 10.0.0.4 3 | 10.0.0.5 4 | 10.0.0.6 5 | 10.0.0.7 6 | 10.0.0.8 7 | 10.0.0.9 8 | 10.0.0.10 9 | 10.0.0.11 10 | 10.0.0.12 11 | 10.0.0.13 12 | 10.0.0.14 13 | 10.0.0.16 14 | 10.0.0.17 15 | 10.0.0.18 16 | 10.0.0.19 17 | 10.0.0.20 18 | 10.0.0.21 19 | 10.0.0.22 20 | 10.0.0.23 21 | 10.0.0.24 22 | 10.0.0.25 23 | 10.0.0.26 24 | 10.0.0.27 25 | 10.0.0.28 26 | 10.0.0.29 27 | 10.0.0.30 28 | 10.0.0.31 29 | 10.0.0.32 30 | 10.0.0.33 31 | 10.0.0.34 32 | 10.0.0.35 33 | 34 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/init-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # num_nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "init-all" 7 | i=0 8 | for host in `cat $HOSTS`; do 9 | if [[ $i -lt $1 ]]; then 10 | ssh -oStrictHostKeyChecking=no $host $QUO_HOME/init.sh $i $1 11 | echo done node $host 12 | fi 13 | let i=$i+1 14 | done 15 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #args: number_of_nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "init.sh" 7 | mkdir -p $QUO_DATA/{keystore,geth} 8 | 9 | let i=$1+1 10 | echo "keys/key$i" 11 | cp keys/key$i $QUO_DATA/keystore 12 | 13 | #.. 14 | cp raft/static-nodes$2.json $QUO_DATA/static-nodes.json 15 | cp raft/nodekey$i $QUO_DATA/geth/nodekey 16 | #.. 17 | 18 | ${QUORUM} --datadir=$QUO_DATA init $QUO_HOME/genesis_quorum.json 19 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # installing quorum 3 | git clone https://github.com/jpmorganchase/quorum.git 4 | cd quorum 5 | make all 6 | 7 | #Binaries are placed in $REPO_ROOT/build/bin. Put that folder in your PATH to make geth and bootnode easily invokable, or copy those binaries to a folder already in PATH, e.g. /usr/local/bin. 8 | #An easy way to supplement PATH is to add PATH=$PATH:/path/to/repository/build/bin to your ~/.bashrc or ~/.bash_aliases file. 9 | #[quorum-Getting-Set-Up]https://github.com/jpmorganchase/quorum/wiki/Getting-Set-Up -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key1: -------------------------------------------------------------------------------- 1 | {"address":"eb6902c98ed64b7b16f743a7c09b36b8fa1aff59","crypto":{"cipher":"aes-128-ctr","ciphertext":"7c4962019db1e6e894f301f1b57961e88f6b6a35bbf0e947b2ad97436cc6c56d","cipherparams":{"iv":"c65b94aa2cacb66b4991141a1760b7e7"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"260ce09bb03dab9ca37c73812f69bdba1f6e87a7ce77c07913752fe568a8a53e"},"mac":"6d59b1b3e620efb3648779684f03e9006d7d40990667044d6edebb4008c92f95"},"id":"9d763d76-f95f-4048-8911-c69a4acd50de","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key10: -------------------------------------------------------------------------------- 1 | {"address":"05d7769a10c4f7627178936a588e15cfaaa42731","crypto":{"cipher":"aes-128-ctr","ciphertext":"70522ca6a403a25f560fa890406703b0836e4e973fdad3ec938d0ecf8ef76b3b","cipherparams":{"iv":"8d1de767d44c0b3322db7fdeece1d943"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"7a9b523c5014b48a76d276a6417f78e26d8ee7a63732886df5096dffbf340480"},"mac":"ceab578199aca4559d6b2ad1f50c22f06e4067292f4169e35182849b2b6c73f7"},"id":"75f9b053-41a2-4ff2-b608-801e65dd2bcd","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key11: -------------------------------------------------------------------------------- 1 | {"address":"6f313ba59ca1d26d5493ce49174c1db8f32bcc62","crypto":{"cipher":"aes-128-ctr","ciphertext":"3e727a2cb8f302d0ea6eca18e3eca20d1abcf5c4f95d4506db824ee724764ac1","cipherparams":{"iv":"f6d8c47c27c2fab75d2a6a7fd2efecb6"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"9cc742a53e059bdc7c9ee2a405de87e0efeab967af8e851345825d78c773b3fc"},"mac":"3568755177a56f0e736d7a4350c388f8d0baed823eadc511cd6f9dc1aedf5729"},"id":"f6eab120-571b-424d-8e9f-10babeecf06b","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key12: -------------------------------------------------------------------------------- 1 | {"address":"8cc77cf47be0aa1639bffed75ea0fa74d6ba3cd8","crypto":{"cipher":"aes-128-ctr","ciphertext":"b989fbf50bc03b50046896d3fab689db6cd80d3b6ff75453b479940da038acab","cipherparams":{"iv":"2c7703d9249667f50ed4f0fade27d51c"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"deead6e37258f7d469d12e8b900a82e7a9b8e923ccc68793b5e6d16e3205b615"},"mac":"3b96fe796ce28038138accaa4f62520c621c94ec0bbfe19203c4511b23304767"},"id":"02a9400e-9e22-46b0-872f-b8ae67480904","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key13: -------------------------------------------------------------------------------- 1 | {"address":"a7572e33a52d455834ee654577e3c08f4b8feec3","crypto":{"cipher":"aes-128-ctr","ciphertext":"9421c2c4477cdf2e0c5796a293f1fe5b1b7a860697efdda6c47f70c0a0c1ba4e","cipherparams":{"iv":"4eb2df171e3a69bbc7f456fcab0332f2"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"c30935ec0765a34ea27efe0ae1ecd5d55d88933196bfb7f56e3b6c2ded6e66f0"},"mac":"2db7990857a547f7eadcdd4604e664847c34db2f06e653f48889290ee1582497"},"id":"7c9dde74-8387-4043-9911-a2abdaf2f945","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key14: -------------------------------------------------------------------------------- 1 | {"address":"099e814f8851c7b199160bf481b7965707e10d02","crypto":{"cipher":"aes-128-ctr","ciphertext":"8f2e4e3c47097536278aab2aba71f090a4ee563bef4c6f251ef39fded6073f77","cipherparams":{"iv":"d8046a07c4fe64787fa2bc326b10b6b1"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"5727a4fb58b8300dd1f51a645565bff32dcfdb28940dcd6fad8274cec444a114"},"mac":"9400ccc5d903a1bf079bc34ca2879c12de6f04fc87eded6cd8916b2b81d38e2e"},"id":"3bea2861-e41c-4bab-ab60-f1aa1998c969","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key15: -------------------------------------------------------------------------------- 1 | {"address":"81f37b112313264981f910e71a918f7b4caca645","crypto":{"cipher":"aes-128-ctr","ciphertext":"f454e089dabe060a4eea445df49de07606a74f7c32ba895784b4534d27cfef77","cipherparams":{"iv":"d6a23ea1a8e388feedc5a133932735b9"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"7a48c3fc91fc67baf1c5bd7c5517b59d90b46aabda8aab7d63b21de78278f48d"},"mac":"918705755520c79a9542513ec9885b76909d152e06507b96a5d3e4d0b3acdef4"},"id":"62ca2eb2-9aa9-4e15-83b8-0df3bbd725aa","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key16: -------------------------------------------------------------------------------- 1 | {"address":"60b3b936ae3a385d998a57af58433637296118a2","crypto":{"cipher":"aes-128-ctr","ciphertext":"8f0acba85ad87df08871038fd3aee85fd9a353e25b9be75c426f84c5c0203811","cipherparams":{"iv":"08e1908721da43d06ccbcbc301e769a6"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"0e2a7b56627715b52cafc88458db8ecf94b1139b5b1c4ab17a69f3b539b9ab7e"},"mac":"39e89f889051de2b892bcdb9cb3a77f78388a137fc55b0fd118a7fdaeed9464f"},"id":"ec02c87c-a0ef-48bf-aac4-a6e6e66701dd","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key17: -------------------------------------------------------------------------------- 1 | {"address":"c987886780e26c475d57f4a20d444ba40f74c04e","crypto":{"cipher":"aes-128-ctr","ciphertext":"d43c0e7fa84b4f58609a9ca75ab2492707605a4cc418d986e3cfb0f10bb7ac0b","cipherparams":{"iv":"6e90c12c838938706566f3277bd07676"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"afda1d25f2b0bef8da537eac34a3be75345430e58d9d1fd654586679dbf769f9"},"mac":"1df7780ac658122d371bc2ba2f2d442cae1aff34e0251cec9d76c458140d5fda"},"id":"9a0a981c-f933-4d65-b1e0-99d1f04bd5cf","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key18: -------------------------------------------------------------------------------- 1 | {"address":"cf595911a31f1c5adfeede06465bea52cb9e4983","crypto":{"cipher":"aes-128-ctr","ciphertext":"526fcf06233e66d123c4a9f89ab6297a0cc2354ea31bd6924725e0d54f6584a9","cipherparams":{"iv":"ba66ae780f7acab26b718aa02eff54f7"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"835edc81d72484c2973d4bb180d4b839e4a9ce5ad0f6fe2eff388e2ede308338"},"mac":"d321311bcd961925eeb52ec01fc617c4af2e6d292e944844f34d4a1d078b4a7a"},"id":"0a698bf4-2b9a-4d1f-b822-00552ea512e9","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key2: -------------------------------------------------------------------------------- 1 | {"address":"981010def42136f95ad6f302052e660bac5f2b3f","crypto":{"cipher":"aes-128-ctr","ciphertext":"f925fcb23feee949a254f6ced332aedf75b8ed382c06af5ea4144e90f30d6ce0","cipherparams":{"iv":"68eaf1d654596f0b1dbd46404285b0b2"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"918f919440f0c03267924e3fd098a0a805fa9daf5b1b6098df19c75a69ed9a76"},"mac":"35362d438e343221ef4ab7fac011632aa2177b62777c41a6176afd5a141098fe"},"id":"eaba36ec-1d26-473a-8119-83cd7a5ae9e2","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key3: -------------------------------------------------------------------------------- 1 | {"address":"be80f950c3d6c6baecd78b2d32a65275bad9ab58","crypto":{"cipher":"aes-128-ctr","ciphertext":"d995a4fd205fc394e6ff81d81e76860f9c49b3db06de2b2c2494d20284795b45","cipherparams":{"iv":"6d79a608df33d37b04575a95ebee0b17"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"8a8bdaef39f63c84bac78eca2aec556efb2ff58ceec1a76b60d68faf15e50837"},"mac":"1af7839f9a414ca87986dc6cc410f777c4a5d46cdcc95275c7270499e98a0811"},"id":"86bdd2e1-7b04-4dcf-a27a-a8afc2feeff7","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key4: -------------------------------------------------------------------------------- 1 | {"address":"748d769bdecf1d4ad0b0311af3165acf6eb0f44f","crypto":{"cipher":"aes-128-ctr","ciphertext":"e34781d33d65cb11e7a83afa8a986cfbee1fa19aadd8c373979c07c7cfaed5e7","cipherparams":{"iv":"6c93b553f3ad1cf12b9bde96f24f8e97"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"0f01c5c34de7bcded2389cf14c61a10d148a885438c71b4efe3a85505d84b7b3"},"mac":"61a09e9d761108f56f5a5d1b7dcc89970f80ef93594055ed539e36f751ab3f3b"},"id":"5213a0f8-732d-4c32-a0a7-187fffcad169","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key5: -------------------------------------------------------------------------------- 1 | {"address":"8f720812bec35d562e01b19b3e34706e14ebbcbb","crypto":{"cipher":"aes-128-ctr","ciphertext":"0a872a1b20826e8a9e5b10ec7428e248fe37e71fd76a09ea4689a0fe9ee9401a","cipherparams":{"iv":"2cd7a4e0697daddfb21126468781ed3c"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"7c2742b0aa514a00a0850212dde3a9feaf2b75bffe1f9434d2ae0607b58cf81f"},"mac":"ef91863869b9fcfaa25042abafd66771b56f794dd4fa17b036dd519f1c67b376"},"id":"9d7e614e-9773-4c41-b281-2b067a385930","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key6: -------------------------------------------------------------------------------- 1 | {"address":"da3c2783743bdfaae95b6fc711eb38ab5d1d82df","crypto":{"cipher":"aes-128-ctr","ciphertext":"53ac1dac7c6be3d03276dc5c7ac1aab8601a038b5d2c17fa508b370cee7b90b6","cipherparams":{"iv":"971ad0c8960e8f6554bdd43f78b41123"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"d00df50a10b3bc5b2215a6ce4355308c961ad4a327a272ddb60c6153dc819d01"},"mac":"1f4aa77903301b8fd75e87f251ed93fdcba04dd3ba6a8429db7b642cb580fcb1"},"id":"2bb3f101-9555-41b8-89c8-f6484c51aefc","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key7: -------------------------------------------------------------------------------- 1 | {"address":"06f8337ab1e5016473d592ff874aef64cef01994","crypto":{"cipher":"aes-128-ctr","ciphertext":"9273c86540811b3c3a894ea2e50dd4daab27c2540e55866bbc5a45883919523d","cipherparams":{"iv":"8831ac7f266818bae9355b3a85400188"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"4818fc560099751d1eb2abe512e4b283ecb12bf42874f94686f937c08773230f"},"mac":"a6ad373abbd1620a3e7e5fcf58302105353ea02e1d56d727e28324dd7e3888a7"},"id":"94d620e6-4076-4b09-a275-b9192a06942c","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key8: -------------------------------------------------------------------------------- 1 | {"address":"d701c341dab9abb0aaa0748a9be693f6f10911e2","crypto":{"cipher":"aes-128-ctr","ciphertext":"571484b33f96178d3a98212ede7f39461313092c159bd47a0cba665982c5ae27","cipherparams":{"iv":"34243a9b548b71fdd16532d58511589d"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"b578568d1d17a8e4e1e4af724266201953420509fe741ff5694891263e5b2a82"},"mac":"c0cd890c3c152d0efb65e006c27e3b7f63e436cb54f1f6c6213eb85fe55eebe5"},"id":"fd7f5f51-cfc9-41bc-b6b3-7a62e53ca05a","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/keys/key9: -------------------------------------------------------------------------------- 1 | {"address":"bc8e7c58be8783f1848d38db88a6280994dad919","crypto":{"cipher":"aes-128-ctr","ciphertext":"27132af35f934e1db5c9510153da474408846e3f6cb3eb4797b73b10637f8a0a","cipherparams":{"iv":"f6f41e8f33bc3cc7377ff8649f84dce3"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"eee092b675f9c8f9f9540f930adb6489e71ee31098ff7f5266148f0565fe8fa5"},"mac":"f7933f4f8ca73f2270149a939d883c60c23b16996b49cdd69705ef9c270d514b"},"id":"63b623e6-9d5c-44d1-89b0-6d569e568dba","version":3} -------------------------------------------------------------------------------- /benchmark/quorum_vote/partition.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import os 3 | import sys 4 | from config import * 5 | 6 | def partition(nodes, timeout): 7 | n=len(nodes) 8 | nodes1 = nodes[:n/2] 9 | nodes2 = nodes[n/2:] 10 | for n1 in nodes1: 11 | for n2 in nodes2: 12 | cmd = partition_cmd.format(n1,n2,timeout) 13 | os.system(cmd) 14 | 15 | if __name__=='__main__': 16 | partition(NODES[:int(sys.argv[1])], TIMEOUT) 17 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/partition.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "partition.sh" 4 | 5 | nodeX=$1 6 | nodeY=$2 7 | time=$3 8 | 9 | argErr="Args Error: Usage ./killconn " 10 | 11 | if (($#!=3)); then 12 | echo $argErr 13 | exit 14 | fi 15 | 16 | echo NodeX: $nodeX 17 | echo NodeY: $nodeY 18 | echo Drop Time: $time 19 | 20 | ssh $nodeX sudo iptables -w -A INPUT -p tcp -s $nodeY -j DROP 21 | ssh $nodeY sudo iptables -w -A INPUT -p tcp -s $nodeX -j DROP 22 | sleep $time 23 | ssh $nodeX sudo iptables -w -D INPUT -p tcp -s $nodeY -j DROP 24 | ssh $nodeY sudo iptables -w -D INPUT -p tcp -s $nodeX -j DROP 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey1: -------------------------------------------------------------------------------- 1 | 1be3b50b31734be48452c29d714941ba165ef0cbf3ccea8ca16c45e3d8d45fb0 2 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey10: -------------------------------------------------------------------------------- 1 | 10f12c459c305c9484fc897c25bbd9e2afc6d6b6067574bb3a14a93e126400b5 -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey11: -------------------------------------------------------------------------------- 1 | 8390e4caa2f6a8fdc0fc87855062fbede324d6499e0293b5a87c690da124ba74 -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey12: -------------------------------------------------------------------------------- 1 | 7ea88971522bd76546fe78d33480e4499273c53c54ffadf87f66f925c61ce2e8 -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey13: -------------------------------------------------------------------------------- 1 | 9dccb7e53dd2cd5173f02bc9f708843ae8d54274becff78402821e4762e1da4e -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey14: -------------------------------------------------------------------------------- 1 | 32924a7c10fb87b53d989911853df705e3bac9a5279ec27d7ffb9a96f0213a1a -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey15: -------------------------------------------------------------------------------- 1 | b63a97b6889faf86dfd6ad692430659db813891d7f2eea79438dd6f9d1ccf15c -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey16: -------------------------------------------------------------------------------- 1 | b15bcc3781002e668cdc0e5339e26920deb685995f7173e7761c5511f032b2e9 -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey2: -------------------------------------------------------------------------------- 1 | 9bdd6a2e7cc1ca4a4019029df3834d2633ea6e14034d6dcc3b944396fe13a08b 2 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey3: -------------------------------------------------------------------------------- 1 | 722f11686b2277dcbd72713d8a3c81c666b585c337d47f503c3c1f3c17cf001d 2 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey4: -------------------------------------------------------------------------------- 1 | 6af685c4de99d44c620ccd9464d19bdeb62a750b9ae49b1740fb28d68a0e5c7d 2 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey5: -------------------------------------------------------------------------------- 1 | 103bb5d20384b9af9f693d4287822fef6da7d79cb2317ed815f0081c7ea8d17d 2 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey6: -------------------------------------------------------------------------------- 1 | 79999aef8d5197446b6051df47f01fd4d6dd1997aec3f5282e77ea27b6727346 2 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey7: -------------------------------------------------------------------------------- 1 | e85dae073b504871ffd7946bf5f45e6fa8dc09eb1536a48c4b6822332008973d 2 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey8: -------------------------------------------------------------------------------- 1 | 32de869d747211e077479a0232ac407a45a664adb2a82d029f275646d2b53375 -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/nodekey9: -------------------------------------------------------------------------------- 1 | 0fce8ef6411e0a7551b2364c7ef87a4bcfe808d382a60fc3063855a1fc9936a6 -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/static-nodes2.json: -------------------------------------------------------------------------------- 1 | [ 2 | "enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@10.0.0.3:30303", 3 | "enode://0ba6b9f606a43a95edc6247cdb1c1e105145817be7bcafd6b2c0ba15d58145f0dc1a194f70ba73cd6f4cdd6864edc7687f311254c7555cc32e4d45aeb1b80416@10.0.0.4:30303" 4 | ] 5 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/raft/static-nodes4.json: -------------------------------------------------------------------------------- 1 | [ 2 | "enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@10.0.0.3:30303", 3 | "enode://0ba6b9f606a43a95edc6247cdb1c1e105145817be7bcafd6b2c0ba15d58145f0dc1a194f70ba73cd6f4cdd6864edc7687f311254c7555cc32e4d45aeb1b80416@10.0.0.4:30303", 4 | "enode://579f786d4e2830bbcc02815a27e8a9bacccc9605df4dc6f20bcc1a6eb391e7225fff7cb83e5b4ecd1f3a94d8b733803f2f66b7e871961e7b029e22c155c3a778@10.0.0.5:30303", 5 | "enode://3d9ca5956b38557aba991e31cf510d4df641dce9cc26bfeb7de082f0c07abb6ede3a58410c8f249dabeecee4ad3979929ac4c7c496ad20b8cfdd061b7401b4f5@10.0.0.6:30303" 6 | ] 7 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/run-bench-security.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg num_nodes #num_threads num_clients tx_rate [-drop] 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "run-bench-security.sh" 7 | ./stop-all.sh $1 8 | 9 | ./init-all.sh $1 10 | ./start-all.sh $1 11 | 12 | let M=240+40*$1 13 | sleep $M 14 | 15 | ./start-multi-clients.sh $3 $1 $2 $4 $5 & 16 | BACK=$! 17 | sleep 100 18 | python partition.py $1 19 | wait $BACK 20 | #./start-multi-clients.sh clients_$1 $1 $2 21 | #./start-multi-clients.sh clients_8 $1 $2 22 | ./stop-all.sh $1 23 | 24 | sleep 5 25 | 26 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/run-bench.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg num_nodes #num_threads num_clients tx_rate [-drop] 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "run-bench.sh" 7 | ./stop-all.sh $1 8 | 9 | ./init-all.sh $1 10 | ./start-all.sh $1 11 | 12 | let M=10*$1 13 | #240+40*$1 14 | echo "sleep $M" 15 | sleep $M 16 | 17 | ./start-multi-clients.sh $3 $1 $2 $4 $5 18 | 19 | #BACK=$! 20 | #sleep 100 21 | #python partition.py $1 22 | #wait $BACK 23 | #./start-multi-clients.sh clients_$1 $1 $2 24 | #./start-multi-clients.sh clients_8 $1 $2 25 | ./stop-all.sh $1 26 | 27 | sleep 5 28 | 29 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/start-addPeer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | echo "start-addPeer.sh" 5 | 6 | for com in `cat $QUO_HOME/addPeer.txt`; do 7 | ${QUORUM} --exec $com attach ipc:/$QUO_DATA/geth.ipc 8 | done 9 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/start-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #nodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | echo "start-all.sh" 7 | rm -rf addPeer.txt 8 | ./gather.sh $1 9 | sleep 3 10 | 11 | i=0 12 | for host in `cat $HOSTS`; do 13 | if [[ $i -lt $1 ]]; then 14 | ssh -oStrictHostKeyChecking=no $host $QUO_HOME/start-mining.sh $i 15 | echo done node $host 16 | fi 17 | let i=$i+1 18 | done 19 | 20 | i=0 21 | for host in `cat $HOSTS`; do 22 | if [[ $i -lt $1 ]]; then 23 | ssh -oStrictHostKeyChecking=no $host $QUO_HOME/start-addPeer.sh $i 24 | echo done node $host 25 | fi 26 | let i=$i+1 27 | done -------------------------------------------------------------------------------- /benchmark/quorum_vote/start-clients.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # args=THREADS index N txrate 3 | echo IN START_CLIENTS $1 $2 $3 $4 4 | 5 | cd `dirname ${BASH_SOURCE-$0}` 6 | . env.sh 7 | 8 | #.. 9 | export CPATH=/users/dinhtta/local/include 10 | export LIBRARY_PATH=/users/dinhtta/local/lib:$LIBRARY_PATH 11 | export LD_LIBRARY_PATH=/users/dinhtta/local/lib:$LD_LIBRARY_PATH 12 | #.. 13 | 14 | LOG_DIR=$LOG_DIR/exp_$3"_"servers_$1"_"threads_$4"_"rates 15 | mkdir -p $LOG_DIR 16 | i=0 17 | for host in `cat $HOSTS`; do 18 | let n=i/2 19 | let i=i+1 20 | if [[ $n -eq $2 ]]; then 21 | cd $EXE_HOME 22 | #both ycsbc and smallbank use the same driver 23 | nohup ./driver -db ethereum -threads $1 -P workloads/workloada.spec -endpoint $host:8000 -txrate $4 > $LOG_DIR/client_$host"_"$1 2>&1 & 24 | fi 25 | done 26 | 27 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/start-mining.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | echo "start-mining.sh" 5 | 6 | if [[ $1 -lt 1 ]]; then 7 | echo "blockmaker" 8 | cp keys/key* $QUO_DATA/keystore 9 | nohup ${QUORUM} --datadir $QUO_DATA --rpccorsdomain "*" --nodiscover --voteaccount 0x981010def42136f95ad6f302052e660bac5f2b3f --votepassword "" --blockmakeraccount 0xeb6902c98ed64b7b16f743a7c09b36b8fa1aff59 --blockmakerpassword "" --rpc --rpcaddr 0.0.0.0 --rpcport 8000 --singleblockmaker --minblocktime 1 --maxblocktime 3 > $QUO_DATA/../vote_quorum_log 2>&1 & 10 | else 11 | i=0 12 | for address in `cat $ADDRESSES`; do 13 | if [[ $i -eq $1 ]]; then 14 | nohup ${QUORUM} --datadir $QUO_DATA --rpccorsdomain "*" --nodiscover --voteaccount $address --votepassword "" --rpc --rpcaddr 0.0.0.0 --rpcport 8000 > $QUO_DATA/../vote_quorum_log 2>&1 & 15 | echo done node $host 16 | fi 17 | let i=$i+1 18 | done 19 | fi 20 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/stop-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #arg nnodes 3 | cd `dirname ${BASH_SOURCE-$0}` 4 | . env.sh 5 | 6 | i=0 7 | for host in `cat $CLIENTS`; do 8 | ssh -oStrictHostKeyChecking=no fuwanzeng@$host killall -KILL driver 9 | echo done node $host 10 | done 11 | 12 | for host in `cat $HOSTS`; do 13 | if [[ $i -lt $1 ]]; then 14 | ssh -oStrictHostKeyChecking=no fuwanzeng@$host $QUO_HOME/stop.sh 15 | echo done node $host 16 | fi 17 | let i=$i+1 18 | done 19 | 20 | 21 | -------------------------------------------------------------------------------- /benchmark/quorum_vote/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname ${BASH_SOURCE-$0}` 3 | . env.sh 4 | 5 | echo "stop.sh" 6 | killall -KILL geth ${QUORUM} 7 | rm -rf $QUO_DATA 8 | #rm -rf $QUO_DATA/chaindata/ 9 | rm -rf ~/.eth* 10 | -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | This directory contains implementation of divers for both **Micro-** and **Macro-** benchmark workloads. 2 | 3 | * [Micro-benchmark](micro/README.md) contains workload of DoNothing, IOHeavy, CPUHeavy and Analytics. 4 | 5 | * [Macro-benchmark](macro/README.md) contains workload of YCSB(KVStore) and SmallBank. 6 | -------------------------------------------------------------------------------- /src/macro/kvstore/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | /Debug/ 30 | 31 | .project 32 | .cproject 33 | .settings/ 34 | 35 | *.result 36 | *.log 37 | *.data 38 | *.output 39 | 40 | redis/sample 41 | ycsbc 42 | -------------------------------------------------------------------------------- /src/macro/kvstore/Makefile: -------------------------------------------------------------------------------- 1 | CC=g++ 2 | CFLAGS=-std=c++11 -g -Wall -pthread -I./ 3 | LDFLAGS= -lpthread -lrestclient-cpp 4 | SUBDIRS=core db 5 | SUBSRCS=$(wildcard core/*.cc) $(wildcard db/*.cc) 6 | OBJECTS=$(SUBSRCS:.cc=.o) 7 | EXEC=driver 8 | 9 | all: $(SUBDIRS) $(EXEC) 10 | 11 | $(SUBDIRS): 12 | $(MAKE) -C $@ 13 | 14 | $(EXEC): $(wildcard *.cc) $(OBJECTS) 15 | $(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@ 16 | 17 | clean: 18 | for dir in $(SUBDIRS); do \ 19 | $(MAKE) -C $$dir $@; \ 20 | done 21 | $(RM) $(EXEC) 22 | 23 | .PHONY: $(SUBDIRS) $(EXEC) 24 | 25 | -------------------------------------------------------------------------------- /src/macro/kvstore/core/.gitignore: -------------------------------------------------------------------------------- 1 | /Debug/ 2 | .cproject 3 | .project 4 | -------------------------------------------------------------------------------- /src/macro/kvstore/core/Makefile: -------------------------------------------------------------------------------- 1 | CC=g++ 2 | CFLAGS=-std=c++11 -c -g -Wall 3 | SOURCES=$(wildcard *.cc) 4 | OBJECTS=$(SOURCES:.cc=.o) 5 | 6 | all: $(SOURCES) $(OBJECTS) 7 | 8 | .cc.o: 9 | $(CC) $(CFLAGS) $< -o $@ 10 | 11 | clean: 12 | $(RM) $(OBJECTS) 13 | -------------------------------------------------------------------------------- /src/macro/kvstore/core/const_generator.h: -------------------------------------------------------------------------------- 1 | // 2 | // const_generator.h 3 | // YCSB-C 4 | // 5 | // Created by Jinglei Ren on 12/10/14. 6 | // Copyright (c) 2014 Jinglei Ren . 7 | // 8 | 9 | #ifndef YCSB_C_CONST_GENERATOR_H_ 10 | #define YCSB_C_CONST_GENERATOR_H_ 11 | 12 | #include "generator.h" 13 | #include 14 | 15 | namespace ycsbc { 16 | 17 | class ConstGenerator : public Generator { 18 | public: 19 | ConstGenerator(int constant) : constant_(constant) { } 20 | uint64_t Next() { return constant_; } 21 | uint64_t Last() { return constant_; } 22 | private: 23 | uint64_t constant_; 24 | }; 25 | 26 | } // ycsbc 27 | 28 | #endif // YCSB_C_CONST_GENERATOR_H_ 29 | -------------------------------------------------------------------------------- /src/macro/kvstore/core/counter_generator.h: -------------------------------------------------------------------------------- 1 | // 2 | // counter_generator.h 3 | // YCSB-C 4 | // 5 | // Created by Jinglei Ren on 12/9/14. 6 | // Copyright (c) 2014 Jinglei Ren . 7 | // 8 | 9 | #ifndef YCSB_C_COUNTER_GENERATOR_H_ 10 | #define YCSB_C_COUNTER_GENERATOR_H_ 11 | 12 | #include "generator.h" 13 | 14 | #include 15 | #include 16 | 17 | namespace ycsbc { 18 | 19 | class CounterGenerator : public Generator { 20 | public: 21 | CounterGenerator(uint64_t start) : counter_(start) { } 22 | uint64_t Next() { return counter_.fetch_add(1); } 23 | uint64_t Last() { return counter_.load() - 1; } 24 | void Set(uint64_t start) { counter_.store(start); } 25 | private: 26 | std::atomic counter_; 27 | }; 28 | 29 | } // ycsbc 30 | 31 | #endif // YCSB_C_COUNTER_GENERATOR_H_ 32 | -------------------------------------------------------------------------------- /src/macro/kvstore/core/generator.h: -------------------------------------------------------------------------------- 1 | // 2 | // generator.h 3 | // YCSB-C 4 | // 5 | // Created by Jinglei Ren on 12/6/14. 6 | // Copyright (c) 2014 Jinglei Ren . 7 | // 8 | 9 | #ifndef YCSB_C_GENERATOR_H_ 10 | #define YCSB_C_GENERATOR_H_ 11 | 12 | #include 13 | #include 14 | 15 | namespace ycsbc { 16 | 17 | template 18 | class Generator { 19 | public: 20 | virtual Value Next() = 0; 21 | virtual Value Last() = 0; 22 | virtual ~Generator() { } 23 | }; 24 | 25 | } // ycsbc 26 | 27 | #endif // YCSB_C_GENERATOR_H_ 28 | -------------------------------------------------------------------------------- /src/macro/kvstore/core/uniform_generator.h: -------------------------------------------------------------------------------- 1 | // 2 | // uniform_generator.h 3 | // YCSB-C 4 | // 5 | // Created by Jinglei Ren on 12/6/14. 6 | // Copyright (c) 2014 Jinglei Ren . 7 | // 8 | 9 | #ifndef YCSB_C_UNIFORM_GENERATOR_H_ 10 | #define YCSB_C_UNIFORM_GENERATOR_H_ 11 | 12 | #include "generator.h" 13 | #include 14 | 15 | namespace ycsbc { 16 | 17 | class UniformGenerator : public Generator { 18 | public: 19 | // Both min and max are inclusive 20 | UniformGenerator(uint64_t min, uint64_t max) : dist_(min, max) { Next(); } 21 | 22 | uint64_t Next() { return last_int_ = dist_(generator_); } 23 | uint64_t Last() { return last_int_; } 24 | 25 | private: 26 | uint64_t last_int_; 27 | std::mt19937_64 generator_; 28 | std::uniform_int_distribution dist_; 29 | }; 30 | 31 | } // ycsbc 32 | 33 | #endif // YCSB_C_UNIFORM_GENERATOR_H_ 34 | -------------------------------------------------------------------------------- /src/macro/kvstore/core/utils.cc: -------------------------------------------------------------------------------- 1 | #include "timer.h" 2 | 3 | namespace utils { 4 | 5 | void sleep(double t){ 6 | timespec req; 7 | req.tv_sec = (int) t; 8 | req.tv_nsec = (int64_t)(1e9 * (t - (int64_t)t)); 9 | nanosleep(&req, NULL); 10 | } 11 | 12 | long time_now(){ 13 | timespec ts; 14 | clock_gettime(CLOCK_REALTIME, &ts); 15 | return (ts.tv_sec*1000000000 + ts.tv_nsec); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/macro/kvstore/db/Makefile: -------------------------------------------------------------------------------- 1 | CC=g++ 2 | CFLAGS=-std=c++11 -c -g -Wall -fgnu-tm 3 | INCLUDES=-I../ 4 | SOURCES=$(wildcard *.cc) 5 | OBJECTS=$(SOURCES:.cc=.o) 6 | 7 | all: $(SOURCES) $(OBJECTS) 8 | 9 | .cc.o: 10 | $(CC) $(CFLAGS) $(INCLUDES) $< -o $@ 11 | 12 | clean: 13 | $(RM) $(OBJECTS) 14 | 15 | -------------------------------------------------------------------------------- /src/macro/kvstore/db/db_factory.h: -------------------------------------------------------------------------------- 1 | // 2 | // db.h 3 | // YCSB-C 4 | // 5 | // Created by Jinglei Ren on 12/18/14. 6 | // Copyright (c) 2014 Jinglei Ren . 7 | // 8 | 9 | #ifndef YCSB_C_DB_FACTORY_H_ 10 | #define YCSB_C_DB_FACTORY_H_ 11 | 12 | #include "core/db.h" 13 | #include "core/properties.h" 14 | 15 | namespace ycsbc { 16 | 17 | class DBFactory { 18 | public: 19 | static DB* CreateDB(utils::Properties &props); 20 | }; 21 | 22 | } // ycsbc 23 | 24 | #endif // YCSB_C_DB_FACTORY_H_ 25 | 26 | -------------------------------------------------------------------------------- /src/macro/kvstore/fabric-v1.4-node/env.sh: -------------------------------------------------------------------------------- 1 | export CORE_PEER_LOCALMSPID=Org1MSP 2 | export CORE_PEER_MSPCONFIGPATH=../../fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp 3 | export FABRIC_CFG_PATH=../../../../benchmark/fabric-v1.4/four-nodes-docker 4 | 5 | CHANNEL_NAME=rpcchannel 6 | ORDER_ADDR=localhost:7041 7 | PEER_ADDRS=( localhost:7051 localhost:6051 localhost:8051 localhost:9051) # Place anchor peer at head 8 | 9 | LANGUAGE=golang 10 | CC_VERSION=v1 11 | 12 | -------------------------------------------------------------------------------- /src/macro/kvstore/fabric-v1.4-node/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blockbench", 3 | "version": "0.1.0", 4 | "engines": { 5 | "node": ">=8.10.0", 6 | "npm": ">=5.6.0" 7 | }, 8 | "engine-strict": true, 9 | "engineStrict": true, 10 | "dependencies": { 11 | "fabric-ca-client": "1.4.4", 12 | "fabric-client": "1.4.4" 13 | }, 14 | "license": "Apache-2.0" 15 | } 16 | -------------------------------------------------------------------------------- /src/macro/kvstore/lib/mem_alloc.h: -------------------------------------------------------------------------------- 1 | // 2 | // mem_alloc.h 3 | // 4 | // Created by Jinglei Ren on 12/23/14. 5 | // Copyright (c) 2014 Jinglei Ren . 6 | // 7 | 8 | #ifndef VM_PERSISTENCE_MEM_ALLOC_H_ 9 | #define VM_PERSISTENCE_MEM_ALLOC_H_ 10 | 11 | #include 12 | 13 | struct MemAlloc { 14 | static void *Malloc(std::size_t size) { return malloc(size); } 15 | 16 | template 17 | static void Free(T *p, std::size_t size) { free((void *)p); } 18 | 19 | template 20 | static T *New(Arguments... args) { return new T(args...); } 21 | 22 | template 23 | static void Delete(T *p) { return delete p; } 24 | }; 25 | 26 | #endif // VM_PERSISTENCE_MEM_ALLOC_H_ 27 | 28 | -------------------------------------------------------------------------------- /src/macro/kvstore/workloads/workloada.spec: -------------------------------------------------------------------------------- 1 | # Yahoo! Cloud System Benchmark 2 | # Workload A: Update heavy workload 3 | # Application example: Session store recording recent actions 4 | # 5 | # Read/update ratio: 50/50 6 | # Default data size: 1 KB records (10 fields, 100 bytes each, plus key) 7 | # Request distribution: zipfian 8 | 9 | recordcount=1000000 10 | operationcount=10000 11 | workload=ycsb 12 | 13 | readallfields=true 14 | 15 | readproportion=0 16 | updateproportion=1 17 | scanproportion=0 18 | insertproportion=0 19 | 20 | requestdistribution=zipfian 21 | 22 | -------------------------------------------------------------------------------- /src/macro/kvstore/workloads/workloadb.spec: -------------------------------------------------------------------------------- 1 | # Yahoo! Cloud System Benchmark 2 | # Workload B: Read mostly workload 3 | # Application example: photo tagging; add a tag is an update, but most operations are to read tags 4 | # 5 | # Read/update ratio: 95/5 6 | # Default data size: 1 KB records (10 fields, 100 bytes each, plus key) 7 | # Request distribution: zipfian 8 | 9 | recordcount=10000 10 | operationcount=10000 11 | workload=ycsb 12 | 13 | readallfields=true 14 | 15 | readproportion=0.95 16 | updateproportion=0.05 17 | scanproportion=0 18 | insertproportion=0 19 | 20 | requestdistribution=zipfian 21 | 22 | -------------------------------------------------------------------------------- /src/macro/kvstore/workloads/workloadc.spec: -------------------------------------------------------------------------------- 1 | # Yahoo! Cloud System Benchmark 2 | # Workload C: Read only 3 | # Application example: user profile cache, where profiles are constructed elsewhere (e.g., Hadoop) 4 | # 5 | # Read/update ratio: 100/0 6 | # Default data size: 1 KB records (10 fields, 100 bytes each, plus key) 7 | # Request distribution: zipfian 8 | 9 | recordcount=10000 10 | operationcount=10000 11 | workload=ycsb 12 | 13 | readallfields=true 14 | 15 | readproportion=0 16 | updateproportion=1 17 | scanproportion=0 18 | insertproportion=0 19 | 20 | requestdistribution=zipfian 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/macro/kvstore/workloads/workloadd.spec: -------------------------------------------------------------------------------- 1 | # Yahoo! Cloud System Benchmark 2 | # Workload D: Read latest workload 3 | # Application example: user status updates; people want to read the latest 4 | # 5 | # Read/update/insert ratio: 95/0/5 6 | # Default data size: 1 KB records (10 fields, 100 bytes each, plus key) 7 | # Request distribution: latest 8 | 9 | # The insert order for this is hashed, not ordered. The "latest" items may be 10 | # scattered around the keyspace if they are keyed by userid.timestamp. A workload 11 | # which orders items purely by time, and demands the latest, is very different than 12 | # workload here (which we believe is more typical of how people build systems.) 13 | 14 | recordcount=10000 15 | operationcount=10000 16 | workload=ycsb 17 | 18 | readallfields=true 19 | 20 | readproportion=0.95 21 | updateproportion=0 22 | scanproportion=0 23 | insertproportion=0.05 24 | 25 | requestdistribution=latest 26 | 27 | -------------------------------------------------------------------------------- /src/macro/smallbank/Makefile: -------------------------------------------------------------------------------- 1 | CC=g++ 2 | CFLAGS=-std=c++11 -g -Wall -pthread -I./ 3 | # for some unknown reason, I (RPC) need to link boost_system even though I never use it. Weird! 4 | # LDFLAGS= -lpthread -lrestclient-cpp -lboost_system 5 | LDFLAGS= -lpthread -lrestclient-cpp 6 | SUBDIRS=api_adapters utils 7 | OBJECTS=api_adapters/SmallBank.o api_adapters/EVMDB.o api_adapters/Fabric.o utils/timer.o api_adapters/FabricV2.o 8 | EXEC=driver 9 | 10 | all: $(SUBDIRS) $(EXEC) 11 | 12 | $(SUBDIRS): 13 | $(MAKE) -C $@ 14 | 15 | $(EXEC): $(wildcard *.cc) 16 | $(CC) $(CFLAGS) $< $(OBJECTS) $(LDFLAGS) -o $@ 17 | 18 | clean: 19 | for dir in $(SUBDIRS); do \ 20 | $(MAKE) -C $$dir $@; \ 21 | done 22 | $(RM) $(EXEC) 23 | 24 | .PHONY: $(SUBDIRS) $(EXEC) 25 | -------------------------------------------------------------------------------- /src/macro/smallbank/api_adapters/Makefile: -------------------------------------------------------------------------------- 1 | CC=g++ 2 | CFLAGS=-std=c++11 -c -g -Wall -I../ 3 | LDFLAGS= -lpthread -lrestclient-cpp 4 | SOURCES=$(wildcard *.cc) 5 | OBJECTS=$(SOURCES:.cc=.o) 6 | 7 | all: $(SOURCES) $(OBJECTS) 8 | 9 | .cc.o: 10 | $(CC) $(CFLAGS) $< -o $@ 11 | 12 | clean: 13 | $(RM) *.o 14 | -------------------------------------------------------------------------------- /src/macro/smallbank/api_adapters/fabric-v1.4-node/env.sh: -------------------------------------------------------------------------------- 1 | export CORE_PEER_LOCALMSPID=Org1MSP 2 | export CORE_PEER_MSPCONFIGPATH=../../fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp 3 | export FABRIC_CFG_PATH=../../../../../benchmark/fabric-v1.4/four-nodes-docker 4 | 5 | CHANNEL_NAME=rpcchannel 6 | ORDER_ADDR=localhost:7041 7 | PEER_ADDRS=( localhost:7051 localhost:6051 localhost:8051 localhost:9051) # Place anchor peer at head 8 | 9 | LANGUAGE=golang 10 | CC_SRC_PATH=../../../../../benchmark/contracts/fabric-v1.4/smallbank 11 | CC_NAME=smallbank 12 | CC_VERSION=v1 13 | 14 | -------------------------------------------------------------------------------- /src/macro/smallbank/api_adapters/fabric-v1.4-node/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blockbench", 3 | "version": "0.1.0", 4 | "engines": { 5 | "node": ">=8.10.0", 6 | "npm": ">=5.6.0" 7 | }, 8 | "engine-strict": true, 9 | "engineStrict": true, 10 | "dependencies": { 11 | "fabric-ca-client": "1.4.4", 12 | "fabric-client": "1.4.4" 13 | }, 14 | "license": "Apache-2.0" 15 | } 16 | -------------------------------------------------------------------------------- /src/macro/smallbank/stat.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ooibc88/blockbench/147462732712624710fbfdf2cc5eb01cb6b7ad84/src/macro/smallbank/stat.txt -------------------------------------------------------------------------------- /src/macro/smallbank/utils/Makefile: -------------------------------------------------------------------------------- 1 | CC=g++ 2 | CFLAGS=-std=c++11 -c -g -Wall -I../ 3 | LDFLAGS= -lpthread -lrestclient-cpp 4 | SOURCES=$(wildcard *.cc) 5 | OBJECTS=$(SOURCES:.cc=.o) 6 | 7 | all: $(SOURCES) $(OBJECTS) 8 | 9 | .cc.o: 10 | $(CC) $(CFLAGS) $< -o $@ 11 | 12 | clean: 13 | $(RM) *.o 14 | -------------------------------------------------------------------------------- /src/macro/smallbank/utils/generators.h: -------------------------------------------------------------------------------- 1 | #ifndef SMARTCONTRACT_DRIVER_UTILS_GENERATORS_H_ 2 | #define SMARTCONTRACT_DRIVER_UTILS_GENERATORS_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | template 9 | class Generator { 10 | public: 11 | virtual Value Next() = 0; 12 | virtual Value Last() = 0; 13 | virtual ~Generator() {} 14 | }; 15 | 16 | class UniformGenerator : public Generator { 17 | public: 18 | // Both min and max are inclusive 19 | UniformGenerator(uint64_t min, uint64_t max) : dist_(min, max) { Next(); } 20 | 21 | uint64_t Next() { return last_int_ = dist_(generator_); } 22 | uint64_t Last() { return last_int_; } 23 | 24 | private: 25 | uint64_t last_int_; 26 | std::mt19937_64 generator_; 27 | std::uniform_int_distribution dist_; 28 | }; 29 | 30 | #endif // SMARTCONTRACT_DRIVERS_GENERATORS_H_ 31 | -------------------------------------------------------------------------------- /src/macro/smallbank/utils/spinlock.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef OLTP_C_SPINLOCK_H_ 3 | #define OLTP_C_SPINLOCK_H_ 4 | 5 | #include 6 | 7 | class SpinLock { 8 | std::atomic_flag locked = ATOMIC_FLAG_INIT; 9 | 10 | public: 11 | void lock() { 12 | while (locked.test_and_set(std::memory_order_acquire)) { 13 | ; 14 | } 15 | } 16 | void unlock() { locked.clear(std::memory_order_release); } 17 | }; 18 | #endif // OLTP_C_UTILS_H_ -------------------------------------------------------------------------------- /src/macro/smallbank/utils/timer.cc: -------------------------------------------------------------------------------- 1 | #include "timer.h" 2 | void sleep(double t){ 3 | timespec req; 4 | req.tv_sec = (int) t; 5 | req.tv_nsec = (int64_t)(1e9 * (t - (int64_t)t)); 6 | nanosleep(&req, NULL); 7 | } 8 | 9 | long time_now(){ 10 | timespec ts; 11 | clock_gettime(CLOCK_REALTIME, &ts); 12 | return (ts.tv_sec*1000000000 + ts.tv_nsec); 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/micro/analytic/fabric-v1.4/README.md: -------------------------------------------------------------------------------- 1 | # Prepare 2 | Download `peer` executable and make it accessible from `$PATH` 3 | Spin up the [fabric network](../../../../benchmark/fabric-v1.4/four-nodes-docker/) 4 | 5 | # Run 6 | ## Deploy 7 | * use `./deploy.sh` to deploy the Analytic smart contract to blockchain. 8 | 9 | ## Install NodeJS SDK 10 | `npm install` 11 | 12 | ## Populate Transactions 13 | `node populate.js <#-of-accounts> <#-of-txns>` 14 | If `#-of-accounts=100`, 100 acounts named with *Acc0*, *Acc1*, ..., *Acc99* are created. 15 | 16 | ## Query Block Height 17 | `node query_blk_height.js ` 18 | 19 | ## Benchmark Q1 20 | `node bench_q1.js ` 21 | 22 | ## Benchmark Q2 23 | `node bench_q2.js ` 24 | -------------------------------------------------------------------------------- /src/micro/analytic/fabric-v1.4/env.sh: -------------------------------------------------------------------------------- 1 | export CORE_PEER_LOCALMSPID=Org1MSP 2 | export CORE_PEER_MSPCONFIGPATH=../../fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp 3 | export FABRIC_CFG_PATH=../../../../benchmark/fabric-v1.4/four-nodes-docker 4 | 5 | CHANNEL_NAME=rpcchannel 6 | ORDER_ADDR=localhost:7041 7 | PEER_ADDRS=( localhost:7051 localhost:6051 localhost:8051 localhost:9051) # Place anchor peer at head 8 | 9 | LANGUAGE=golang 10 | CC_SRC_PATH=../../../../benchmark/contracts/fabric-v1.4/analytic 11 | CC_NAME=analytic 12 | CC_VERSION=v1 13 | 14 | -------------------------------------------------------------------------------- /src/micro/analytic/fabric-v1.4/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blockbench", 3 | "version": "0.1.0", 4 | "engines": { 5 | "node": ">=8.10.0", 6 | "npm": ">=5.6.0" 7 | }, 8 | "engine-strict": true, 9 | "engineStrict": true, 10 | "dependencies": { 11 | "fabric-ca-client": "1.4.4", 12 | "fabric-client": "1.4.4" 13 | }, 14 | "license": "Apache-2.0" 15 | } 16 | -------------------------------------------------------------------------------- /src/micro/analytic/hyperledger/README.md: -------------------------------------------------------------------------------- 1 | # Experiment Setup 2 | 3 | Need to deploy the analytics chaincode & populate the blockchain system using some pre-generated transactions before the analytical queries. 4 | The source code of analytics chaincode is in `blockbench/benchmark/contracts/hyperledger/go/analytic/` directory. 5 | 6 | 1. use `node deploy.js account_number` to initialize the chaincode into Hyperledger. `account_number` indicates how many initial accounts 7 | are created in the state of this chaincode. 8 | 9 | 2. use `node populate.js block_number` to populate the chaincode state for `block_number` of blocks. This script will generate transactions 10 | using random accounts. 11 | 12 | # Run 13 | 14 | * Q1: `node bench_q1.js start_block end_block` queries Q1 from block `start_block` to block `end_block`. 15 | 16 | * Q2: `node bench_q2.js account start_block end_block` queries Q2 for account `account` from block `start_block` to block `end_block`. `account` is an integer. 17 | -------------------------------------------------------------------------------- /src/micro/cpuheavy/README.md: -------------------------------------------------------------------------------- 1 | # Micro Benchmark Workload - CPUHeavy 2 | ## Description 3 | This workload measures the efficiency of the execution layer for computationally heavy tasks. 4 | The smart contract initializes a large array, and runs the quick sort algorithm over it. 5 | 6 | To see more details, please refer to the README file in each individual directory for each system. 7 | 8 | ## Details 9 | 10 | + [ethereum/parity](ethereum/README.md) CPUHeavy driver 11 | + [hyperledger v0.6](hyperledger/README.md) CPUHeavy driver 12 | + [hyperledger fabric v1.4](fabric-v1.4/README.md) CPUHeavy driver 13 | + [hyperledger fabric v2.2](fabric-v2.2/README.md) CPUHeavy driver 14 | -------------------------------------------------------------------------------- /src/micro/cpuheavy/ethereum/README.md: -------------------------------------------------------------------------------- 1 | # Prepare 2 | At first, use `npm start` or [start_ethereum.sh](../../ethereum_script/start_ethereum.sh) to start geth client, then open another terminal to do next step 3 | 4 | # Run 5 | * use `node deploy.js array_size` to deploy the sorting smart contract to blockchain, and also issue a sort request. It will report the latency into `stdout`. 6 | `array_size` is the size of the array to sort. 7 | -------------------------------------------------------------------------------- /src/micro/cpuheavy/fabric-v1.4/README.md: -------------------------------------------------------------------------------- 1 | # Prepare 2 | Download `peer` executable and make it accessible from `$PATH` 3 | Spin up the [fabric network](../../../../benchmark/fabric-v1.4/four-nodes-docker/) 4 | 5 | # Run 6 | * use `./deploy.sh` to deploy the sorting smart contract to blockchain. 7 | * use `./benchmark.sh ` to measure the duration. `array_size` is the size of the array to sort. 8 | -------------------------------------------------------------------------------- /src/micro/cpuheavy/fabric-v1.4/benchmark.sh: -------------------------------------------------------------------------------- 1 | if [ "$#" -ne 1 ]; then 2 | echo "Illegal number of parameters" 3 | echo "Should be ./benchmark.sh <# of elements to sort>" 4 | exit 1 5 | fi 6 | 7 | cwd=$(pwd) 8 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 9 | cd $DIR # Enter into the script directory 10 | 11 | . env.sh 12 | 13 | export CORE_PEER_ADDRESS=${PEER_ADDRS[0]} 14 | time peer chaincode query -C $CHANNEL_NAME -n ${CC_NAME} -c "{\"Args\":[\"sort\",\"$1\"]}" >&log.txt 15 | 16 | cd $cwd -------------------------------------------------------------------------------- /src/micro/cpuheavy/fabric-v1.4/env.sh: -------------------------------------------------------------------------------- 1 | export CORE_PEER_LOCALMSPID=Org1MSP 2 | export CORE_PEER_MSPCONFIGPATH=../../fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp 3 | export FABRIC_CFG_PATH=../../../../benchmark/fabric-v1.4/four-nodes-docker 4 | 5 | CHANNEL_NAME=rpcchannel 6 | ORDER_ADDR=localhost:7041 7 | PEER_ADDRS=( localhost:7051 localhost:6051 localhost:8051 localhost:9051) # Place anchor peer at head 8 | 9 | LANGUAGE=golang 10 | CC_SRC_PATH=../../../../benchmark/contracts/fabric-v1.4/sorter 11 | CC_NAME=sorter 12 | CC_VERSION=1.0 13 | 14 | -------------------------------------------------------------------------------- /src/micro/cpuheavy/fabric-v1.4/log.txt: -------------------------------------------------------------------------------- 1 | 2020-03-18 16:45:00.441 +08 [main] InitCmd -> WARN 001 CORE_LOGGING_LEVEL is no longer supported, please use the FABRIC_LOGGING_SPEC environment variable 2 | 2020-03-18 16:45:00.445 +08 [main] SetOrdererEnv -> WARN 002 CORE_LOGGING_LEVEL is no longer supported, please use the FABRIC_LOGGING_SPEC environment variable 3 | 2020-03-18 16:45:00.449 +08 [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc 4 | 2020-03-18 16:45:00.449 +08 [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc 5 | -------------------------------------------------------------------------------- /src/micro/cpuheavy/fabric-v2.2/README.md: -------------------------------------------------------------------------------- 1 | # Prepare 2 | * Spin up the network, create the channel, deploy the contract and launch the helper web services, as in [README](../../../../benchmark/fabric-v2.2/README.md) with the following two bash **variables** `CC_NAME=sorter MODE=closed_loop`. 3 | 4 | 5 | # Run 6 | ``` 7 | curl "http:///query?function=Compute&args=" 8 | ``` 9 | 10 | The transaction service will return the execution delay in millisecond. 11 | -------------------------------------------------------------------------------- /src/micro/cpuheavy/hyperledger/README.md: -------------------------------------------------------------------------------- 1 | # Experiment Setup 2 | 3 | Need to deploy the CPUHeavy chaincode at first. 4 | The source code of CPUHeavy chaincode is in `blockbench/benchmark/contracts/hyperledger/go/sorter/` directory as a reference. 5 | 6 | * use `node deploy.js` to initialize the chaincode into Hyperledger. 7 | 8 | # Run 9 | 10 | * use `node invoke.js array_size` to issue a sort request to Hyperledger, `array_size` is the size of the array to sort. 11 | -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/0x12f029d57082315085bfb4d4d8345c92c5cdd881: -------------------------------------------------------------------------------- 1 | {"address":"12f029d57082315085bfb4d4d8345c92c5cdd881","crypto":{"cipher":"aes-128-ctr","ciphertext":"90296b972191695a1428162cb83f03b36af73fd8ed64a92ea3d94b6f1434ea56","cipherparams":{"iv":"91beb3e383b9a483723011aadb836961"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"85ebfdc2643797e3edacd39f6a1d6b5b354de331d16c28a0b3b6b7716259f753"},"mac":"78de9f6fba7665894a7663219eb75d7db875f1db21820b4ce65a4a064032dffb"},"id":"0056eb2c-de5c-4fb1-b1f5-1517574a78ce","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/0x5e6c130dcc56495f22842c1853b18a9bed464033: -------------------------------------------------------------------------------- 1 | {"address":"5e6c130dcc56495f22842c1853b18a9bed464033","crypto":{"cipher":"aes-128-ctr","ciphertext":"b467d0a7dfbb9fad2de2e7ccd856f30765ce2634fbe2064b6c9a0a7e40e5ecaa","cipherparams":{"iv":"702d61bf0bcaa13949ec7e80f95a2f9b"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"dfd3ad0d4a2a072afee18e543d3c48530eeab194bb748c5bb52708aa95dd0564"},"mac":"000ae5a2e7e1d9f6b1a7f5f8c4d558866a7f465416f7652e2b4e246459394ac3"},"id":"8828c34c-7a88-463b-bbea-de079bb996ed","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/0x5ee89873ac0081ec1227bb5cec31508c761cb8be: -------------------------------------------------------------------------------- 1 | {"address":"5ee89873ac0081ec1227bb5cec31508c761cb8be","crypto":{"cipher":"aes-128-ctr","ciphertext":"76b5b902dbd8cab417cc4f3f960085d86790c63a31822d5ccc6d355c05973b4c","cipherparams":{"iv":"fe5198453fc5186aeae0664dbd0b1b57"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"4f1fefacf4ec038abe751633ec26d27b897f23b827162ddd5f94a65bd781a530"},"mac":"2063876474c87543ec79be6c500837f3132ca8365c7f4891bacddd1cc7068a04"},"id":"6608928c-4eca-4f94-b9e3-1a5ba60754b7","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/0x88c65c5ca67b70a75d62bf6e160d2b0c21fff246: -------------------------------------------------------------------------------- 1 | {"address":"88c65c5ca67b70a75d62bf6e160d2b0c21fff246","crypto":{"cipher":"aes-128-ctr","ciphertext":"93b04498ea56407c3cd75e03f3738482ab272d8770ca39ae442643051474cb4d","cipherparams":{"iv":"46ac50190f741f83e21fd954b83c4577"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"ae281fdd525b3610c07e8f9d1e188408014efde705901906de735917dd89260c"},"mac":"262a1146aff04c755791a92b2e3b1054f2f1ad44d5858e83890fb97affbbbf82"},"id":"4adfb9a7-6e4b-4250-a057-572a16e04829","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/UTC--2017-12-06T06-40-22.889936405Z--ef900bbbaae5a961677568b85df30b291cd8f553: -------------------------------------------------------------------------------- 1 | {"address":"ef900bbbaae5a961677568b85df30b291cd8f553","crypto":{"cipher":"aes-128-ctr","ciphertext":"c4d42cd6bc92298c3511c81d17b7d0385648fe431f7da196531f81a28923c84e","cipherparams":{"iv":"351ece3e33d71db967fc266089495e37"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"4c280cfbc1f937fa50016ca3e0a08716a3e38529f9c7afb19b203283a80be871"},"mac":"b152d5b7777e7e9061cb4e0582d17407ba7ac13082fcbe54a9afd37f2fe31e8b"},"id":"abcc8404-9f1b-4ab1-afd2-c372bb8813ad","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/UTC--2017-12-06T06-40-29.433668815Z--459c956fceee8d04fc770b01f9a640fff5c0b622: -------------------------------------------------------------------------------- 1 | {"address":"459c956fceee8d04fc770b01f9a640fff5c0b622","crypto":{"cipher":"aes-128-ctr","ciphertext":"599696007eeeeec1e2e01b36c0244a56cf339bcf18e943cd533b4c7ff8a2598e","cipherparams":{"iv":"687f1bf21c36367ce0cf0fdf265cea6d"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"825655b7e3160152ebd2af1d27d3c4ab69e9201b1061a85200a539f46aaec7f8"},"mac":"d1cb51b80da9b1b22950339c06fec37241fe3bff8598fba983a65bfe80c4b3e3"},"id":"a946a54c-0ef5-4cb2-9587-e2439e33ed7c","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/UTC--2017-12-06T06-40-32.169431768Z--d5214baf93444abda6c3e291099764cb5d65b006: -------------------------------------------------------------------------------- 1 | {"address":"d5214baf93444abda6c3e291099764cb5d65b006","crypto":{"cipher":"aes-128-ctr","ciphertext":"102ea30658f8145d7d3f67e022ec5f99f620c3dc80757cc1e2d861b3882ecd31","cipherparams":{"iv":"0c4e12dd10a34f063558ce84a7d87976"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"a5559051f64ba71d79a81812bd7133b910229f3031d99f475c06025529e6da29"},"mac":"3fca752d9ecb6842183fa25e502810b19b601ff2565f3b6bbd0915f3b6e41d4c"},"id":"f780e266-7c37-4807-8ca2-68027947b84e","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/UTC--2017-12-06T06-40-33.530746290Z--887a5bb2ee499e3b452bd8385d57c7c4cbfbcfbb: -------------------------------------------------------------------------------- 1 | {"address":"887a5bb2ee499e3b452bd8385d57c7c4cbfbcfbb","crypto":{"cipher":"aes-128-ctr","ciphertext":"5f0d8c80adfff414d7fe6de057d2d125d2dde0fade78b938b96446a0a117a64d","cipherparams":{"iv":"63721560cc3bfea6533186813590425f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"ed5d78049224c862c89322d4224b03cf038af2854dbbb857842b8f2adefc6c4d"},"mac":"1c415a275cecdc962b93cf95a618952546ee05a3a113c4b36f912548921a5827"},"id":"d4f96d61-ace1-4e19-a54f-7843cbcd9ae2","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/UTC--2017-12-06T06-40-34.762958944Z--5defa977d0702be63ffdbae8a876bba889c0e0aa: -------------------------------------------------------------------------------- 1 | {"address":"5defa977d0702be63ffdbae8a876bba889c0e0aa","crypto":{"cipher":"aes-128-ctr","ciphertext":"1cce7c189c90a64b8300eac1837e0212be51c12758ea859b2fccd6df9d29f47f","cipherparams":{"iv":"69bc9ad7537d74b81d774e7925dfb468"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"250eeb395ca0d8e943f8a4fdfcdf3d558154722b635c7a7e0ac9678d1b1a0466"},"mac":"2c6826a4486371fcbead2ebe749cea385b7e906ae4c9e518d3085bbb95881d60"},"id":"01ef5699-7f64-4424-9e8c-14a638f5e9a6","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/key/UTC--2017-12-06T06-40-36.090178163Z--1434974002bae55e91ae50cafde3fc8c92aec746: -------------------------------------------------------------------------------- 1 | {"address":"1434974002bae55e91ae50cafde3fc8c92aec746","crypto":{"cipher":"aes-128-ctr","ciphertext":"2ede017c8c4c59d7f0ccbc6d7a8fd487f00a40bb4ba8ba4bcf93a8a9b57f2368","cipherparams":{"iv":"68c74cca697498422d7ec4bfc1ee0935"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"bf838fd8b7cba88c521c06466fb6c9b1d0d90917fe538eb15eb16b5c15580da4"},"mac":"cf1d05356a8935b8e0b79d858394af9de82de70d16749840387e8cfd8f296370"},"id":"679a6fb6-d0d3-4413-9f4d-03f9496e23a9","version":3} -------------------------------------------------------------------------------- /src/micro/ethereum_script/start_ethereum.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | GETH="geth" 3 | ETH_DATA=`dirname ${BASH_SOURCE-$0}`/../data 4 | cd `dirname ${BASH_SOURCE-$0}` 5 | pwd 6 | 7 | killall geth 8 | 9 | rm -rf $ETH_DATA/{geth,keystore} 10 | mkdir -p $ETH_DATA/keystore 11 | cp ./key/* $ETH_DATA/keystore 12 | 13 | # miner threads 14 | NM=1 15 | if [ $# -gt 0 ]; then 16 | NM=$1 17 | fi 18 | echo "Starting geth with $NM miner threads" 19 | 20 | # ------------private chain(10 accounts)------------ 21 | # geth 1.4.18 uses --minerthreads 22 | # geth 1.8.15 uses --miner.threads 23 | 24 | $GETH --datadir=$ETH_DATA init genesis.json 25 | $GETH --datadir=$ETH_DATA --nodiscover --rpcapi="db,eth,net,web3,personal,web3" --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" --gasprice 0 --maxpeers 32 --networkid 9119 --unlock "0x12f029d57082315085bfb4d4d8345c92c5cdd881" --password <(echo -n "") --mine --minerthreads $NM > /dev/null 2>&1 & 26 | -------------------------------------------------------------------------------- /src/micro/ioheavy/README.md: -------------------------------------------------------------------------------- 1 | # Micro Benchmark Workload - IOHeavy 2 | ## Description 3 | This workload is designed to evaluate the IO performance by invoking a contract that performs 4 | a large number of writes and reads to contract's states. 5 | 6 | In this workload, we used 20-byte keys and 100-byte values for the key-value pairs. 7 | 8 | To see more details, please refer to the README file in each individual directory for each system. 9 | 10 | ## Details 11 | 12 | + [ethereum/parity](ethereum/README.md) IOHeavy driver 13 | + [hyperledger-fabric v0.6](hyperledger/README.md) IOHeavy driver 14 | + [hyperledger fabric v1.4](fabric-v1.4/README.md) IOHeavy driver 15 | + [hyperledger fabric v2.2](fabric-v2.2/README.md) IOHeavy driver 16 | -------------------------------------------------------------------------------- /src/micro/ioheavy/fabric-v1.4/README.md: -------------------------------------------------------------------------------- 1 | # Prepare 2 | Download `peer` executable and make it accessible from `$PATH` 3 | Spin up the [fabric network](../../../../benchmark/fabric-v1.4/four-nodes-docker/) 4 | 5 | # Run 6 | * use `./deploy.sh` to deploy the IOheavy smart contract to blockchain. 7 | * use `./write.sh <# of records>` to measure the duration of batch writing. Both fields must be numeric. 8 | * use `./scan.sh <# of records>` to measure the duration of scanning. Both fields must be numeric. 9 | -------------------------------------------------------------------------------- /src/micro/ioheavy/fabric-v1.4/env.sh: -------------------------------------------------------------------------------- 1 | export CORE_PEER_LOCALMSPID=Org1MSP 2 | export CORE_PEER_MSPCONFIGPATH=../../fabric-v1.4/four-nodes-docker/crypto_config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp 3 | export FABRIC_CFG_PATH=../../../../benchmark/fabric-v1.4/four-nodes-docker 4 | 5 | CHANNEL_NAME=rpcchannel 6 | ORDER_ADDR=localhost:7041 7 | PEER_ADDRS=( localhost:7051 localhost:6051 localhost:8051 localhost:9051) # Place anchor peer at head 8 | 9 | LANGUAGE=golang 10 | CC_SRC_PATH=../../../../benchmark/contracts/fabric-v1.4/ioheavy 11 | CC_NAME=ioheavy 12 | CC_VERSION=v1 13 | 14 | -------------------------------------------------------------------------------- /src/micro/ioheavy/fabric-v1.4/scan.sh: -------------------------------------------------------------------------------- 1 | if [ "$#" -ne 2 ]; then 2 | echo "Illegal number of parameters" 3 | echo "Should be ./write.sh " 4 | exit 1 5 | fi 6 | 7 | cwd=$(pwd) 8 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 9 | cd $DIR # Enter into the script directory 10 | 11 | . env.sh 12 | 13 | export CORE_PEER_ADDRESS=${PEER_ADDRS[0]} 14 | time peer chaincode query -C $CHANNEL_NAME -n ${CC_NAME} -c "{\"Args\":[\"scan\",\"$1\", \"$2\"]}" >&log.txt 15 | 16 | cd $cwd -------------------------------------------------------------------------------- /src/micro/ioheavy/fabric-v1.4/write.sh: -------------------------------------------------------------------------------- 1 | if [ "$#" -ne 2 ]; then 2 | echo "Illegal number of parameters" 3 | echo "Should be ./write.sh " 4 | exit 1 5 | fi 6 | 7 | cwd=$(pwd) 8 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 9 | cd $DIR # Enter into the script directory 10 | 11 | . env.sh 12 | 13 | export CORE_PEER_ADDRESS=${PEER_ADDRS[0]} 14 | time peer chaincode invoke -o ${ORDER_ADDR} -C $CHANNEL_NAME -n ${CC_NAME} -c "{\"Args\":[\"write\",\"$1\", \"$2\"]}" >&log.txt 15 | 16 | cd $cwd -------------------------------------------------------------------------------- /src/micro/ioheavy/fabric-v2.2/README.md: -------------------------------------------------------------------------------- 1 | # Prepare 2 | * Spin up the network, create the channel, deploy the contract and launch the helper web services, as in [README](../../../../benchmark/fabric-v2.2/README.md) with the following two bash **variables** `CC_NAME=ioheavy MODE=closed_loop`. 3 | 4 | 5 | # Run 6 | ## Batch Writing 7 | ``` 8 | curl --header "Content-Type: application/json" \ 9 | --request POST \ 10 | --data '{"function":"Write","args":["", "<#_of_records>"]}' \ 11 | http:///invoke 12 | ``` 13 | 14 | ## Scanning 15 | ``` 16 | curl "http:///query?function=Scan&args=,<#_of_records>" 17 | ``` 18 | 19 | `` and `<#_of_records>` must be numeric. 20 | The transaction service will return the execution delay in millisecond. 21 | -------------------------------------------------------------------------------- /src/micro/ioheavy/hyperledger/README.md: -------------------------------------------------------------------------------- 1 | # Experiment Setup 2 | 3 | Need to deploy the ioheavy chaincode. 4 | The source code of ioheavy chaincode is in `blockbench/benchmark/contracts/hyperledger/go/io/` directory as a reference. 5 | 6 | 1. use `node deploy.js` to initialize the chaincode into Hyperledger. 7 | 8 | # Run 9 | 10 | * Write: `node write.js start_key total_key_num` write `total_key_num` key-value pairs starting with key `start_key` sequentially. 11 | * Scan: `node scan.js star_key total_key_num` scan `total_key_num` key-value pairs starting with key `start_key` sequentially. 12 | -------------------------------------------------------------------------------- /src/micro/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BLOCKBENCH", 3 | "version": "1.0.0", 4 | "description": "A Framework for Analyzing Private Blockchains.", 5 | "main": "", 6 | "scripts": { 7 | "start": "./ethereum_script/start_ethereum.sh" 8 | }, 9 | "keywords": [ 10 | "ethereum", 11 | "hyperledger", 12 | "benchmark" 13 | ], 14 | "author": "", 15 | "license": "Apache-2.0", 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/ooibc88/blockbench.git" 19 | }, 20 | "devDependencies": {}, 21 | "dependencies": { 22 | "bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git", 23 | "web3": "git+https://github.com/ethereum/web3.js.git", 24 | "zipfian": "git+https://github.com/willscott/zipfian.git" 25 | } 26 | } 27 | --------------------------------------------------------------------------------