EOS 노드 운영자들과 함께, EOS 네트워크 재단은 2023년 9월 14일 목요일까지 지연된 트랜잭션(예정된 트랜잭션/Scheduled Transactions이라고도 함)을 비활성화하는 계획을 개발했습니다. 이 단계는 Leap 5.0.0 릴리스를 위한 EOS 네트워크의 안정성과 성능을 더욱 강화하기 위해 필요합니다. 노드 운영자애플리케이션 개발자의 조치가 필요합니다.

조치가 필요합니다!

모든 노드 운영자는 다음 일정에 따라 모든 노드에 대해 지연된 트랜잭션을 비활성화해야 합니다:

  • Jungle & Kylin Test Networks:
    • 2023년 8월 28일 월요일 이후
    • 늦어도 2023년 9월 1일 금요일까지
  • EOS 네트워크:
    • 2023년 9월 8일 금요일 이후
    • 늦어도 2023년 9월 14일 목요일까지

모든 애플리케이션 개발자는 서비스 중단을 방지하기 위해 늦어도 2023년 9월 7일 목요일까지 애플리케이션에서 지연된 트랜잭션 종속성을 제거해야 합니다.

노드 운영자 및 애플리케이션 개발자를 위한 지침은 이 해당 게시글의 마지막에 포함되어 있습니다.

변경된 이유는 무엇입니까?

지연된 트랜잭션은 2019년 10월(v2.0.0rc1)부터 공식적으로 더 이상 사용되지 않습니다. 그 이후로 이로인한 문제가 여전히 계속되고 있습니다. 지연된 트랜잭션은 노드 실행, 기록 제공, 스마트 컨트랙트 동작 이해, 계정 복구에 과도한 복잡성을 추가합니다.

지연된 트랜잭션이 상황을 어떻게 복잡하게 만드는가요?

  • 복잡한 노드(Complicated Nodes): 지연된 트랜잭션으로 인해 생태계, 특히 일반 트랜잭션과 대조될 때 다양한 방법으로 실패할 수 있습니다.
  • 기록 복잡성(History Complexities): 지연된 트랜잭션은 다섯 가지 상태 중 하나에 속하는 것부터 오류 처리 트랜잭션과 결합될 가능성에 이르기까지 지속적으로 기록 추적을 복잡하게 만들었습니다.
  • 계약 가정(Contract Assumptions): 개발자는 지연된 트랜잭션이 예상대로 실행될 것이라고 가정했습니다. 그러나 현실은 오류 처리기와 함께 이러한 트랜잭션이 체인의 안전성을 손상시키지 않으면서 실행이 보장되지 않는다는 것입니다.

이제와서 지연된 트랜잭션을 제거하는 이유는 무엇입니까?

Leap v5.0.0에는 즉각적인 최종성(Instant Finality)이라는 프로토콜 기능이 포함되어 있습니다. 이 프로토콜 기능이 활성화되면 되돌릴 수 없습니다. 즉각적인 최종성(Instant Finality)이 활성화된 네트워크에 참여하려는 노드는 Leap v5.0.0을 실행해야 합니다.

또한 Leap v5.0.0 ‘max-scheduled-transaction-time-per-block-ms’ 구성 옵션을 무시하여 nodeos 코드에서 지연된 트랜잭션을 비활성화합니다. 위와 함께, 이는 Leap v5.0.0이 BP에 배포된 후에 지연된 트랜잭션을 다시 활성화할 수 없음을 의미합니다.

Leap 5.0.0 릴리스 및 프로토콜 업그레이드 이전에 지연된 트랜잭션을 비활성화함으로써 커뮤니티는 예상치 못한 문제를 사전에 해결할 수 있습니다.

지침

노드 운영자: 지연된 트랜잭션 비활성화

지연된 트랜잭션을 비활성화하려면 모든 노드(특히 블록 생성 노드)의 config.ini 파일에서 `max-scheduled-transaction-time-per-block-ms`를 “0”으로 설정하십시오.

config.ini:

[code block: max-scheduled-transaction-time-per-block-ms = 0]

개발자: 지연된 트랜잭션 사용량 확인

개발자는 앱에서 생성된 트랜잭션의 `delay_sec`에 0이 아닌 값이 사용되는지 또는 앱 컨트랙트에서 호출이 발생하는지 확인하여 애플리케이션에서 지연된 트랜잭션의 사용을 확인할 수 있습니다:

  • `eosio::transaction` 내의 `send` 멤버 함수
  • `send_deferred`
  • `cancel_deferred`

개발자: 지연된 트랜잭션의 대안

컨트랙트에서 지연된 트랜잭션을 사용하여 나중에 작업을 자동으로 트리거하는 경우, 해당 작업은 다른 수단을 통해 트리거해야 합니다. 가능한 대체 솔루션은 다음과 같습니다:

  • 프런트엔드는 사용자를 대신하여 작업 실행의 필요성을 감지하고 사용자에게 작업을 트리거하는 트랜잭션에 서명하라는 메시지를 표시합니다.
  • 실패하지 않도록 설계된 보류 중인 작업의 대기열을 설정하고 누구나 해당 대기열을 처리하기 위해 호출할 수 있는 작업을 추가하도록 컨트랙트를 설계합니다. 선택 사항으로 대기열을 처리하는 작업을 주기적으로 호출하는 서비스를 배포합니다.

기록(History)

이번 변경 내역을 자세히 알아보고 싶다면 도움이 되는 몇 가지 링크를 참조하시기 바랍니다:


EOS 네트워크

EOS 네트워크는 수수료가 거의 없는 트랜잭션의 결정론적 실행을 위한 저지연, 고성능, 확장 가능한 WebAssembly 엔진인 EOS VM으로 구동되는 3세대 블록체인 플랫폼으로, 최적의 web3 사용자 및 개발자 경험을 가능하게 하기 위해 특별히 제작되었습니다. EOS는 EOS 네트워크 재단(ENF)을 통해 도구 및 인프라에 대한 멀티체인 협업 및 공공재 자금 조달의 원동력 역할을 하는 Antelope 프로토콜의 플래그십 블록체인 및 금융센터입니다.

EOS EVM

EOS EVM은 EOS 스마트 컨트랙트 내에 포함된 Ethereum EVM의 에뮬레이션입니다. 다른 EVM과 동등한 기능을 제공하지만, 비교할 수 없는 속도와 성능, 호환성을 제공합니다. EOS EVM은 개발자가 다양한 Solidity 기반 디지털 자산과 혁신적인 dApp을 EOS에 배포할 수 있도록 하여 EOS 생태계를 Ethereum 생태계에 연결합니다. 개발자는 EOS EVM을 사용하여 이더리움의 실전 테스트를 거친 오픈 소스 코드, 도구, 라이브러리 및 SDK를 활용하는 동시에 EOS의 뛰어난 성능을 활용할 수 있습니다.

EOS 네트워크 재단

EOS 네트워크 재단(ENF)는 성장하는 탈중앙화 미래에 대한 비전을 통해 구축되었습니다. ENF는 웹3 혁신을 위해 주요 이해관계자들의 참여와 커뮤니티 프로그램, 생태계 펀딩 및 오픈 기술 생태계를 지원하고 있습니다. 2021년에 설립된 ENF는 안정적인 프레임워크, 도구 및 블록체인 개발을 위한 라이브러리 세트를 갖춘 선도적인 오픈소스 플랫폼인 EOS 네트워크를 위한 허브입니다. 저희는 커뮤니티와 함께 구축하고 모두를 위한 더 강력한 미래를 위해 헌신할 수 있는 혁신을 위해 노력하고 있습니다.