일곱 개의 컨트랙트. 하나의 수학.

프로토콜 전체는 일곱 개의 컨트랙트이며, 두 엔진은 모두 같은 방식으로 만들어져 있습니다. 바닥에 순수 수학 라이브러리를 두고, 실제로 동작하는 컨트랙트들이 그것을 import합니다. 그래서 어떤 숫자도 다시 정의되지 않고, 스스로 계산하지 않은 값을 신뢰하는 곳도 없습니다. 다섯 개가 애그리게이터를, 두 개가 스테이킹 엔진을 이룹니다. 아래의 모든 주소는 Base에 실제로 배포되어 검증된 것이며, 동일한 바이트코드가 Ethereum, Optimism, Arbitrum, Robinhood Chain에서 동작합니다(전체 매트릭스는 /verify 참조).

Aggregator Pentad (애그리게이터의 다섯 컨트랙트)

“다섯 개의 컨트랙트, 그중 하나는 나머지 넷이 import하는 순수 수학이다.” Core는 계산하고, Hub는 기억하고, Solver는 결정하고, Router는 정산하고, Quoter는 미리 보여줍니다. 각각은 단일하고 간결한 오류 경로만을 노출하여 revert 표면을 정상 경로만큼 읽기 쉽게 유지합니다.

BlazePhoenixCore순수 라이브러리 · 인라인되며 별도 주소 없음

Ω · 𝒟 · Φ · Ψ — 순수 수학 라이브러리, 상태 없음. 스토리지도, owner도, 업그레이드 경로도 없고 오직 함수만 있습니다. the Eightfold Dispatcher Ω, Deterministic Derivation 𝒟, the Iron Law Φ, the Vitality Field Ψ가 모두 순수 계산으로 여기에 놓여 있습니다. 나머지 네 컨트랙트가 이를 import하며, 수학은 다른 어디에서도 다시 정의되지 않습니다.

Hub0x428554DEe93A1B8B5Bc6Fd19adDAfe55106fc04C

Ψ · 레지스트리 — 베뉴 레지스트리와 활력장. 후보 풀 레지스트리(페어당 16 packed slots), 활력장, 브리지 토큰 집합을 ERC-7201 네임스페이스 아래에 보관하므로, 그 스토리지가 사용하는 쪽의 슬롯과 충돌하는 일은 결코 없습니다.

Solver0xB1902990260975dD4C89ad74B1f317bc100CB830

𝒰(route) — 읽기 경로 최적화기. 여러 경로에 걸쳐 메타 방정식을 최대화하는 순수 읽기 경로 최적화기이며, 스스로 유도할 수 없는 상태에는 손대지 않습니다. 결정할 뿐, 결코 정산하지 않습니다.

Router0x2a779f9Be49aac57495A8B6467Cc325a8a47Eb9f

Φ · execute — 원자적 실행, 자금을 움직이는 유일한 컨트랙트. 가치를 움직이는 단 하나의 컨트랙트이며, 호출자가 지정한 최소 출력 하한 아래에서 원자적으로 움직입니다. the Iron Law Φ의 하한을 온체인에서 다시 유도하므로, 오염된 프론트엔드가 그것을 낮출 수는 없습니다. 평시에는 아무것도 보유하지 않습니다.

Quoter0x4cEF0615614B212895F45Aa1D4833B16666E18d3

previewPlan — 오프체인 프리뷰 미러. previewPlan을 통해 오프체인 프리뷰용으로 Solver를 미러링하며, 구조상 Router가 실현할 것과 동일한 숫자를 만들어 냅니다. 견적이 곧 실행 로직입니다.

컨트랙트 5개.

Staking Dyad (스테이킹의 두 컨트랙트)

같은 규율을 프로토콜 자신의 자본에 적용한 것입니다. 순수 수학 라이브러리와, 그것을 import하는 엔진. 담보와 차입 자산이 같은 토큰(BZPX)이기 때문에 가격 오라클은 어디에도 존재하지 않으며, 공격 표면 하나가 통째로 구조적으로 부재합니다.

BlazePhoenixMathLib순수 라이브러리 · 인라인되며 별도 주소 없음

mulDiv · rawBalanceOf — 순수 수학 라이브러리, 인라인됨. 모든 비율 계산이 거쳐 가는 완전한 512-bit 곱셈 후 나눗셈과, 컨트랙트가 자기 자신의 담보 잔고를 직접 읽게 해 주는 staticcall인 rawBalanceOf를 담고 있습니다. 전부 internal이므로 엔진의 바이트코드에 인라인됩니다(별도 주소 없음). Core가 애그리게이터에 대해 갖는 관계와 정확히 같습니다.

BlazePhoenixStaking0x3f60C7aa0c36a78D200405feBE143d2Cf3fA0c77

conserves — 지급능력이 강제되는 엔진. 대부분의 프로토콜이 셋으로 나누어 구현하는 것 — 볼트, 대출 시장, 락 부스트 — 을 하나의 컨트랙트가 수행하며, 단일 UserInfo 레코드와 두 개의 누적기로 정합을 맞춥니다. 가치를 움직이는 모든 경로는 conserves 가드로 감싸여 있습니다. 180M BZPX가 16년에 걸쳐 2년마다 반감하는 곡선으로 배분되며, 지급능력은 대시보드의 표시값이 아니라 revert 조건입니다.

컨트랙트 2개.

각 엔진이 딛고 선 하나의 방정식

애그리게이터는 후보 경로들에 대해 단 하나의 목적함수를 최대화합니다. 순출력을 취하되, the Iron Law Φ의 하한을 통과한 경로에서만 취하고, 각 풀의 활력으로 가중합니다:

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mrow><mi>𝒰</mi><mo>(</mo><mi>route</mi><mo>)</mo><mo>=</mo><mi>𝟙</mi><mo>[</mo><msub><mi>y</mi><mtext>net</mtext></msub><mo>≥</mo><mi>Φ</mi><mo>·</mo><msub><mi>y</mi><mtext>quote</mtext></msub><mo>]</mo><mo>·</mo><msub><mi>y</mi><mtext>net</mtext></msub><mo>·</mo><munder><mo>∏</mo><mi>i</mi></munder><msubsup><mi>Ψ</mi><mi>i</mi><msub><mi>w</mi><mi>i</mi></msub></msubsup></mrow></math>

스테이킹 엔진은 the Master Conservation Identity(총량 보존 항등식) 위에 서 있습니다. 물리적 잔고가 원장이 갚아야 할 금액과 같다는 것을 conserves 가드가 트랜잭션마다 강제하므로, 지급불능 상태는 단지 관측 가능한 것이 아니라 도달 자체가 불가능합니다:

balanceOf(this) + totalBadDebt
  == (totalStaked − totalDebt) + rewardReserve + protocolReserve
     + (totalRewardDistributed − totalRewardsPaid)

체인에서 무료로 실시간 확인할 수 있습니다: /solvency (또는 isSolvent() · solvency() · auditInvariants()).

전부 직접 검증하십시오

여기에는 신뢰를 요구하는 것이 하나도 없습니다. 스테이킹 엔진은 지금 이 순간 가동 중이며 지급능력을 갖추고 있습니다:

cast call 0x3f60C7aa0c36a78D200405feBE143d2Cf3fA0c77 "isSolvent()(bool)" --rpc-url https://mainnet.base.org

코드 라이선스: 컨트랙트는 2030년까지 BUSL-1.1입니다 — 자유롭게 읽고, 감사하고, 검증하십시오. 프로덕션 사용에는 라이선스가 필요합니다. 복제하지 말고 파트너가 되십시오 ›

English (아키텍처 전체 페이지)