Skip to main content

contractDependencies

For the complete documentation index, see llms.txt

@midnight-ntwrk/compact-runtime v0.16.0


@midnight-ntwrk/compact-runtime / contractDependencies

Function: contractDependencies()

function contractDependencies(contractReferenceLocations, state): string[];

컨트랙트의 현재 원장 상태를 나타내는 StateValue가 주어지면, Compact 컴파일러가 생성한 ContractReferenceLocations 객체를 사용하여 주어진 원장 상태에 존재하는 현재 컨트랙트 주소를 추출합니다. 생성된 컨트랙트 주소는 루트 컨트랙트가 의존하는 컨트랙트를 나타냅니다. 이 의존성은 멀티 컨트랙트 환경에서 실행 전에 루트 컨트랙트가 의존하는 모든 컨트랙트의 원장 상태를 가져오는 데 사용됩니다.

참고: 주어진 ContractReferenceLocations는 주어진 StateValue를 생성한 원장 상태 생성자를 포함하는 컨트랙트 실행 파일의 것이어야 합니다.

Parameters​

contractReferenceLocations​

ContractReferenceLocations

루트 컨트랙트의 원장 상태에서 컨트랙트 참조를 가리키는 데이터 구조입니다.

state​

StateValue

루트 컨트랙트의 현재 원장 상태입니다.

Returns​

string[]

주어진 원장 상태에 존재하는 모든 컨트랙트 주소(참조) 목록입니다.

Remarks​

알고리즘은 세 가지 주요 단계로 구성됩니다:

  1. 주어진 ContractReferenceLocations에서 SparseCompactADT에 도달할 때까지 PublicLedgerSegments를 풀어냅니다. PublicLedgerSegments를 풀어낼 때마다 현재 상태 값을 상태 값 배열로 캐스팅하고, 각 상태 값과 풀어낸 원장 세그먼트에 대해 재귀적으로 진행합니다.
  2. 현재 PublicLedgerSegments에서 SparseCompactType에 도달할 때까지 각 SparseCompactADT를 풀어냅니다. SparseCompactADT를 풀어낼 때마다 현재 상태 값을 해당 SparseCompactADT가 나타내는 상태 표현으로 캐스팅합니다.
  3. 현재 상태를 더 이상 축소할 수 없으면, 상태 내부 어딘가에 Compact 컨트랙트 주소가 존재해야 하며 해당 컨트랙트 주소가 의존성 집합에 추가됩니다.