<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Nebo</title>
        <link>https://paragraph.com/@nebo</link>
        <description>I'm Nebo</description>
        <lastBuildDate>Sun, 24 May 2026 09:44:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Web 3.0 არქიტექტურა]]></title>
            <link>https://paragraph.com/@nebo/web-3-0</link>
            <guid>HzpvHYwIC3bhSchHdlrp</guid>
            <pubDate>Wed, 14 Dec 2022 11:06:28 GMT</pubDate>
            <description><![CDATA[Web 3.0-ის, იგივე Dapp-ის (Decentralized Application) არქიტექტურა საკმაოდ განსხვავდება Web 2.0 აპლიკაციებისგან. მაგალითად ავიღოთ Medium, პლატფორმა სადაც ახლა ვიმყოფებით. ეს არის მარტივი Blog-ის ტიპის საიტი, რომელიც მომხმარებლებს საშუალებას აძლევს წერონ საკუთარი ან იკითხონ სხვისი სტატიები. რეალურად მარტივი Web 2.0 აპლიკაციის მიღმაც, საკმაოდ ბევრი რამ ხდება. ზედაპირულად განვიხილოთ Medium-ის არქიტექტურა.აუცილებლად უნდა არსებობდეს ადგილი (Database), სადაც ისეთი მონაცემები ინახება, როგორიც არის Us...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Web 3.0-ის, იგივე Dapp-ის (Decentralized Application) არქიტექტურა საკმაოდ განსხვავდება Web 2.0 აპლიკაციებისგან.</p><p>მაგალითად ავიღოთ Medium, პლატფორმა სადაც ახლა ვიმყოფებით. ეს არის მარტივი Blog-ის ტიპის საიტი, რომელიც მომხმარებლებს საშუალებას აძლევს წერონ საკუთარი ან იკითხონ სხვისი სტატიები.</p><p>რეალურად მარტივი Web 2.0 აპლიკაციის მიღმაც, საკმაოდ ბევრი რამ ხდება. ზედაპირულად განვიხილოთ Medium-ის არქიტექტურა.</p><ol><li><p>აუცილებლად უნდა არსებობდეს ადგილი (Database), სადაც ისეთი მონაცემები ინახება, როგორიც არის User-ები, Post-ები, Comment-ები, Like-ები და ასე შემდეგ.</p></li><li><p>უნდა არსებობდეს ბიზნეს ლოგიკა (Back-End) დაწერილი ისეთ პროგრამულ ენებზე როგორიც არის: Python, Node.js, Java, C#… ბიზნეს ლოგიკა მოიცავს User-ის ავტორიზაცია/რეგისტრაციას, Post-ის განთავსებას და ასე შემდეგ.</p></li><li><p>უნდა არსებობდეს ვიზუალი (Front-End) შექმნილი Js, HTML, CSS-ის დახმარებით. რაც თავის თავში მოიცავს თუ როგორ გამოიყურება საიტი და რა ხდება საიტზე განთავსებულ ელემენტზე დაჭერით.</p></li></ol><p>ხოლო თუ ამ ყველაფერს შევკრავთ, მივიღებთ, რომ კლიენტი ახდენს ქმედებას Front-End-ში, Front-End ესაუბრება Back-End-ს, ხოლო Back-End ესაუბრება Database-ს. მთლიანი ეს კოდი განთავსებულია ერთ ცენტრალიზებულ Web Server-ზე და მომხმარებლამდე მიდის ინტერნეტის საშუალებით.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>ეს ყველაფერი იცვლება. Blockchain-მა სრულიად სხვა მიმართულებით გაუხსნა გზა Web 3.0 აპლიკაციებს.</p><h2 id="h-ra-khdis-web-30-s-ganskhvavebuls" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">რა ხდის Web 3.0-ს განსხვავებულს</h2><p>Web 2.0 აპლიკაციებისგან განსხვავებით, Web 3.0 სრულიად გამორიცხავს შუამავლებს. არ არსებობს ცენტრალიზებული Database. არ არსებობს ერთი Web Server სადაც განთავსებულია კოდი.</p><p>ამის ნაცვლად შენ შეგიძლია გამოიყენო Blockchain აპლიკაციების შესაქმნელად დეცენტრალიზებულ გარემოში, რასაც ინტერნეტში ანონიმურად განთავსებული Node-ები უზრუნველყოფენ.</p><p>ასევე იმის ნაცვლად, რომ Medium-ის მსგავსი მარტივად კონტროლირებადი Back-End გქონდეს, Web 3.0-ში შეგიძლია შექმნა Smart Contract, რომელიც განსაზღვრავს შენი აპლიკაციის ლოგიკას და გაშვებული იქნება Blockchain-ში.</p><p>რაც შეეხება Front-End-ს, ის მეტწილად უცვლელი რჩება და ამის შესახებ მოგვიანებით ვისაუბრებთ.</p><p>ასე გამოიყურება Web 3.0 მარტივი არქიტექტურა:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-blockchain" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Blockchain</h2><p>Ethereum Blockchain-ს ხშირად მოიხსენიებენ, როგორც მსოფლიო კომპიუტერს. ამას განაპირებობებს გლობალურად მისი ხელმისაწვდომობა. Ethereum Blockchain-ს უზრუნველყოფს peer to peer ქსელში განთავსებული Node-ები.</p><p>შეგვიძლია ვთქვათ, რომ Ethereum Blockchain შექმნილია ყველასთვის და წვდომა შეუძლია ნებისმიერს, ის არასდროს იქნება ვინმე კონკრეტულის საკუთრებაში, თუმცა ამავდროულად ის ეკუთვნის ყველას ქსელში.</p><h2 id="h-smart-contract" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Smart Contract</h2><p>Smart Contract არის პროგრამა, რომელიც ეშვება Blockchain-ში და განსაზღვრავს ლოგიკას. Smart Contract-ები იწერება ისეთ High-Level ენებზე, როგორიც არის Solidity ან Vyper.</p><p>რადგან Smart Contract-ები გაშვებულია Blockchain-ში, ნებისმიერს აქვს საშუალება გამოიკვლიოს აპლიკაციის ლოგიკა.</p><h2 id="h-ethereum-virtual-machine-evm" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Ethereum Virtual Machine (EVM)</h2><p>EVM ასრულებს Smart Contract-ში აღწერილ ლოგიკას და უშვებს მას Blockchain-ში.</p><p>აუცილებელია ვთქვათ, რომ EVM-ს არ ესმის Solidity-სა და Vyper-ის მსგავსი High-Level ენები და საჭიროა კოდის კომპილირება.</p><h2 id="h-front-end" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Front-End</h2><p>როგორც აღვნიშნეთ, Front-End-ში განთავსებულია UI ლოგიკა და ასევე ის ახდენს კომუნიკაციას Smart Contract-ებთან.</p><p>Front-End-ისა და Smart Contract-ების კომუნიკაცია საკმაოდ დატვირთული თემაა და აუცილებელია გავშლაოთ.</p><h2 id="h-rogor-khdeba-komunikatsia-front-end-sa-da-smart-contract-ebs-shoris" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">როგორ ხდება კომუნიკაცია Front-End-სა და Smart Contract-ებს შორის.</h2><p>ჩვენი მიზანია Front-End-სა და Smart Contract-ს შორის კომუნიკაციით შესრულდეს ფუნქცია. თუმცა ამავდროულად არ უნდა დაგვავიწყდეს, რომ Smart Contract გაშვებულია Blockchain-ში, სადაც თითოეული Node ინახავს არსებულ მდგომარეობას.</p><p>შესაბამისად ჩვენ გვჭირდება მოვახდინოთ ცვლილება რომელიმე Node-ზე. რაც შემდეგ გავრცელდება მთელს ქსელზე.</p><p>არსებობს ტრანზაქციის გადაცემის ორი გზა:</p><ol><li><p>გაუშვა საკუთარი Node</p></li><li><p>გამოიყენო სერვისის სახით მოწოდებული Node-ები. (infura, Alchemy…)</p></li></ol><p>თუ გამოიყენებ Node პროვაიდერებს, საკმაოდ დიდ თავისტკივილს აიცილებ, რაც საკუთარი Node-ის გამართვასთან არის დაკავშირებული, ასევე Dapp-ის ზრდასთან ერთად საჭირო იქნება Node-ების დამატება. ინფრასტრუქტურის ზრდასთან ერთად საჭირო გახდება მუდმივი Devops ინჟინერი.</p><p>მოკლედ თავის ტკივილის ასაცილებლად უნდა გამოიყენოთ infura-სა დ Alchemy-ს მსგავსი Third Party Service-ები, რომლებსაც პროვაიდერებს (Providers) ეძახიან.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>მას შემდეგ, რაც პროვაიდერის მეშვეობით დაუკავშირდი Blockchain-ს, შენ გაქვს შესაძლებლობა წაიკითხო Blockchain-ში განთავსებული მონაცემები. თუმცა თუ გინდა, რომ ჩანაწერი გააკეთო Blockchain-ში მოგიწევს მანამდე Sign ტრანზაქცია განახორციელო Private Key-ს მეშვეობით.</p><p>მაგალითად წარმოვიდგინოთ, რომ ჩვენი Dapp მომხმარებელს საშუალებას აძლევს წაიკითხონ და დაწერონ Blog-ები. Front-End-ში იქნება ღილაკი, რომელიც მომხმარებელს მისცემს საშუალებას სრულად წაიკითხოს ნებისმიერი Blog. მაგრამ, როდესაც მომხმარებელს სურს თავად დაწეროს Blog და გაუშვას Blockchain-ში, ჩვენი Dapp მას ავტორიზაციას იგივე Sign-ს მოთხოვს საკუთარი Private Key-ს მეშვეობით. მხოლოდ ამის შემდეგ გაეშვება ტრანზაქცია Blockchain-ში. წინააღმდეგ შემთხვევაში Node დაბლოკავს მას.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Metamask არის ერთ-ერთი Signer, რომელიც უმარტივებს აპლიკაციას Key მენეჯმენტს. პროცესი მარტივია, Metamask ინახავს მომხმარებლის Private Key-ს Browser-ში. Front-End მიმართავს Metamask-ს და მომხმარებელი Metamask-ში ადასტურებს ტრანზაქციას.</p><h2 id="h-monatsemta-bazebi-blockchain-shi" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">მონაცემთა ბაზები Blockchain-ში</h2><p>Dapp-ის არქიტექტურა, რომელიც ჩვენ დავხატეთ ყველაფერს Blockchain-ში ინახავს. თუმცა პრაქტიკაში ყველაფრის Blockhain-ში შენახვა საკმაოდ ძვირია ნებისმიერი Network-ის შემთხვევაში.</p><p>გარდა ამისა არ არის მარტივი აუხსნა მომხმარებელს რომ მან უნდა გადაიხადოს თითოეული ქმედებისას.</p><p>ერთ-ერთი გამოსავალი ამ სიტუაციიდან არის დეცენტრალიზებული Off-Chain Storage-ები. (IPFS, Swarm)</p><p>ასე რომ ცენტრალიზებული ბაზისგან განსხვავებით, დეცენტრალიზებული Off Chain Storage-ები ანაწილებენ და ინახავენ მონაცემებს Peer to Peer ქსელში.</p><p>შესაბამისად დეცენტრალიზებულ Off Chain Storage-ებთან ერთად ჩვენი არქიტექტურა ასე გამოიყურება.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>დიაგრამაზე შენიშნავდით, რომ Front-End არსად არ არის შენახული. ეს იმიტომ, რომ შეგვიძლია Front-End AWS-ზე განვათავსოთ როგორც Web 2.0 აპლიკაციის შემთხვევაში. თუმცა ეს ქმნის ცენტრალიზებას. რა მოხდება თუ AWS-ზე წვდომა შეგვეზღუდება? (ძნელად წარმოსადგენია მაგრამ მაინც)</p><p>თუ სრულად დეცენტრალიზებული აპლიკაცია Dapp გვსურს მაშინ უმჯობესია Front-End-იც დეცენტრალიზებულ Off Chain Storage-ზე განთავსდეს.</p><p>შესაბამისად ჩვენი არქიტექტურა ოდნავ შეიცვლება.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-blockchain-tan-mimartvebi" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Blockchain-თან მიმართვები</h2><p>აქამდე მხოლოდ Blockchain-ში ჩანაწერის გაკეთებაზე ვსაუბრობდით, თუმცა როგორ უნდა წავიკითხოთ მონაცემები Blockchain-დან?</p><p>ამისთვის ორი გზა არსებობს:</p><h2 id="h-smart-contract-events" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Smart Contract Events</strong></h2><p>შეგვიძლია გამოვიყენოთ Web3.js Library იმისთვის რომ მივმართოთ და მოვუსმინოთ Smart Contract Event-ებს. შეგვიძლია მოვუსმინოთ კონკრეტულ Event-ს და მის პასუხს ყოველ ჯერზე, როდესაც ის გაეშვება.</p><h2 id="h-the-graph" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Graph</h2><p>Smart Contract Event-ები კარგია თუმცა, როდესაც უკვე გაშვებულ Smart Contract-ზე აღმოაჩენ, რომ გჭირდება Event მოგიწევს ახალი Smart Contract-ის გაშვება Blockchain-ში.</p><p>სწორედ აქ შემოდის The Graph.</p><p>The Graph არის Off Chain ინდექსირება, რომელიც აადვილებს მონაცემების მოთხოვნას Blockchain-ში.</p><p>The Graph საშუალებას გვაძლევს განვსაზღვროთ, რომელი Smart Contract-ის ინდექსირება გვსურს, რომელ Event-ებს მოვუსმინოთ და ასე შემდეგ.</p><p>Blockchain მონაცემების ინდექსირებით The Graph საშუალებას გვაძლევს მოვითხოვოთ On Chain მონაცემები დაბალი დაყოვნებით.</p><p>შესაბამისად განახლებული არქიტექტურა გამოიყურება ასე:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-shejameba" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">შეჯამება</h2><p>უმეტესობისთვის, ვისაც შეხება არ ქონია Web 3.0-თან რთული იქნება გაიგოს როგორ მუშაობს ეს ჯაჭვი. თუმცა ვიმედოვნებ ცოტათი მაინც შეგიქმნით წარმოდგენას თუ რასთან და როგორ არის დაკავშირებული Dapp-ის შექმნა.</p>]]></content:encoded>
            <author>nebo@newsletter.paragraph.com (Nebo)</author>
        </item>
    </channel>
</rss>