## 6 Performance Analysis
### Experiment Setup and Methodology  
**Hyperledger Fabric Platform. ** To implement our proposed scheme, we leveraged the IBM Cloud infrastructure to host the required hardware. According to the Hyperledger Documentation, this private blockchain is \"an open source enterprise-grade permissioned distributed ledger technology (DLT) platform\" [20]. This means that a level of trust is required within the network, removing anonymity between nodes, but ensuring only authorized nodes are added to the blockchain. The permissioned nature of the Hyperledger Fabric sets it up as a great tool for companies to utilize internally, without the fear of outside manipulation. In addition, Hyperledger Fabric is a cryptocurrency free blockchain, eliminating some major risk and attack incentives. In order to host our private blockchain network, we first deployed a free Kubernetes cluster consisting of 2 vCPUs with a total of 4 GB of RAM using the IBM Kubernetes Service [39]. On this cluster, we linked an instance of the IBM Blockchain Platform service. This established the environment in which we set up our private Hyperledger Fabric blockchain. Utilizing Fabric version 2, we have established an Endorser peer, a single orderer, and two committer peers. These nodes all share a common channel, on which we instantiated our developed smart contract. Hyperledger is built to be highly configurable through its modular design and use of smart contracts. Hyperledger's smart contracts, or chaincode as they refer to it, drive the functionality of the blockchain. The chaincode acts as the logic for the blockchain, meaning this is the fundamental aspect of our proposed solution. While many blockchains require their smart contracts to be written in domain-specific languages, Hyperledger allows smart contracts to be written in general-purpose programming languages like Java, Go, and  
Figure 3: Our considered blockchain network design. In (1), Endorser simulates the transaction from the proposal. In (2), Orderer writes block from the transaction. In (3), Committers validate blocks and append them to the ledger. (Author’s own processing). Node.js. Our developed smart contract is written in Go. In addition, Hyperledger Fabric introduces a new architecture for transactions in which transactions are executed before they are ordered, dramatically reducing the time necessary per transaction. The new execute-order-validate approach first executes a transaction, checking its correctness. Then, an orderer submits the transaction to the rest of the blockchain via a consensus protocol. Finally, a validator validates the transaction. This three-step process allows for multiple peers to execute their transactions before they are committed to the ledger, allowing for theoretically more transactions per second with less cpu usage than other blockchains [40]. Our smart contract defines four objects: an election, a ballot, a voter, and a votable Item. These four objects not only store the data necessary to host an election, but also interact with each other to form the base of our election functionality. Our contract class extends the Hyperledger Fabric base Contract class, allowing for easy import and initialization onto the endorser peer. Our contract class utilizes our four custom attributes to allow users to register to vote, cast votes, and query the election results. To instantiate the smart contract, we utilized the IBM Blockchain web console to propose our chaincode. Then, once each node in the channel signed the proposal, our developed smart contract took effect. **Hyperledger Caliper Setup. ** We leveraged Hyperledger Caliper version 2.0 to stress test and collect performance metrics on our scheme. Caliper is a blockchain benchmark framework that implements custom-defined use cases to produce performance reports. As seen in Figure 4, Caliper utilizes workers to generate and serve transactions to a blockchain network.