Author: Alex Binesh
Shyft is a protocol that leverages blockchain technology to enable users to obtain, store, and work with data and identity quickly and securely.
What is Anti-Censorship:
Censorship is defined as lack of availability, malicious or not, of a validator/transaction node within the Shyft Blockchain to send pre-signed transactions to the Shyft blockchain’s memory pool and then onto Shyft Bridge Node for bookkeeping purposes. As the Shyft blockchain has KYC (Know Your Customer)/AML(Anti Money Laundering) features and indeed specializes in such, the Anti-Censorship feature is required in order to prevent against personally-targeted censorship schemes by Shyft Ring nodes that happen to have misaligned incentives with the network as a whole.
The primary innovation of this Anti-Censorship is the mechanism whereupon the user’s wallet software connects to a distributed network (the Shyft Ring validation/transaction nodes), with the aim of prevention and detection of censorship.
Basically good (non-censoring) node behavior is rewarded using Shyft’s RMT (Reputational Merit Tokens). Conversely, it is hard to say why a node doesn’t send transactions to the memory pool, as there could be network outages, server failures, etc. that prevent the nodes behaving properly, or outright deliberate censorship.
- Wallet API is the Middleware between a thin client Wallet App and the Shyft Ring Nodes.
- Wallet APP is the thin client Shyft wallet used for Crypto asset transfer and executing Shyft contracts.
- Shyft Ring: It is a set of validators (Including Transaction Nodes) for the ethereum-virtual-machine ( “EVM” ) compatible runtime of the Shyft network. These validators confirm the operations within each block of the Shyft blockchain. This operates identically to the Ethereum blockchain, on which the Shyft blockchain is based.
- Flight Deck: Deploys Shyft smart contracts to Shyft network
- Shyft Bridge: A variation of a Transaction node which is responsible for book keeping and awarding rewards (Reputational Merit Tokens RMTs) to well behaving transaction nodes.
How it works
Anti Censorship is accomplished within the Shyft network in the following manner(Please see diagram at bottom):
- Pre-signed transactions are sent from the user’s wallet app to the Shyft Ring validator nodes. The node(s) selected are based on the following algorithm:
1.1. Look up and filter all the available Transaction nodes IP addresses and other data from a real time updated database table, where at least 2 node records have the same blockhash, i.e. disregard nodes that have unique block hashes dissimilar to other node blockhashes, which may indicate a dishonest node.
1.2. Measure geographic distance of each selected node to the Wallet App by invoking ipDistance.com or othere services.
1.3. Sort the nodes based on the following criteria and in the same order of importance as below:
1.3.1. Non-unique Block Hash (Already covered in 1.1 )
1.3.2. Node RMT (Reputational Merit Tokens) earned thus far for good behavior
1.3.3. Node Block Height
1.3.4. Node Geo distance from Wallet App
2. Two (or more) nodes are selected via this selection process, and each transaction is pre-signed by the user’s wallet (or other processes TBD), and sent to the respective node for inclusion into the Shyft blockchain’s memory pool and then the Shyft Node Bridge for accounting purposes. This is also sent to other nodes in the Shyft Ring in a peer-to-peer manner .
3. The nodes are then required to forward these pre-signed transactions to the Shyft Bridge for accounting purposes, and this pre-signed transaction is eventually included into a block if it is valid.
4. The nodes and the user’s wallet have a record of their lines of communication and hence the absolute proof for presence or absence of censorship. By providing this proof of censorship , which turns into a proof of unavailability if the action was not malicious, a node will be able to claim a reward (incentivization) or be penalized otherwise.
5. Through this incentivization mechanism, the system itself becomes a self-policing entity capable of detecting and incentivizing both validator node uptime, and censorship behavior.
6. These incentivization/disincentivization strategies can be binary (awarded or Not), or they can be additive, multiplicative, or compounded (or any other time-based distribution algorithm).
The additional requirements to connect and sign the Shyft Ring nodes’ own messages allows for a system that is self-policing and fully transparent to all participants, incentivizing good behavior on the network even in areas which might historically block traffic based on profiling rather that true understandings of customers/customer intentions.
Full Anti-Censorship cycle
The below steps and the related diagram spell out the sequence and the actions related to Anti-Censorship behavior.
Shyft Components Functionality:
0. Wallet API connects to a known Shyft Bridge node, obtains the address of the first available Wallet API it should connect to
- Wallet App:
1.a. Connects to the Wallet API using HTTP protocol
1.b. Sends own IP Address
2. Wallet API:
2.a Ethstats server continuously populates Postgress DB with the list of Node addresses which contain a Wallet IP and hence qualify to process transactions and receive rewards for it.
2.b Retrieves Postgres Anti Censorship Transaction Node Data
2.c Retrieves Deployed Contracts list, their addresses and ABIs from MongoDB.
3. Wallet API applies Anti Censorship logic using the data collected from the Data dips and the IP address of the Wallet App and creates a list of up to 3 Anti Censored Node addresses.
4.a. Receives Anti-Censored Node IP Add List, Contract List ,Contract ABIs
4.b. Connects to Shyft Github Repository to verify the Contract Addresses and versions it has received.
4.c. End user executes transaction (contract) via Wallet API
5. Wallet App:
5.a.1 Sign and add Transaction to Selected Node’s Wallet API to be added to the memory pool by its Transaction node
5.a.2 Sign and add Transaction to the same Wallet API (that did the Anti Censorship work) to be added to the memory pool by its Transaction node
Note: either one of the above Shyft nodes can add the transaction to the memory pool and get rewarded.
Note: Also there is a time limit on when the block with the newly added transaction node can be mined. In other words if this block is not mined in maximum 2 hours for example, no rewards will be given to either of the Shyft nodes.
5.b. Send Transaction to Node
5.c. Report Transaction to Shyft Bridge Node
6. Transaction Node forward pre-signed transactions to Shyft Bridge for accounting purposes, and this pre-signed transaction is eventually included into a block if it is valid.
7. Bridge Node
7. a. Bridge Node rewards the Transaction node for adding the transaction to the memory pool.
7.b. Optionally Bridge Node rewards the Transaction node associated with the Wallet API that did the Anti Censorship work, for adding the transaction to the memory pool, if this node happened to have added the transaction to the memory pool.