메인 콘텐츠로 건너뛰기

소개

프리컴파일된 컨트랙트(precompiled contracts)는 블록체인의 실행 계층에 직접 구현된 특수한 스마트 컨트랙트입니다. EVM 바이트코드를 실행하는 사용자 배포 스마트 컨트랙트와 달리, 프리컴파일된 컨트랙트는 복잡한 암호학적 및 계산적 연산을 위한 최적화된 네이티브 구현을 제공합니다. 이를 통해 효율성을 크게 향상시키고 가스 비용을 줄일 수 있습니다. 프리컴파일된 컨트랙트는 실행 클라이언트 내의 고정된 주소에 존재하며, 각 프리컴파일은 계산 복잡도에 따라 사전 정의된 가스 비용을 가지므로 예측 가능한 실행 수수료를 보장합니다. DATA Foundation은 두 개의 프리컴파일된 컨트랙트를 도입합니다:
  • secp256r1 타원 곡선의 서명 검증을 지원하는 p256Verify 프리컴파일.
  • 온체인 지식재산권 관리를 강화하는 ipgraph 프리컴파일.
또한 DATA Foundation의 실행 계층은 모든 표준 EVM 프리컴파일된 컨트랙트를 지원하여 Ethereum 기반 도구 및 애플리케이션과의 완전한 호환성을 보장합니다.

프리컴파일된 컨트랙트

주소기능
byte1ecrecover - ECDSA 서명 복구
byte2sha256 - SHA-256 해시 계산
byte3ripemd160 - RIPEMD-160 해시 계산
byte4identity - 항등 함수
byte5modexp - 모듈러 지수 연산
byte6bn256Add - BN256 타원 곡선 덧셈
byte7bn256ScalarMul - BN256 타원 곡선 스칼라 곱셈
byte8bn256Pairing - BN256 타원 곡선 페어링 검사
byte9blake2f - Blake2 해시 함수
byte10kzgPointEvaluation - KZG 다항식 약속(commitment) 평가
byte0p256Verify - Secp256r1 서명 검증
byte1ipgraph - 지식재산권 관리

p256Verify 프리컴파일

자세한 내용은 RIP-7212를 참고하세요.

IPgraph 프리컴파일

ipgraph 프리컴파일은 IP 관계 및 로열티 구조를 효율적으로 조회하고 수정할 수 있게 하면서 가스 비용을 최소화합니다. 이 컨트랙트는 0x0000000000000000000000000000000000000101에 배포되며, 접근은 0x1640A22a8A086747cD377b73954545e2Dfcc9Cad 컨트랙트를 통해 제어됩니다. 이 프리컴파일은 함수 선택자(입력의 처음 4바이트)에 따라 여러 기능을 제공합니다.
함수 선택자설명가스 계산 공식가스 비용
addParentIp부모 IP 레코드 추가intrinsicGas + (ipGraphWriteGas * parentCount)1100보다 큼
hasParentIp한 IP가 다른 IP의 부모인지 확인ipGraphReadGas * averageParentIpCount40
getParentIps부모 IP 조회ipGraphReadGas * averageParentIpCount40
getParentIpsCount부모 IP 개수 조회ipGraphReadGas10
getAncestorIps조상(ancestor) IP 조회ipGraphReadGas * averageAncestorIpCount * 2600
getAncestorIpsCount조상 IP 개수 조회ipGraphReadGas * averageParentIpCount * 280
hasAncestorIp한 IP가 다른 IP의 조상인지 확인ipGraphReadGas * averageAncestorIpCount * 2600
setRoyaltyIP의 로열티 세부사항 설정ipGraphWriteGas1000
getRoyaltyIP의 로열티 세부사항 조회varies by royalty policyLAP:900, LRP:620, other:1000
getRoyaltyStackIP의 로열티 스택 조회varies by royalty policyLAP:50, LRP: 600, other:1000
hasParentIpExt외부 호출을 통해 한 IP가 다른 IP의 부모인지 확인ipGraphExternalReadGas * averageParentIpCount8400
getParentIpsExt외부 호출을 통해 부모 IP 조회ipGraphExternalReadGas * averageParentIpCount8400
getParentIpsCountExt외부 호출을 통해 부모 IP 개수 조회ipGraphExternalReadGas2100
getAncestorIpsExt외부 호출을 통해 조상 IP 조회ipGraphExternalReadGas * averageAncestorIpCount * 2126000
getAncestorIpsCountExt외부 호출을 통해 조상 IP 개수 조회ipGraphExternalReadGas * averageParentIpCount * 216800
hasAncestorIpExt외부 호출을 통해 한 IP가 다른 IP의 조상인지 확인ipGraphExternalReadGas * averageAncestorIpCount * 2126000
getRoyaltyExt외부 호출을 통해 IP의 로열티 세부사항 조회varies by royalty policyLAP:189000, LRP:130200, other:1000
getRoyaltyStackExt외부 호출을 통해 IP의 로열티 스택 조회varies by royalty policyLAP:10500, LRP:126000, other:1000