ERGO
Teknik Mimari

Ajan Ödeme Yığını: Referans Mimari

Dört zincir üstü ilkel. Üç birleştirilebilir akış. Tek bir API çağrısından tam bir topluluk para birimine kadar, Ergo üzerinde ajandan ajana ödemeler oluşturmak için ihtiyacınız olan her şey.

Dört İlkel

Reserve · Note · Tracker · Predicate

Reserve

Sermaye desteği

ERG veya tokenleri teminat olarak tutan zincir üstü sözleşme. Herkes reserve oranını istediği zaman doğrulayabilir. Reserve bankadır — aracı yoktur.

  • ERG / yerel tokenler tutar
  • Her zaman denetlenebilir
  • Note ihracını 1:1 veya kısmi olarak destekler
  • İtfa sözleşme ile zorunlu kılınır
ErgoScript
{
  // Reserve contract: allow withdrawal only
  // if redemption note is burned
  val noteBox = INPUTS(1)
  val burnCheck = noteBox.tokens.size == 0
  sigmaProp(burnCheck && SELF.R4[Long].get > 0)
}

Note

Programlanabilir IOU

Bir Reserve karşısında talebi temsil eden hamiline ait token. Note transferedilebilir, bölünebilir ve itfa edilebilir. Kabul Predicate kimin Note alıp itfa edebileceğini tanımlar.

  • Hamiline ait araç — kimlik gerekmez
  • Eşler arası transfer edilebilir
  • Reserve sözleşmesine karşı itfa edilebilir
  • Herhangi bir tokenle nominal değer
ErgoScript
{
  // Note: transferable by holder,
  // redeemable against reserve
  val holder = SELF.R4[GroupElement].get
  val isHolder = proveDlog(holder)
  val isRedemption = INPUTS.exists { box =>
    box.tokens.exists(_._1 == reserveId)
  }
  isHolder || isRedemption
}

Tracker

Zincir üstü muhasebe

Bir Reserve den ihraç edilen tüm Note lar genelinde kümülatif bakiyeleri, kredi kullanımını ve itfa geçmişini izler. Herkesin doğrulayabileceği halka açık bir defter olarak düşünün.

  • Toplam ihraç vs itfa edileni izler
  • Kredi limitlerini uygular
  • Halka açık denetlenebilir
  • Diğer sözleşmelerle birleştirilebilir
ErgoScript
{
  // Tracker: ensure running total
  // doesn't exceed credit limit
  val limit = SELF.R4[Long].get
  val used  = SELF.R5[Long].get
  val newUsed = used + INPUTS(0).value
  sigmaProp(newUsed <= limit)
}

Acceptance Predicate

Programlanabilir güven kuralı

Bir ajanın Note u ödeme olarak kabul edeceği koşul. Koşullar görev hash doğrulaması, son tarih kontrolleri, kimlik kanıtları veya herhangi bir zincir üstü veriyi içerebilir.

  • Rastgele kabul koşulları
  • Görev hash doğrulaması
  • Son tarih uygulaması
  • Sigma kanıtlarıyla birleştirilebilir
ErgoScript
{
  // Accept note only if:
  // 1. Task hash matches R4
  // 2. Deadline not passed
  val taskHash  = SELF.R4[Coll[Byte]].get
  val deadline  = SELF.R5[Int].get
  val inputHash = INPUTS(0).R4[Coll[Byte]].get
  val onTime    = HEIGHT <= deadline
  sigmaProp(taskHash == inputHash && onTime)
}

Örnek Akışlar

Üç birleştirilebilir akış

Akış A: Ajan API çağrısı satın alır

Bir çağrı. Bir kanıt. Kalıcı hesap yok.

  1. 1

    Ajan Note oluşturur

    0.001 ERG nominal değer, R4 te sağlayıcı adresi

  2. 2

    Sağlayıcı Predicate i kontrol eder

    Note değerini, Reserve desteğini, son tarihi doğrular

  3. 3

    Sağlayıcı yanıt iletir

    API sonucunu döndürür, Note u harcandı olarak işaretler

  4. 4

    Uzlaşma

    Note yakılır, ERG Reserve den sağlayıcıya serbest bırakılır

Fleet SDK (TypeScript)
// Fleet SDK: create a note for API payment
import { TransactionBuilder, OutputBuilder, SAFE_MIN_BOX_VALUE } from "@fleet-sdk/core"

const noteBox = new OutputBuilder(
  1_000_000n, // 0.001 ERG
  NOTE_CONTRACT_ADDRESS
)
  .setAdditionalRegisters({
    R4: SGroupElement(providerPubKey),  // recipient
    R5: SLong(BigInt(HEIGHT + 100)),    // deadline
    R6: SColl(SByte, taskHashBytes),    // task identifier
  })

const tx = new TransactionBuilder(currentHeight)
  .from(inputs)
  .to(noteBox)
  .sendChangeTo(agentAddress)
  .payMinFee()
  .build()

Akış B: Ajan krediyle öder

Reserve dağıtılır. Note lar ihraç edilir. Tracker izler.

  1. 1

    Reserve dağıt

    ERG yi kredi limiti ile Reserve sözleşmesine kilitle

  2. 2

    Note ları ihraç et

    Kredi limitine kadar Reserve e karşı Note oluştur

  3. 3

    Ajan Note ları harcar

    Note lar sağlayıcılara transfer edilir, Tracker güncellenir

  4. 4

    Otomatik uzlaşma

    Eşik aşıldığında Reserve ödenmemiş Note ları kapatır

Fleet SDK (TypeScript)
// Deploy a reserve with 10 ERG, 100 ERG credit limit
const reserveBox = new OutputBuilder(
  10_000_000_000n, // 10 ERG collateral
  RESERVE_CONTRACT_ADDRESS
)
  .setAdditionalRegisters({
    R4: SLong(100_000_000_000n), // 100 ERG credit limit
    R5: SLong(0n),               // issued so far
    R6: SGroupElement(ownerKey), // reserve controller
  })

// Issue a note against the reserve
const noteBox = new OutputBuilder(
  1_000_000_000n, // 1 ERG face value
  NOTE_CONTRACT_ADDRESS
)
  .setAdditionalRegisters({
    R4: SGroupElement(agentKey),  // holder
    R5: SColl(SByte, reserveId),  // backing reserve
  })

Akış C: Topluluk Reserve + Tracker

Yerel pazar yeri, hesaplama kooperatifi, ajan ağı.

  1. 1

    Topluluk Reserve dağıtır

    Topluluk üyeleri ERG yi havuzlar

  2. 2

    Topluluk Note ları ihraç edilir

    Üyeler katkılarıyla orantılı Note alır

  3. 3

    Yerel ticaret

    Note lar topluluk içinde kabul edilir, Predicate ler kuralları tanımlar

  4. 4

    İtfa

    Üyeler her zaman Reserve den ERG karşılığında Note ları itfa edebilir

Fleet SDK (TypeScript)
// Community reserve: multiple funders
const communityReserve = new OutputBuilder(
  TOTAL_POOLED_ERG,
  MULTISIG_RESERVE_CONTRACT
)
  .setAdditionalRegisters({
    R4: SColl(SGroupElement, memberKeys), // governance
    R5: SInt(3),                          // 3-of-5 threshold
    R6: SColl(SByte, communityTokenId),   // community token
  })

// Acceptance predicate: only members of community
const memberPredicate = `{
  val isMember = CONTEXT.dataInputs(0)
    .R4[Coll[GroupElement]].get
    .exists(pk => proveDlog(pk))
  sigmaProp(isMember)
}`

Mevcut durum

Yığın durumu

Beş katman canlı. İkisi açık problem. GitHub daki sohbete katılın — bunlar ajan parasındaki en ilginç çözülmemiş problemlerdir.

mainnet / testnet üzerinde canlı
Yakında
Açık araştırma problemi
Ergo testnet musluğu
Fleet SDK (TypeScript)
AppKit (JVM)
sigma-rust
ChainCash sunucusu (Note + Reserve)
Ergo Node REST API
agent-economy-starter deposu
yakında
Ajan kimlik katmanı
açık

Ajan mı inşa ediyorsunuz? Bizimle konuşun.

Tasarım oturumu ayırtın, kod incelemesi alın veya inşaatçı listesine katılın. 24 saat içinde yanıt vereceğiz.

Follow for daily updates