Arkkitehtuuri

Kora on Rust-workspace, joka koostuu kolmesta crate-paketista:

  • kora-lib sisältää ydinlogiikan ja RPC-palvelimen,
  • kora-cli rakentaa kora-binäärin, jota operaattorit ajavat, ja
  • kora-deploy on erikoistunut ohjelmien käyttöönottotyökalu, jolla on oma versiointinsa. Kaikki alla oleva sijaitsee hakemistossa crates/lib/src, ellei toisin mainita.

Pyynnön elinkaari

Alla oleva kaavio kuvaa transaktion yleisen kulun Koran läpi. Kutsupolun ymmärtäminen on tärkeää Kora-solmun konfiguroinnissa ja uusien ominaisuuksien lisäämisessä.

A transaction travels from the client app through the gateway, validation, plugins, and signing, before Kora either returns it or broadcasts it. Each stage is governed by a matching section of kora.toml or signers.toml.

Missä kukin vaihe sijaitsee

Kaavion vaiheLähdeAloituspiste
Yhdyskäytävärpc_server/server.rsrun_rpc_server
Välitysrpc_server/rpc.rsKoraRpc
Metodikohtainen logiikkarpc_server/method/yksi tiedosto kutakin JSON-RPC-metodia kohti
Validointivalidator/transaction_validator.rsTransactionValidator
Laajennuksetplugin/mod.rsTransactionPluginRunner
Allekirjoitussigner/solana-keychain-crate-paketin tukema

Kaksi muuta tiedostoa kannattaa tuntea: config.rs määrittelee koko kora.toml-skeeman, ja state.rs säilyttää deserialisoidun konfiguraation prosessin globaalissa tilassa.

RPC-palvelimen koodin lukeminen

rpc.rs on ohut välityskerros, jossa on yksi metodi kutakin JSON-RPC-päätepistettä kohti, ja se on nopein tapa nähdä koko API. Kunkin metodin logiikka on omassa tiedostossaan hakemistossa rpc_server/method/. Lue sign_transaction.rs alusta loppuun; muut allekirjoitusmetodit ovat sen muunnelmia.

Validaattorimoduulin koodin lukeminen

transaction_validator.rs ja transaction/instruction_util.rs sisältävät logiikan transaktioiden ja instruktioiden validointiin. Lisäksi hakemistossa on fee-payer-policy- turvallisuusominaisuuksien testit, jotka sijaitsevat yhtenä tiedostona kutakin rajattua ohjelmaa kohti hakemistossa validator/transaction_validator/fee_payer_policy_props/.

Tärkeitä käytäntöjä

Oletusvalidointi. Jokaisen [validation.fee_payer_policy]-osion lipun oletusarvo on false, ja policy-structeilla on #[serde(default)]. Tämä yhdistelmä on tarkoituksellinen: uuden rajatun instruktion lisääminen ei saa rikkoa olemassa olevan operaattorin konfiguraatiota, ja sen on päädyttävä estoon eikä vahingossa sallituksi. Säilytä molemmat, kun lisäät lipun.

Validoi aina resolvoitu transaktio, älä koskaan raakaa. Raaka VersionedTransaction paljastaa vain staattiset tiliavaimet, joten V0-transaktion validointi tai hinnoittelu sen pohjalta ohittaa hiljaa lookup-taulun tilit ja perii liian vähän. VersionedTransactionResolved::from_transaction resolvoi nämä osoitteet etukäteen, minkä vuoksi jokainen myöhempi vaihe ottaa vastaan resolvoidun tyypin.

Transaktiolaajennuksen lisääminen

Laajennukset toteuttavat TransactionPlugin-traitin tiedostossa plugin/mod.rs. Siinä on kaksi metodia: validate suoritetaan kunkin transaktion kohdalla allekirjoitusvirroissa, ja validate_config suoritetaan kerran käynnistyksen yhteydessä ja palauttaa virheet ja varoitukset operaattorille. PluginExecutionContext kertoo laajennukselle, mikä neljästä allekirjoitusmetodista sen kutsui.

TransactionPluginRunner::from_config tekee match-vertailun TransactionPluginType-tyyppiin, joka on määritelty tiedostossa config.rs. Uusi sisäänrakennettu laajennus tarkoittaa uutta varianttia siellä sekä uutta match-haaraa runnerissa. Kaksi tällä hetkellä mukana toimitettavaa laajennusta ovat gas_swap ja deploy_authority.

Testaus

Kora säilyttää konfiguraation prosessin globaalissa tilassa, joten tests/ määrittelee yhden [[test]]-kohteen kutakin vaihetta kohti, ja jokainen kohde käynnistää oman upotetun surfnetinsä sekä Kora-solmunsa, jotka alustetaan tyhjästä. Yksi konfiguraatio per binääri: uusi vaihe tarvitsee uuden kohteen, ei uutta moduulia olemassa olevaan.

cargo test -p tests --test <target>

Kaikki muu on kytketty justfile-tiedoston kautta. Lue se sen sijaan, että rakentaisit komennot käsin.

Is this page helpful?

Sisällysluettelo

Muokkaa sivua
© 2026 Solana Foundation. Kaikki oikeudet pidätetään.