Matetika, rehefa manomboka mianatra manoratra fifanarahana marani-tsaina ny olona, ny zavatra voalohany henony dia Solidity sy Ethereum. Izany koa no zavatra reko voalohany. Izany no ifantohan'ny ankamaroan'ny fampianarana, ary noho ny antony tsara. Ny solidity dia nahafahana nanoratra programa izay miaina amin'ny blockchain, ary i Ethereum no lasa toerana nanombohan'ny olona maro. Saingy tsy ny Solidity irery no fiteny fifanarahana marani-tsaina any. Ary ny Ethereum dia tsy ny blockchain irery ihany no manohana ny fampiharana tsy miankina. Misy ihany koa , fanafohezana . Noforonin'ny Telegram izy io, saingy rojom-piarahamonina entin'ny vondrom-piarahamonina. Izy io dia haingana, maivana ary mitantana zavatra hafa kely amin'ny mety ho zatra amin'ny Ethereum. Tafiditra ao anatin'izany ny fomba fanoratana fifanarahana marani-tsaina. Rehefa nanomboka nandinika ny antontan-taratasin'ny TON aho, dia nahita fiteny efatra samihafa aho hanoratana fifanarahana marani-tsaina: . Tsy hiditra lalina amin’ny efatra eto aho. ny TON ny The Open Network Tact, Tolk, FunC, ary Fift Ity torolalana ity dia mifantoka amin'ny fiteny Tact, ary ho hitantsika ny fomba ampiasana azy io mba hananganana fifanarahana ara-pifidianana fototra izay ahafahan'ny mpampiasa mandatsa-bato sy manamarina ny valiny amin'ny rojo. Nahoana aho no nanapa-kevitra ny hianatra mahay mandanjalanja? Ny ecosystem TON dia tena manohana fiteny maro, ny tsirairay amin'izy ireo dia manolotra tranga fampiasana samihafa, ny haavon'ny abstraction ary ny traikefan'ny mpamorona. Ity misy topimaso fohy momba ny tsirairay amin'izy ireo: no fiteny nentim-paharazana hanoratana fifanarahana marani-tsaina TON. Ambany izy io ary manome anao fifehezana tsara ny fomba fiasan'ny fifanarahanao eo ambanin'ny saron-tava. Mahery izy io, saingy midika koa izany fa mila mahatakatra ny fomba fiasan'ny TON Virtual Machine (TVM) ianao, ao anatin'izany ny foto-kevitra toy ny fanodinkodinana stack, ny fandrindrana fahatsiarovana ary ny fanatanterahana ny tanjona. Ny syntax dia somary mitovitovy amin'ny C, izay mety ho tsy mahazatra raha mbola tsy niasa tamin'io fomba fiteny io ianao taloha. FunC dia matetika ampiasaina miaraka amin'ny FunC. Fiteny mifototra amin'ny stack izy io izay matetika ampiasaina amin'ny fifandraisana mivantana amin'ny TVM ary ampiasaina amin'ny fametrahana, fametahana ary fanaovana kajy amin'ny rojo. Tsy ny fiteny atombokao matetika amin'ny fanoratana fifanarahana feno hendry, fa zava-dehibe amin'ny fizotran'ny fampandrosoana ankapobeny amin'ny TON. Fift dia fanampim-baovao vaovao izay mbola mivoatra. Avy amin'ny zavatra nangoniko, mikendry ny hanatsara ny fitaovana sy ny fampifanarahana amin'ny fiteny avo lenta izy io. Mampanantena izy io, saingy mbola tsy nekena na voarakitra an-tsoratra. Tolk dia fiteny avo lenta izay natao manokana hahatonga ny TON smart contract development ho mora idirana sy ho sariaka amin'ny developer. Ny Tact dia manamora ny fahasarotan'ny ambaratonga ambany ary mamela anao hifantoka amin'ny fanoratana ny lojikao amin'ny fomba madio sy mora vakiana. Ny syntax dia manakaiky kokoa ny zavatra hitanao ao amin'ny TypeScript na Solidity, izay manamora kokoa ny fanombohana nefa tsy mila mitsoraka lalina ao anatin'ny TVM. Ny Tact Ny Tact dia manome lalana haingana kokoa amin'ny fananganana sy fametrahana fifanarahana amin'ny TON blockchain. Fahatakarana ny fomba fiasan'ny Tact Alohan'ny hanombohantsika manoratra kaody dia zava-dehibe ny mahatakatra ny fomba firafitry ny fifanarahana smart Tact. Ny fifanarahana Tact mahazatra dia misy singa fototra vitsivitsy: fanakanana - Eto ianao no mamaritra ny anaran'ny fifanarahanao ary manambara ny fari-piadidiana rehetra. contract block - Izy io no manomboka ny fari-piainan'ny fifanarahana ary mametraka ny fepetra fanombohana ny fifanarahana. Ity sakana ity dia mandeha indray mandeha amin'ny fotoana fametrahana. init sakana - Toy ny mpihaino hetsika ireo. Mitantana ireo hafatra ho avy izy ireo ary mamaritra ny fihetsiky ny fifanarahanao amin'izy ireo. receive Fonctions getter ( ) – Fampiasa tsy vakiana fotsiny ireo izay ahafahan'ny mpampiasa na fifanarahana hafa manontany ny toetry ny fifanarahana nefa tsy manova izany. get fun Ny Tact dia mampiasa fifandraisana mifototra amin'ny hafatra, izany no fomba fiasan'ny fifandraisana rehetra amin'ny TON. Ny fifanarahana tsirairay dia mandray hafatra ary manodina azy amin'ny sakana azy manokana. Ity rafitra mifototra amin'ny hafatra ity dia manampy amin'ny fandaminana ny lojikan'ny fifanarahana amin'ny fomba modular sy azo karakaraina. receive Andao hampihatra izany amin'ny ohatra tena izy amin'ny fananganana fifanarahana fifidianana tsotra. Manangana ny fifanekenao amin'ny fifidianana voalohany amin'ny Tact (Mampiasa ny IDE Web TON) Ato amin'ity fizarana ity dia handeha amin'ny fomba fampiharana rafitra fifidianana fototra amin'ny fampiasana ny Tact isika. Ity fifanarahana fandatsaham-bato ity dia ahafahan'ny mpampiasa mifidy ireo kandidà efa voafaritra mialoha ary manara-maso ny isan'ny vato azon'ny kandidà tsirairay. Hanao ny zava-drehetra ao anatin'ny TON Web IDE izahay, izay fitaovana ao anaty navigateur ahafahanao manoratra, manangana, ary mitsapa ny fifanarahanao nefa tsy mametraka na inona na inona eo an-toerana. Dingana 1 - Sokafy ny TON Web IDE Mandehana any amin'ny . https://ide.ton.org Tsindrio . Ao amin'ny popup: Create a new project Ataovy azo antoka fa ao amin'ny ny fiteny. Tact Safidio ny ho modelyo. Contract Blank Lazao anarana toy ny ny tetikasanao. VotingContract Tsindrio . + Mamorona Dingana 2 - Manoratra ny fehezan-dalàna momba ny fifanekena Aorian'ny famoronana ny tetikasanao dia sokafy ny rakitra . Hahita fanamboarana boilerplate ianao: main.tact // Import the Deployable trait so the contract can be deployed easily import "@stdlib/deploy"; contract BlankContract with Deployable { init() { } } ilaina amin'ny fametrahana ny asa ary tsy tokony esorina amin'ny code. import "@stdlib/deploy"; no anaran'ny toerana misy anao. BlankContract Ny sakana dia mandeha indray mandeha ihany rehefa apetraka ny fifanarahana ary ampiasaina hanombohana ny fari-piadidiana. init() Andeha hojerentsika izao ny kaodinay. Voalohany, hamaritra ny rafitry ny hafatra momba ny fifidianana isika: // Import the Deployable trait so the contract can be deployed easily import "@stdlib/deploy"; // Define a message structure for voting message Vote { candidate: Int as uint32; // 1 = Alice, 2 = Bob } Ity ny hafatra Vote. Rehefa misy olona te hifidy, dia handefa hafatra amin'ny fifanarahana misy laharana izy ireo: 1 ho an'i Alice 2 ho an'i Bob Mampiasa an'io rafitra io ny Tact mba hikarakarana ny latsa-bato miditra sy hanapahana izay kandidà mahazo ny hevitra. Manaraka izany, hametraka ny fifanarahanay izahay ary hampiditra fari-piadidiam-panjakana roa hanara-maso ny vaton'ny kandidà tsirairay: ... contract VotingContract with Deployable { // State variables to track votes votesAlice: Int as uint32; votesBob: Int as uint32; Tao anatin'ny fifanarahana dia namaritra fari-pahaizana roa izahay: : mitahiry ny isan'ny vato azon'i Alice. votesAlice : mitahiry ny isan'ny vato azon'i Bob. votesBob Hanomboka amin'ny aotra ireo fanisam-bato ireo ao anatin'ny bloc mba hametrahana ny fiandohan'ny fifanarahana rehefa apetraka voalohany. init init() { self.votesAlice = 0; self.votesBob = 0; } Ny sakana dia mandeha , rehefa apetraka ny fifanarahana ary mametraka ny isan'ny vato ho aotra. init indray mandeha ihany Tonga izao ny lojika. Rehefa misy latsa-bato alefa dia tiantsika ny hanamarinan'ny fifanarahana hoe iza no latsa-bato ary hampitombo ny isan'ny vato marina. // Handle vote messages receive(msg: Vote) { if (msg.candidate == 1) { self.votesAlice += 1; } else if (msg.candidate == 2) { self.votesBob += 1; } } Ka rehefa misy vato azo: Raha 1 ny dia ampiana +1 ny msg.candidate votesAlice Raha 2 ny dia ampiana +1 ny msg.candidate votesBob Farany, hamorona fonction getter izahay mba ahafahan'ny olona manontany ny fanisam-bato ho an'ny kandidà tsirairay nefa tsy manova ny toetry ny fifanarahana. // Getter for Alice's votes get fun getVotesForAlice(): Int { return self.votesAlice; } // Getter for Bob's votes get fun getVotesForBob(): Int { return self.votesBob; } } Ireo fonction getter roa ireo dia aoka hojerentsika ny isan'ny vato azon'ny kandidà tsirairay nefa tsy misy fanovana na inona na inona ao amin'ny fifanarahana. Hetsika vakiana fotsiny io. Ity ambany ity ny fehezan-dalàna momba ny fifanaraham-pifidianana feno: import "@stdlib/deploy"; // Define a message structure for voting message Vote { candidate: Int as uint32; // 1 = Alice, 2 = Bob } contract VotingContract with Deployable { // State variables to track votes votesAlice: Int as uint32; votesBob: Int as uint32; init() { self.votesAlice = 0; self.votesBob = 0; } // Handle vote messages receive(msg: Vote) { if (msg.candidate == 1) { self.votesAlice += 1; } else if (msg.candidate == 2) { self.votesBob += 1; } } // Getter for Alice's votes get fun getVotesForAlice(): Int { return self.votesAlice; } // Getter for Bob's votes get fun getVotesForBob(): Int { return self.votesBob; } } Dingana 4 - Manangana sy mametraka ny fifanarahana Ao amin'ny sisiny havia, tsindrio ny Build & Deploy Eo ambanin'ny , ataovy azo antoka fa voafantina ny . Tontolo iainana Sandbox Ataovy azo antoka fa voafantina ny ary tsindrio . Izany dia hanangona ny fifanarahanao ary hanamarina raha misy hadisoana na olana amin'ny fehezan-dalànao. main.tact ny Build Manaraka, ataovy azo antoka fa voafantina ao amin'ny dropdown satria io no tena fifanarahanao, fa tsy ny toerana misy anao. Raha tsy hitanao dia tsindrio mba hitahiry ny rakitrao mba ho hitan'ny IDE ny fifanarahana nohavaozina. ny VotingContract Ctrl + S Avy eo tsindrio . Raha mandeha tsara ny zava-drehetra, dia hahita hafatra fanamafisana ianao ao amin'ny diary mampiseho fa nahomby ny fifanarahanao tamin'ny Sandbox. ReDeploy Dingana 5 - Mifandraisa amin'ny fifanarahana Rehefa voapetraka dia midira midina dia hahita fizarana roa ianao: , Getters: getVotesForAlice getVotesForBob Mpandray: Vote Ao amin'ny fizarana , ampidiro ao amin'ny saha fampidirana ary tsindrio Vao nifidy an'i Alice ianao! Azonao atao ny mamerina izany mba handatsa-bato bebe kokoa. Raha handatsa-bato: Vote 1 candidate Alefaso. : Kitiho eo ambanin'ny ary jereo ny tontolon'ny hahitanao ny isan'ny vato Raha hijery ny fanisam-bato ny Antso getVotesForAlice logs Ataovy toy izany koa ho an'i Bob amin'ny alàlan'ny fandefasana ao amin'ny sahan'ny , dia jereo 2 candidate getVotesForBob Nandritra ny andrana nataoko dia nifidy an'i Alice aho ary i Bob, ary tena nasehon'ny fiasan'ny getter izany. in-9 in-6 💭 Hevitra farany: Tohizo ny fanorenana, tohizo ny fikarohana 🙌 Arahabaina raha mamaky hatramin'ny farany ianao! Ankehitriny rehefa hitanao ny fomba fiasan'ny fifanarahana fifidianana tsotra ao amin'ny Tact, dia nanao ny dingana voalohany ianao tamin'ny fampivoarana fifanarahana hendry momba ny TON. Ity fifanarahana ity dia mety ho fototra, fa ny rafitra sy ny foto-kevitra dia mihatra amin'ny lojika sarotra kokoa ihany koa. Raha te-hanandrana hatrany ianao dia andramo hanitarana ity fifanarahana ity na hikaroka môdely efa namboarina hafa avy amin'ny . Ny TON Web IDE dia manamora ihany koa ny manandrana tranga fampiasana samihafa ary miaraka amin'ny môdely koa izy io mba hanampiana anao hanorina sy hianatra haingana kokoa. https://tact-by-example.org/all Koa mandehana, manitsy, andramo, manangana zavatra tsara kokoa.