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.
  • 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.
  • 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.
  • 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.wrapcontract.

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 rmvproduceraction 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.

I, {{producer}}, acknowledge that if I continue to call the regproducer action without serving or fulfilling the requirements from a penalty that results from breach of regproducer, my account keys associated with the registered Block Producer in question may be nulled by Block Producers by using eosio.wrap.


EOS42 — Pioneering a Decentralized Future

WEBSITE . MEDIUM . TWITTER . TELEGRAM . LINKEDIN

`regproducer` 계약 개정 제안

[EOS 를 함께 보호하기]

서문 :이 글에 앞서 EOS42는 ‘regproducer’ 제안에 대한 피드백과 생각을 공유해주신 모든 분들께 감사드립니다. EOS 커뮤니티 멤버들의 헌신적이고 열정적인 연구 없이는 제안이 불가능 했을 것입니다.

`regproducer’ 의 새로운 패러다임

` regproducer’ 의 최소한의 목적은 블록프로듀서 후보를 등록하는 것입니다. 그러나 블록프로듀서 후보의 역할은 매우 여러가지로 정의될 수 있습니다. 현재 각 블록프로듀서 후보는 근본적으로 개인적인 개념으로서 ‘regproducer’ 규약의 의도를 받아드립니다. 이를 해결하기 위해 저희는 블록프로듀서 후보의 철학적, 문화적 정의를 연결하는 ‘regproducer’ 계약의 표준을 정의 하고자 합니다.

`regproducer`의 목표

블록프로듀서의 책임을 묻는 궁극적 이유는 `regproducer ‘에서 계약 상으로 합의 된 표준을 통해 블록프로듀서의 책임을 찾는 궁극적인 이유는 dApp 들을 안정적으로 호스트 할 수 있는 네트워크 성능을 보장하고, EOS 토큰소지자가 교육 된 투표 선택을 하도록 도우며, 불변성의 EOS 블록체인를 보존함으로써 EOS 사용자를 보호하는 것입니다.

저희는 일반적으로 다음 기준에 따라 `regproducer’ 개정 초안을 제안합니다 :

  • 단속/집행 프로토콜은 일반적으로 네트워크 보안의 핵심 구성 요소에 관한 ‘regproducer’ 조항에 적용됩니다.
  • 모든 제재에는 온-체인 (On-chain)에 부과할 기술적 수단이 있어야 합니다.
  • 모든 위반 사항은 온체인에서 객관적으로 입증 될 수 있어야 합니다.
  • 널리 받아 들여지는 표준 이하의 성과에 대해 합당한 제재를 할 것을 명시 해야합니다.
  • regproducer 는 블록프로듀서가 함께 협력하여 공동의 목표를 달성하는데 모움이 되는 계약으로서 이해되야 합니다.
  • 집행 프로토콜은 본질적으로 적대적인 것만은 아니며, 이로 인해 공포의 환경을 조성하자는 것이 아닙니다. 오히려, ‘regproducer’ 는 EOS 블록체인을 함께 보호하기 위해 상호 동의 한 지침으로 이해하는 것이 가장 좋습니다. 예를 들어 BP가 지속적으로 블록을 누락시킬 경우, ‘rmvproducer’ (BP삭제)와 같은 계약의 집행은 ‘무기’가 아니라 상호 이익을 보호하는 방법으로 당연하게 받아들여져야 합니다.
  • 게임 이론으로 예측 가능한 행동 결과를 제시하지 않는 명확한 기대치(집행수준) 설정해야 합니다.

이상주의 vs. 실용성 그리고 EOS 거버넌스 반영

이상주의적 으로는 “꼭두각시”, “가짜 신원” 및 2 개의 노드 운영과 같은 문제를 포괄적으로 해결할 수 있는 메커니즘을 구축 할 수 있을 것입니다. 그러나 이러한 문제를 근절하기 위해 실행 불가능한 표준을 도입하거나, 표준을 집행할 권한이 없는 제3자의 집행 매커니즘을 도입하거나, 존재하지 않는 기술적 수단을 활용하거나, 일반적으로 EOS 거버넌스 구조의 현재 현실을 간과해서는 안됩니다. — 현재 15/21 BP 초대다수 및 토큰 보유자 투표만이 EOS의 직접적 힘의 중심입니다.

실용적으로 말하자면, ‘regproducer’ 계약은 시행 불가능한 표준 (객관적으로 입증 될 수 없는 것)에 대한 집행 프로토콜을 정의하고 개요화 하려고 시도해서는 안됩니다. 집행 불가능한 표준은 고르지 않은 경기장을 만들어 주며, 어떤 의미에서도 시행 될 가능성이 거의 없습니다. 집행 불가능한 표준으로 추진되는 이상적인 결과는 자유시장과 문화에 맡기는 것이 더 나을 것입니다.

더욱이 객관적으로 집행 가능한 표준이 ‘(regproducer)’계약의 일부가 된다 할지라도, BP가 해당 표준을 적용해 집행(처벌)할지 여부는 여전히 미지수입니다. 현행 `regproducer`의 철학적이고 추상화적인 표준을 적용해 처벌하기 위해선, BP들은 정치적 반발을 무릅쓰는 등의 큰 위험을 감수 해야 하기 때문입니다.

이러한 이유로, 현재의 EOS 거버넌스의 구조와 현재 존재하는 도구를 고려하면, 네트워크 보안에 대한 객관적으로 엄중한 위협에 대해서만 BP 처벌이 집행될 가능성이 있습니다.

앞을 내다 보며

많은 가치를 창출해 내는 BP 임에도 순위와 연결되지 않는 상황은 계속 될 것입니다. 이것은 “꼭두각시” 및 “투표 구매” 에 대한 불만을 표명 한 EOS 커뮤니티 회원의 사례에서 입증됩니다. 이 두 가지 예 모두 공정성, 평등 및 정의에 관한 규범을 위반합니다. 그러나 이러한 철학적 좌절은 EOS 블록체인 불변성에 대한 의도적인 위협이라기 보다는, EOS 공동체 내에서 지속되고 있는 문화적 대립의 형태로 남아있을 것 같습니다.

대기 BP 생산 능력 테스트

EOS42 는 이 ‘regproducer’ 계약에 소개된 조항 중 하나라도 채택되려면, EOS 커뮤니티가 대기 BP의 블록 생산 능력을 시험하고 단속/집행 하는 메커니즘을 채택하는 방안을 적극 검토해야 한다고 생각합니다.

최소한, 모든 유급 BP는 그들의 최소한의 자격에 부흥할 수 있어야 합니다. 블록 생산을 위한 모든 BP들의 능력을 검증할 수 있는 매커니즘을 갖추면 기술된 문제점의 일부가 완화되고 네트워크 성능이 강화되며 보다 매력적인 비즈니스 환경을 제공할 수 있을 것입니다.

그러나, 이 메커니즘을 구축하는 것은 비용이 많이 들고, 추가 이익의 잠재력이 없습니다. 따라서, 이런 것이 개발될 가능성은 거의 없었습니다. 이러한 이유로 저희는 이 비전을 현실로 이끌어내기 위해 다른 Proxy 들과 협조하여 보상을 지급하고자 합니다. 또한 이 메커니즘이 구축 된 경우, 이를 활용할 수 있게 “regproducer” 초안에 “샘플” 조항을 추가했습니다.

You can learn more here. (자세한 내용)

`regproducer ‘조항에 대한 카테고리 및 제안

1. ‘regproducer’ 계약의 목적과 취지

‘regproducer’ 계약의 목적은 체인 ID (aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906)를 사용하여 EOS 블록 체인에서 블록프로듀서 후보, 지명 및 운영의 조건, 규칙 및 의무를 설정하는 것이며, 블록프로듀서 에게 이 계약의 조건을 집행하기 위한 처벌, 제재 및 메커니즘에 대해 알리고자 하는 것입니다.

`regproducer` 액션의 목적은 블록프로듀서 후보로서 계정을 등록하는 것입니다.

2. 지명

나, {{producer}}, 는 블록프로듀서 후보로 고려되도록 나 자신을 지명합니다. 이 지명에는 블록프로듀서 후보 기관의 모든 오너, 팀원, 직원 및 BP 기관의 공식 이름을 가지고 일하는 모든 개인 포함되며 이 계약의 모든 조건에 대해 명시적으로 동의하는 내용이 포함됩니다.

3. 의무 이행의 불이행에 대한 사임 및 퇴출

{{producer}} 가 본 계약서에 명시된 의무를 수행 할 수 없는 경우, 본인은 본 계약의 프로듀서 키를 null 로 만듦으로써 본인의 지위를 사임합니다.

만약 본인, {{producer}}, 이 의무를 이행 할 수 없을 때 사임하지 않는다면, 본인은 이 계약서에 열거 된 절차에 근거하여 제재가 집행되어야 함을 이해합니다.

4. EOS 보호

{{producer}} 는 본인이 취한 행위가 악의적이거나, 위협적이거나, 블록생산에 관련하여 부적절한 경우 본인의 {{producer_key}} 가 ​​null 로 처리된다는 사실을 인정합니다. 15/21 의 BP 초대다수의 투표는 EOS의 기술적 특징을 적절히 사용하여 처벌 또는 제재를 언제든 적절한 시간에 가할 수 있습니다.

5. regproducer 계약 개정

본인은, {{producer}} 로서, 이 계약서의 조항이 15/21의 선출된 BP 초대다수의 승인된 제안에 의해 수정 될 수 있음을 인정합니다.

6. 프로듀서 키

본인 {{producer}} 은 {{producer_key}} 로 블록에 서명 할 것입니다.

본인의 {{producer}} 가 키가 손상되었다고 의심 되다면, 본인은 다른 BP 들에게 알려주고 새로운 안전한 키로 다시 계약할 것입니다. 만약 계정이 영구적으로 손상되어 계정에 다시 액세스 할 수 없는 경우, 다른 BP 들에게 알려주며, 그들에게 본인의 키를 eosio.wrap contract 로 변경하는 권한을 부여합니다.

{{producer}} 는 EOS Blockchain 에서 Block Producer (BP) 계정이 실행하는 모든 작업이 본인의 계정이 손상된 여부와 상관없이 본인에게 책임이 있음을 인정합니다.

7. API 엔드포인트

만약 {{producer}} 가 투표로 인해 보상을 받을 자격이 있고, 보상을 받도록 선택한 경우 {{producer}} 는 작동하는 공개 P2P 및 API 엔드포인트 를 제공하여 블록 체인과의 동기화를 유지하고 포함될 트랜잭션을 제출합니다.

{{producer}} 가 공개 P2P 및 API 엔드포인트 를 제공하지 않으면, rmvproducer 작업을 사용하여 producer 지위가 제거됨을 인정합니다. 제거된 후 작동하는 공개 P2P 및 API 엔드포인트를 제공하지 못하고 regproducer 계약을 사용하여 BP 후보를 계속 등록하면, 키가 null 로 될 수 있습니다.

8. Standby BP 랜덤 로테이션

본인 {{producer}} 이, 유급 대기 BP 위치에 있으면, 랜덤으로 생산 포지션으로 부름 받을 수 있다는 것에 동의합니다. 만약 {{producer}} 가 생산 포지션으로 불려 갔을 때 연속 2 라운드 동안 블록을 생산하지 못한다면 rmvproducer 액션을 사용하여 다른 BP 들로부터 등록이 취소 될 수 있음을 인정합니다. 3번의 랜덤 호출이 있을 동안 연속으로 블록을 생성하지 못하면, eosio.wrap 가 사용되어 본인 키가 null 화 될 수 있습니다.

9. 2번 이상 라운드 블록 누락

본인이 2번 이상 라운드 동안 블록을 연속적으로 누락 한다면, rmvproducer action 이 사용되어{{producer}} 지위가 제거 될 수 있습니다.

10. 긴급 보안 패치

{{producer}} 는 긴급 보안 패치가 발표 된 후, 어떤 형태로든 연락이 안되는 경우 rmvproducer 작업을 사용하여 제거 될 수 있음을 인정합니다.

11. 법인 및 서버 정보의 공개

본인 {{productcer} 은, 블록프로듀서 기관과 서버 위치에 대한 정확한 정보를 공개했음을 증명한다.

12. Multisig(다중서명)이 필요한 제안 찬성 / 반대 투표

본인은 {{producer}} 유급 생산자 위치에 있을 때, BP Multisig 제안을 있을 시 다음 기준에 따라 투표를 해석 할 것임을 인정합니다: Multisig 제안에 대한 서명은 “찬성” 표, 투표를 기권하는 것은 “반대” 표 로 간주됩니다.

13. 페널티를 준수하지 않을 경우 벌칙을 정한다.

본인 {{producer}} 은 본인에게 제재된 페널티를 준수하지 않으면, BP 들이 rmvproducer 계약을 실행하게 되어 투표 자격이 제거됨을 인정합니다. rmvproducer 계약이 일어난 경우, 본인 {{producer}} 은 본인이 받은 페널티를 준수/이행 하기 전까지 regproducer 계약을 실행하지 않을 것입니다.

regproducer 의 위반으로 인한 페널티의 요구 사항을 충족시키지 않고, regproducer 계약을 계속 호출하면 등록된 블록프로듀서와 관련된 계정 키가 BP 들의 eosio.wrap contract 로 인해 null(무효)화 될 수 있음을 인정합니다.

regproducer 合约的修改提议

【共同保护 EOS 】

前言: 如果没有 EOSIO 社区伙伴们的热心积极参与,这篇文章就不会存在。我们非常感谢那些为EOSIO治理带来思想、想法和愿景的人们。本文是”reg_producer”合约草案,EOS42欢迎和感谢所有人提供反馈和想法

reg_producer 的新范式

reg_producer 的最基础的目标是用于出块节点候选人的注册。然而,出块节点候选人的定义各式各样。每个出块节点候选人实际上是“reg_producer”合约中代码“意图”的个人化抽象。因此,我们的目的是为“reg_producer”合约定义标准,将出块节点候选人的哲学和文化定义相连接。

reg_producer 合约的目标

EOS42 将 reg_producer 分解为三个主要目标:

通过在reg_producer合约中设定标准的方式,使得可以对出块节点问责,其最终目的是确保 EOS 网络性能足以为 dApps 提供可靠支持,帮助 EOS 代币持有人进行明智投票,并通过客观地保留不能变更的EOS区块链的方式保护EOS用户。

在一个依赖于两种“强制”方式(代币持有者投票和BP自我约束)的系统中,社区认可的“reg_producer”在实践中的有效性,还有待观察。

除非存在对网络安全的客观威胁,否则出块节点不太可能强制执行任何reg_producer条款。

因此,我们建议根据以下标准起草reg_producer:

  • 强制执行协议可以普遍适用于reg_producer中有关网络安全关键组件的条款
  • 所有的制裁都有技术手段保证,可以在链上实施。
  • 所有违规行为都可以在链上得到客观证明。
  • 提供概述,列出对普遍认同的表现不合标准的情形实施合理制裁的情况
  • 最好将regproducer 理解为帮助出块节点一起协作实现共同目标的合约
  • 在本质上,强制执行协议并不总是对抗性的 — — 无意创造一个恐惧的环境。相反,最好将 regproducer 理解为双方一致同意的指南, 用于保护EOS区块链。例如,当一个出块节点长时间丢块时,就应该从文化角度将 rmvproducer 这样的合约理解为保护共同利益的方式,而不是强制执行的“武器”。
  • 在博弈论不能预测行为结果的地方,设定明确的期望

反思理想主义 vs. 实用性, EOS 治理

理想情况下,我们应当建立机制,全面解决贿选、傀儡节点以及某些团队同时运行两个节点等问题。 然而,解决这些问题的努力,不应当以如下行为为代价:引入无法执行的标准,使用没有链上执行能力的第三方机制进行强制执行,利用不存在的技术手段实施制裁,或者忽略当前现实中 EOS 治理中的基本元素 — 15/21 的BP 超级多数投票方式。代币持有人的投票是EOS 唯一的直接权力中心。

实际上,reg_producer 合约不应该试图就那些无法得到执行的标准(那些无法得到客观证明、不存在争议的标准),对强制执行协议进行定义和概述。无法强制执行的标准, 会造成不公平的竞争环境,而且在任何意义上都不太可能得到强制执行。试图使用无法得到执行的标准追寻的理想主义结果,最好通过自由市场解决方案和文化来处理。

此外,即使客观可执行的标准成为 reg_producer 合约的一部分,BP 是否会执行这些标准, 还有待观察。我们不应该感到惊讶。

为了执行从 regproducer 代码意图中抽象出来的、哲学上越来越抽象的标准,BP 们可能会冒险切断它们所处的分支,并可能引发政治上的争议。

基于这些原因,考虑到EOS治理的当前结构和我们可以使用的工具,只有对网络安全构成严重的客观威胁的情况下,合约才会强制执行。

展望

在出块节点所提供的价值贡献和它们得到的排名之间,不匹配的感觉可能会一直存在。EOS社区成员对于“傀儡节点”和“贿选”的 不满,就是例子。这两种情况都与公平、平等、争议有关。但是在 EOS 社区中,这种哲学上的挫败感可能会以文化冲突的方式持续存在, 而不是对于 EOS 区块链不可变更性的有意的威胁。

测试备选节点的出块能力

EOS42认为,如果要采用该 reg_producer 合约中的任何条款,EOS社区应该认真考虑某种机制,用于测试和强制确保备用节点的出块能力。

至少,每个得到报酬的出块节点,都需要达到他们的最低目标的能力。若能够确保所有的 BP 都具备出块能力,可能会减轻上文所描述的哲学上的挫败感,有助于提高网络性能,并产生更有吸引力的商业环境。

然而,建立这种机制代价高昂,而且缺乏盈利潜力。因此,这类方案很可能无法出现。出于这些原因,我们正在与其他 EOS 投票代理合作,以投票激励的方式作为赏金,以实现这一愿景。我们还在 reg_producer 草案中增加了一条示例条款,描述了在该测试方案实现后将如何利用该方案。

想了解更多,可以阅读此文

reg_producer 条款的建议

此一reg_producer草案,试图列出最小标准。并没有包罗所有状况。我们欢迎您加入讨论,交流如何修改以便更好地满足 EOS 区块链的需要。

1. 合约目标 以及 regproducer的意图

regproducer合约的目的是:
创建出块节点候选人、提名和在链ID 为(aca376f206b8fc25dbd66547c36c6c33e3a119ffbeaef943642f0e906)的EOS区块链上运营所需要符合的条款、规则和义务;
告知出块节点关于侵权、制裁和对本合约条款的强制执行的信息。

regproducer 指令的目的是将一个帐户注册为出块节点候选人。

2. 提名

本人,{{producer}},特此提名本人为出块节点候选人。本提名包括了本出块节点候选人实体对本合约中所有条款的明确同意,包含其所有者、雇员、员工、成员,以及任何以正式身份为本出块节点实体工作的个人。

3. 因不能履行义务而辞职或被免职

如果我,{{producer}},不能履行本合约中所规定的任何义务,我将使用无效的出块节点公钥调用本合约,从而辞去我的出块节点职务。

如果我 {{producer}}, 在无法履行上述义务时未能辞职,我知晓将会根据本合约所列举的程序对我实行制裁。

4. 保护 EOS

本人,{{producer}},在此确认,本人所采取的任何被视为恶意、威胁或与妨碍出块有关的其他不当行为,均构成本人 {{producer_key}} 被取消的理由。当选的出块节点中 15/21 的超级多数可以使用 EOS 的任何技术特性, 在他们认为合适的任何时间, 对我实施惩罚或制裁。

5. 对 regproducer 合约修正

本人,{{producer}},承认本合约中的条款可通过提案进行修正,此提案需得到当选出块节点中15/21的超级节点超级多数批准。

6. 出块密钥

我, {{producer}}, 将使用 {{producer_key}} 对区块签名。

如果我, {{producer}}, 怀疑我的密钥已被泄露,我将通知其他出块节点,并使用新的安全密钥再次调用此合约。如果帐户被永久破坏导致我无法重新访问该帐户,我将通知其他出块节点,授予其他出块节点以有效的权利,使用eosio.wrap 合约更改我的密钥。

我,{{producer}},承认我的出块节点帐户在EOS区块链上所执行的任何操作都是我的责任,无论该帐户是否被盗。

7. API 端点

如果我,{{producer}},得到了投票,符合条件并选择接受报酬,那么我, {{producer}},将提供功能正常的公共 P2P 和 API 端点来维护与区块链的同步,并提交要包含的事务。

我,{{producer}},在此确认,如果我不提供公共P2P和API端点,将会使用“rmvproducer”操作移除我的账户。在被移除后,如果没有提供有效的公共P2P和API端点,并且继续使用“regproducer”合约注册出块节点候选人,可能会导致密钥被设置为无效密钥。

8. 备选节点的随机轮换

我,{{producer}},同意若本节点处于有偿备选状态,可被随机调入出块状态。如果我,{{producer}},在被调入出块时连续2轮未能生产区块,我确认,其他的出块节点可以注销我的账号。连续三次被调入出块位置却无法出块,将会导致其他节点使用 eos.wrap 合约将我的公钥设置为无效值。

9. 两轮或更多轮丢块

我,{{producer}}, 在连续两轮或更多轮丢块后,BP可能会用 rmvproducer 指令将我移除。

10. 紧急安全补丁

我,{{producer}},确认如果在紧急安全补丁发布后,无法联系到我,BP可能会用 rmvproducer 指令将我移除。

11. 出块节点实体和服务器的信息披露

我,{{producer}},证明我已经披露了关于出块节点实体服务器位置的准确信息。我的所有权实体的居住国,用2个字母的ISO代码表示为 {{entity_domicile_country}}

12. 多签的 赞同/反对 投票

我,{{producer}},在此同意,如果某个有报酬的出块节点提出了 BP 多签提案时我处于有报酬的节点状态,则我的投票将基于如下标准进行解读:对多签提案签名,表示“赞同”票。在多签时弃权,将被视为 “反对” 票。

13. 对不愿遵守处罚的行为予以处罚

我,{{producer}},承认若不遵守对本人制裁的处罚,BP 可以实施 rmvproducer 合约,我的投票资格将被取消。若有针对我实施rmvproducer的合约的情况发生,我, {{producer}} 在遵守/履行所收到的处罚之前,不会再次执行 regproducer 合约。

我,{{producer}},承认如果没有遵守或履行因违反regproducer而受到的惩罚要求却继续调用regproducer操作,BP 可以调用 eosio.wrap 合约将我用来注册出块节点的账号密钥设置为无效值。