Transactions

Maaaring mag-invoke ang mga kliyente ng programs sa pamamagitan ng pagsusumite ng transaksyon sa isang cluster. Ang isang transaksyon ay maaaring magsama ng maraming instruction, ang bawat isa ay nagta-target ng sarili nitong programa. Kapag naisumite ang isang transaksyon, ipoproseso ng Solana Runtimeopen in new window ang mga instruction na ito sa pagkakasunud-sunod at atomically. Kung nabigo ang anumang bahagi ng isang pagtuturo, mabibigo ang buong transaksyon.

Facts

Fact Sheet

  • Ang mga instruction ay ang pinakapangunahing yunit ng pagpapatakbo sa Solana
  • Ang bawat instruction ay naglalaman ng:
    • Ang program_id ng nilalayon na programa
    • Isang hanay ng lahat ng account na nilalayon nitong basahin o sulatan
    • Isang instruction_data byte array na partikular sa nilalayon na programa
  • Maramihang mga instruction ay maaaring isama sa isang solong transaksyon
  • Ang bawat transaksyon ay naglalaman ng:
    • Isang hanay ng lahat ng account na nilalayon nitong basahin o sulatan
    • Isa o higit pang 'mga instruction'
    • Isang kamakailang blockhash
    • Isa o higit pang pirma
  • Ang mga instruction ay pinoproseso sa pagkakasunud-sunod at atomically
  • Kung nabigo ang anumang bahagi ng isang pagtuturo, mabibigo ang buong transaksyon.
  • Limitado ang mga transaksyon sa 1232 bytes

Deep Dive

Ang Solana Runtime ay nangangailangan ng parehong mga instruction at mga transaksyon upang tukuyin ang isang listahan ng lahat ng mga account na nilayon nilang basahin o sulatan. Sa pamamagitan ng pag-aatas sa mga account na ito nang maaga, ang runtime ay nagagawang iparallelize ang pagpapatupad sa lahat ng mga transaksyon.

Kapag isinumite ang isang transaksyon sa isang cluster, ipoproseso ng runtime ang mga instruction na ito sa pagkakasunud-sunod at atomically. Para sa bawat pagtuturo, bibigyang-kahulugan ng tatanggap na programa ang array ng data nito at gagana sa mga tinukoy nitong account. Matagumpay na babalik ang program o may error code. Kung ang isang error ay ibinalik, ang buong transaksyon ay mabibigo kaagad.

Ang anumang transaksyon na naglalayong i-debit ang isang account o baguhin ang data nito ay nangangailangan ng lagda ng may hawak ng account nito. Ang anumang account na babaguhin ay minarkahan bilang writable. Maaaring ma-kredito ang isang account nang walang pahintulot ng may-ari hangga't sinasaklaw ng nagbabayad ng transaction fee ang kinakailangang renta at mga bayarin sa transaksyon.

Bago isumite, ang lahat ng transaksyon ay dapat sumangguni sa isang recent blockhashopen in new window. Ginagamit ang blockhash upang maiwasan ang mga duplikasyon at alisin ang mga lipas na transaksyon. Ang maximum na edad ng blockhash ng isang transaksyon ay 150 block, o humigit-kumulang ~1 minuto 19 segundo mula sa oras ng pagsulat na ito.

Fees

Nangongolekta ang network ng Solana ng dalawang uri ng mga bayarin:

Sa Solana, ang mga bayarin sa transaksyon ay deterministiko: walang konsepto ng isang market ng bayad kung saan ang mga user ay maaaring magbayad ng mas mataas na mga bayarin upang mapataas ang kanilang mga pagkakataong mapabilang sa susunod na block. Sa oras ng pagsulat na ito, ang mga bayarin sa transaksyon ay tinutukoy lamang sa pamamagitan ng bilang ng mga kinakailangang lagda (ibig sabihin, lamports_per_signature), hindi sa dami ng mga mapagkukunang ginamit. Ito ay dahil kasalukuyang may hard cap na 1232 bytes sa lahat ng transaksyon.

Ang lahat ng mga transaksyon ay nangangailangan ng hindi bababa sa isang writable na account upang lagdaan ang transaksyon. Kapag naisumite na, ang nasusulat na signer account na unang naka-serialize ang magiging nagbabayad ng bayad. Babayaran ng account na ito ang halaga ng transaksyon hindi alintana kung magtagumpay o mabigo ang transaksyon. Kung ang nagbabayad ng bayad ay walang sapat na balanse upang bayaran ang bayad sa transaksyon, ang transaksyon ay ibababa.

Sa oras ng pagsulat na ito, 50% ng lahat ng bayarin sa transaksyon ay kinokolekta ng validator na gumagawa ng block, habang ang natitirang 50% ay sinusunog. Gumagana ang istrukturang ito upang mahikayat ang mga validator na iproseso ang pinakamaraming transaksyon hangga't maaari sa kanilang mga puwang sa iskedyul ng pinuno.

Other Resources

Last Updated:
Contributors: mh