Rewriting regproducer

Protecting EOS together

[Korean and Chinese Version Below]

Foreword: This paper would not be possible without the dedicated, and passionate work of EOS community members. EOS42 is thankful for everyone who shared their feedback and thoughts about this draft of regproducer

A New Paradigm of regproducer

The bare minimum purpose of regproducer is registering a Block Producer candidacy. However, the definition of a Block Producer candidacy is highly variable. Each Block Producer candidate is essentially a personal abstraction of the “intent” of code in regproducer . Therefore, our intention is to define standards for the regproducer contract that bridge philosophical, and cultural definitions of a Block Producer candidacy.

Goals of regproducer

The ultimate goals for seeking Block Producer accountability by way of contractually agreed upon standards in regproducer is to ensure network performance that can reliably host dApps, and protect EOS users by objectively conserving an immutable EOS blockchain.

We generally suggest drafting regproducer based upon the following understandings:

Enforcement protocol is generally applied to articles of regproducer concerning critical components of network security.

concerning critical components of network security. All sanctions have technical means to be imposed on chain.

All violations can be objectively proven on chain.

Outlines enforcement of reasonable sanctions for broadly accepted instances of substandard performance.

regproducer is best understood as a contract that helps Block Producers achieve common goals by working together.

is best understood as a contract that helps Block Producers achieve common goals by working together. Enforcement protocol is not always adversarial in nature — this is not about creating an environment of fear. Rather, regproducer is best understood as a mutually agreed upon guide for protecting the EOS blockchain together. For example, when a Block Producer is chronically missing blocks, contracts such as regproducer should be culturally understood as a way to protect mutual interests, rather than a “weapon” of enforcement.

is best understood as a mutually agreed upon guide for protecting the EOS blockchain together. For example, when a Block Producer is chronically missing blocks, contracts such as should be culturally understood as a way to protect mutual interests, rather than a “weapon” of enforcement. Set clear expectations where game theory does not suggest predictable behavioral outcomes

Reflecting on Idealism vs. Practicality and EOS Governance

Ideally we’d be able to establish mechanisms to comprehensively address issues such as “vote buying”, “sock puppets”, and running multiple nodes. However, seeking to eradicate these issues should not come at the cost of introducing unenforceable standards, enlisting 3rd party mechanisms for enforcement that have no on chain power to enforce standards, leveraging nonexistent technical means to impose sanctions, or generally losing sight of the basic elements of the current realities of EOS governance — 15/21 BP supermajority and token holder vote are the only centers of direct power on EOS.

Practically speaking, the regproducer contract should not attempt to define and outline the enforcement protocol for unenforceable standards (those which cannot be objectively proven, and without doubt). Unenforceable standards creates an uneven playing field, and are highly unlikely to be enforced in any meaningful sense. The idealistic outcomes that are pursued with unenforceable standards are better addressed by free market solutions and culture.

Furthermore, even if objectively enforceable standards become a part of the regproducer contract, it remains to be seen whether or not BPs would enforce said standards. And we shouldn’t be surprised. In order to enforce standards, BPs risk cutting off the branch they are sitting on, and potential political backlash.

Given the current structures of EOS governance, and the tools at our disposal, it’s plausible that only objectively severe threats to network security will be enforced.

Looking Ahead

There will likely be an ongoing sense of misalignment between genuine BP value add, and their ranking position. This is evidenced in instances of EOS community members vocalizing discontent about “sock puppets” and “vote buying”. Both of these examples strike a cord concerning fairness, equality, and justice. But this philosophical discouragement will likely remain in the form of ongoing cultural tension within the EOS community, rather than a purposeful threat to immutability.

Testing Standby Ability to Produce

EOS42 believes that if any of the articles introduced in this regproducer contract are to be adopted, the EOS community should highly consider embracing a mechanism to test and enforce the ability of a standby BPs to produce blocks.

At the very least, every paid BP would be capable of serving their minimum purpose. Having the ability to verify every BPs ability to produce blocks would likely ease some of the philosophical discouragement described, nourish network performance, and yield a more attractive business environment.

However, building this mechanism is costly, and has no potential for profit. Therefore, it’s highly unlikely something like this would be developed.

For these reasons we’re offering a bounty in coordination with other proxies to bring this vision to life. We’ve also added a “sample” article within this draft of regproducer that would leverage this mechanism if it were built.

You can learn more here.

Suggestions for Articles of regproducer

1. The object of the contract and intent of regproducer

The object of this contract, regproducer , is to establish the terms, rules and obligations of block producer candidacy, nomination and operation on the EOS blockchain with the Chain ID (aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906); and to inform block producers about the infringements, sanctions and mechanisms for enforcing the terms of this contract.

The intent of regproducer action is to register an account as a block producer candidate.

2. Nomination

I, {{producer}}, hereby nominate myself for consideration as a block producer candidate. This nomination includes the express agreement to all terms of this contract by my block producer candidate entity, including all of its owners, employees, staff, members, and any individual working in official capacity for my Block Producer entity.

3. Resignation and Removal for Inability to Perform Obligations.

If I, {{producer}}, am unable to perform any of the obligations stipulated in this contract, I will resign my position by calling this contract with a null producer key.

If I, {{producer}}, fail to resign when unable to perform said obligations, I understand that sanctions shall be enacted against me on the basis of the procedures enumerated in this contract.

4. Protecting EOS

I, {{producer}}, hereby acknowledge that any action I take that is deemed malicious, threatening, or otherwise inappropriate in relationship to block production, is grounds for my {{producer_key}} to be nulled. A 15/21 elected block producer supermajority can use any technical feature of EOS at their disposal to enforce penalties or sanctions at anytime deemed appropriate.

5. Amending the regproducer contract

I, {{producer}}, acknowledge that the terms of this contract may be amended by a proposal approved by a a 15/21 elected block producer supermajority.

6. Producer Key

I, {{producer}}, will sign blocks with {{producer_key}}

If I, {{producer}} suspect my key has been compromised, I will alert the other Block Producers, and call this contract again with a new secure key. If the account is permanently compromised and I cannot regain access to the account, I will alert other Block Producers, effectively granting other Block Producers the right to change my keys with the eosio.wrap contract.

I, {{producer}}, acknowledge that any and all actions that my Block Producer account executes on the EOS Blockchain is my responsibility, regardless of the account being compromised.

7. API Endpoints

If I, {{producer}}, qualifies for and chooses to collect compensation due to votes received, I, {{producer}}, will provide functioning public P2P and API endpoints to maintain synchronization with the blockchain and submit transactions to be included.

I, {{producer}}, hereby acknowledge that if I am not providing public P2P and API endpoints, I will be removed by use of the rmvproducer action. Failing to provide a functioning public P2P and API endpoints after being removed, and continuing to register a block producer candidacy using the regproducer contract can result in having keys nulled.

8. Random Rotation of Standbys

I, {{producer}}, agree that if I am in a paid standby position, I can be randomly called into a producing position. If I, {{producer}}, fail to produce for 2 consecutive rounds when called into production, I acknowledge that I can be unregistered by other producers by use of the rmvproducer action. Failing to produce any blocks for 3 consecutive instances I am randomly called into a producing position will result in having my keys nulled by using eosio.wrap .

9. Missing Two or More Rounds of Blocks

I, {{producer}}, may be removed by use of the rmvproducer action after missing 2 or more rounds of blocks in succession.

10. Urgent Security Patches

I, {{producer}}, acknowledge that if I am not able to be contacted in any form after an urgent security patch being is announced, I may be removed by use of the rmvproducer action.

11. Disclosure of Entity and Server Information

I, {{producer}}, attest that I have disclosed accurate information about my block producer entity and server locations.

12. Multisig Yes/No votes

I, {{producer}}, hereby acknowledge that if I am in a paid position at the time of a BP multisig proposal by a paid producer, my vote will be interpreted based on the following criteria: Signing a multisig proposal is interpreted as a “yes” vote. Abstaining from a multisig vote will be considered a “no” vote.

13. Establishes the penalty for unwillingness to comply with penalties

I, {{producer}}, acknowledge that failing to comply with penalties enacted against me will result in Block Producers executing the rmvproducer contract, which will remove eligibility for votes. I, {{producer}}, will not execute the regproducer contract until serving or fulfilling the requirements from a penalty that results in having the rmvproducer contract executed against me.