Node Architecture
Precompiles
Story Protocol의 실행 계층에 구현된 특수 스마트 계약
소개
프리컴파일된 계약은 블록체인의 실행 계층에 직접 구현된 특수 스마트 계약입니다. EVM 바이트코드를 실행하는 사용자 배포 스마트 계약과 달리, 프리컴파일된 계약은 복잡한 암호화 및 계산 작업에 대해 최적화된 네이티브 구현을 제공합니다. 이는 효율성을 크게 향상시키고 가스 비용을 줄입니다. 프리컴파일된 계약은 실행 클라이언트 내의 고정된 주소에 존재하며, 각 프리컴파일은 계산 복잡성에 따라 미리 정의된 가스 비용을 가지고 있어 예측 가능한 실행 수수료를 보장합니다.
Story Protocol은 두 가지 프리컴파일된 계약을 도입합니다:
p256Verify
프리컴파일은 secp256r1 타원 곡선에서의 서명 검증을 지원합니다.ipgraph
프리컴파일은 온체인 지적 재산 관리를 향상시킵니다.
또한, Story Protocol의 실행 계층은 모든 표준 EVM 프리컴파일된 계약을 지원하여 이더리움 기반 도구 및 애플리케이션과의 완전한 호환성을 보장합니다.
사전 컴파일된 계약
주소 | 기능 |
---|---|
byte1 | ecrecover - ECDSA 서명 복구 |
byte2 | sha256 - SHA-256 해시 계산 |
byte3 | ripemd160 - RIPEMD-160 해시 계산 |
byte4 | identity - 항등 함수 |
byte5 | modexp - 모듈러 지수 |
byte6 | bn256Add - BN256 타원 곡선 덧셈 |
byte7 | bn256ScalarMul - BN256 타원 곡선 스칼라 곱셈 |
byte8 | bn256Pairing - BN256 타원 곡선 페어링 검사 |
byte9 | blake2f - Blake2 해시 함수 |
byte10 | kzgPointEvaluation - KZG 다항식 약정 평가 |
byte0 | p256Verify - Secp256r1 서명 검증 |
byte1 | ipgraph - 지적 재산권 관리 |
p256Verify 사전 컴파일
자세한 내용은 RIP-7212를 참조하세요.
IPgraph 사전 컴파일
이 ipgraph
사전 컴파일은 가스 비용을 최소화하면서 IP 관계와 로열티 구조의 효율적인 쿼리와 수정을 가능하게 합니다.
이 사전 컴파일은 입력의 첫 4바이트인 함수 선택자를 기반으로 여러 기능을 제공합니다.
함수 선택자 | 설명 | 가스 계산 공식 | 가스 비용 |
---|---|---|---|
addParentIp | 부모 IP 기록 추가 | intrinsicGas + (ipGraphWriteGas * parentCount) | 1100보다 큼 |
hasParentIp | IP가 다른 IP의 부모인지 확인 | ipGraphReadGas * averageParentIpCount | 40 |
getParentIps | 부모 IP 검색 | ipGraphReadGas * averageParentIpCount | 40 |
getParentIpsCount | 부모 IP 수 가져오기 | ipGraphReadGas | 10 |
getAncestorIps | 조상 IP 검색 | ipGraphReadGas * averageAncestorIpCount * 2 | 600 |
getAncestorIpsCount | 조상 IP 수 가져오기 | ipGraphReadGas * averageParentIpCount * 2 | 80 |
hasAncestorIp | IP가 다른 IP의 조상인지 확인 | ipGraphReadGas * averageAncestorIpCount * 2 | 600 |
setRoyalty | IP의 로열티 세부 정보 설정 | ipGraphWriteGas | 1000 |
getRoyalty | IP의 로열티 세부 정보 검색 | varies by royalty policy | LAP:900, LRP:620, other:1000 |
getRoyaltyStack | IP의 로열티 스택 검색 | varies by royalty policy | LAP:50, LRP: 600, other:1000 |
hasParentIpExt | 외부 호출을 통해 IP가 다른 IP의 부모인지 확인 | ipGraphExternalReadGas * averageParentIpCount | 8400 |
getParentIpsExt | 외부 호출을 통해 부모 IP 검색 | ipGraphExternalReadGas * averageParentIpCount | 8400 |
getParentIpsCountExt | 외부 호출을 통해 부모 IP 수 가져오기 | ipGraphExternalReadGas | 2100 |
getAncestorIpsExt | 외부 호출을 통해 조상 IP 검색 | ipGraphExternalReadGas * averageAncestorIpCount * 2 | 126000 |
getAncestorIpsCountExt | 외부 호출을 통해 조상 IP 수 가져오기 | ipGraphExternalReadGas * averageParentIpCount * 2 | 16800 |
hasAncestorIpExt | 외부 호출을 통해 IP가 다른 IP의 조상인지 확인 | ipGraphExternalReadGas * averageAncestorIpCount * 2 | 126000 |
getRoyaltyExt | 외부 호출을 통해 IP의 로열티 세부 정보 검색 | varies by royalty policy | LAP:189000, LRP:130200, other:1000 |
getRoyaltyStackExt | 외부 호출을 통해 IP의 로열티 스택 검색 | varies by royalty policy | LAP:10500, LRP:126000, other:1000 |
로열티 정책에 대한 자세한 정보는 로열티 모듈을 참조하세요.