안녕하세요, 아크로이오스입니다.
지난 9월에 진행되었던 1.8 하드포크는 합의 프로토콜 업데이트가 포함되어 있습니다. 하드포크가 성공적으로 완료된 직후부터 업데이트 된 여러 합의 프로토콜 기능들이 하나 둘, BP간 MSIG를 통해 활성화되고 있습니다.
이미지 출처: blok.io
1.8 하드포크를 통한 합의 프로토콜 기능은 사전 활성화 기능인 PREACTIVE_FEATURE을 포함하여 13개 항목으로 구성되어 있습니다. 현재까지는 아래에서 소개할 두 가지 기능까지 합쳐 총 4개의 기능이 활성화(Activated) 되었습니다. 앞으로 남은 항목이 MSIG로 업데이트 될 때마다, 어떤 내용인지 풀어 커뮤니티 여러분께 공유해 드리도록 하겠습니다.
오늘 소개할 두 가지는 지난 10월 30일 EOS LAOMAO에 의해 활성화 제안이 되었던 기능입니다. 지난 주말, 15/21 BP MSIG가 승인이 되면서 메인넷에 적용되었습니다.
- ONLY_LINK_TO_EXISTING_PERMISSION
- DISALLOW_EMPTY_PRODUCER_SCHEDULE
1. ONLY_LINK_TO_EXISTING_PERMISSION (존재하지 않는 권한 비허가)
기능 소개에 앞서, eosio:: linkauth에 대한 설명이 필요합니다. eosio::linkauth는 계정의 권한 확인으로, 특정 기능에 대한 계정의 Owner, Active 권한을 체크하여 해당 기능에 접근 가능 여부를 판단합니다. 이전까지는 계정이 특정 기능에 대해 권한 확인 시, '계정명'만 확인했으나 ONLY_LINK_TO_EXISTING_PERMISSION이 활성화 되면서 특정 기능에 접근 가능한 계정은 ‘Owner 권한’이 있는 계정으로만 제한되었습니다.
※ 권한 체크 시, 계정명 확인 → 오너 권한 확인으로 변경 / ONLY_LINK_TO_EXISTING_PERMISSION 비활성화 시, 기존 방식으로 진행
보통 컨트랙트를 블록에 기록하는 계정의 경우, Owner, Active 권한을 이미 다 가지고 있기 때문에 굳이 나눌 필요가 없으며, 이 기능을 활성화 하지 않아도 별 문제는 되지 않지만, 잠재적으로 발생할 수도 있는 사안에 대한 사전 조치라고 보시면 될 것 같습니다.
2. DISALLOW_EMPTY_PRODUCER_SCHEDULE (빈 블록 프로듀서 스케줄 제한)
DISALLOW_EMPTY_PRODUCER_SCHEDULE는 블록 생산 스케줄과 관련된 변경 사항 입니다. 이는 전달된 BP목록의 BP 개수가 0일 때, 블록 프로듀서 스케줄을 설정하지 않도록 하는 기능입니다. 블록 프로듀서 스케줄을 변경하기 위해서는 BP 목록 개수 데이터가 필요합니다. 여태까지는 스케줄 설정 시, BP 개수를 체크하지 않고 있었습니다. 이 기능은 BP 개수가 0이 되고, DISALLOW_EMPTY_PRODUCER_SHEDULE= true 값 설정 시, 활성화되어 블록 프로듀서 스케줄을 설정하지 않습니다.
※블록 프로듀서 스케줄이란?
다음 블록을 생산할 BP와 생성될 블록의 번호를 매칭하는 것을 뜻합니다.
블록 프로듀서 스케줄 현황
BP 알파벳명 순으로 돌아가며 블록을 생산합니다. 스케줄이 설정되어 있으면, TOP 21 BP에서 내려가더라도 설정된 스케줄 대로 작동하며, 다음 스케줄 설정 시에 변동 사항이 반영됩니다.
기능 활성화 조건
- 등록된 BP의 수 = 0
- DISALLOW_EMPTY_PRODUCER_SCHEDULE = true
[참조]
- Consensus protocol upgrade to disallow proposing an empty producer schedule #6458
- Consensus upgrade to disallow linking to non-existing permission #6333
- protocol upgrade activation mechanism (also implements PREACTIVATE_FEATURE and ONLY_LINK_TO_EXISTING_PERMISSION protocol features) #6831
Contact
EOS producer name : acroeos12345
Email : [email protected]
Steemit : https://steemit.com/@acroeos
Medium : https://medium.com/acroeos
Twitter : https://twitter.com/acroeos
Telegram : https://t.me/AcroEOS
Wechat : AcroEOS信息站!
Proxyname : votetochange