Solidity 101 in Turkish: Updraft Study Session, Part 2

Cyfrin Updraft Solidity 101 Study Sessions — Turkish · 1:03:33

Build on the first Turkish Solidity session with Selçuk Koyuncu and Elif Hilal Kara. After an opening discussion, the workshop returns to SimpleStorage in Remix and explores deploying and calling contracts, contract addresses, factory-style creation and storing references to deployed instances. Follow the live coding and questions with Part 1 completed, or equivalent experience with a simple Solidity contract in Remix.

Speakers

Topics

From Cyfrin Updraft Solidity 101 Study Sessions — Turkish, hosted by Cyfrin.

Transcript

[Müzik] [Müzik] [Müzik] O kadar güzel ki bu şarkı var ya bu açılma şarkısı. Böyle bilmiyorum çok hoş geliyor bana.

Dinlemesi çok keyifli en azından öyle söyleyeyim. Evet iyi akşamlar. İyi akşamlar arkadaşlar. Hepinize merhabalar. O Baha Bey'i görüyorum. Burak Beyi görüyorum. Şuradan bir iyi akşamlar mesaj atalım. İyi akşamlar. İyi akşamlar. Merhaba Tuçe. Seni görmek çok güzel tatlışım burada. Hut tut. Merhaba. Merhaba. Merhaba. Hühü. Çok güzel. Keriman selam. Çok güzel arkadaşları görüyorum burada.

Hühü. Burak selam. Merhaba. İyi akşamlar. Nasılsınız arkadaşlar? Enteresan bir şey yapanınız oldu mu bu süre zarfında? Böyle iki hafta içerisinde hayatında çok enteresan bir gelişme olan var mı? Ya benim de başıma şöyle bir şey geldi falan diyen yok mu hiç? Hadi bakalım. Bekliyorum [Müzik] mesajlarınızı. Hiçbir minim mesaj yok arkadaşlar. Kimsenin hayatında bir şey

olmadı mı? İki hafta içerisinde iki hafta mı olmuş? Olmadı mı? 2 haftada birdi sanki. 12 13 gün oldu galiba. Maildeki link nasıl hata verir ya? Gerçekten mi? Eee, bir bakayım mı hemen? Senin için bakıyorum hemen. [Müzik] Burak harbiden kimsenin hayatında bir şey olmaması çok enteresan arkadaşlar.

Öncelikle sen kendinde ne oldu onu söyle bize. Hadi. E yok bir şey olmadı yani. Yok ben genel anlamda merak ediyorum. He senin arkanda kitaplık yok. Ne oldu kitaplığa? Kitaplığım burada aslında ya. Şey en yakın arkadaşım geldi de e biraz arkadaşlar. Zeynep geldi sadece çok. Evet. Albaydan. O işte şey içeride de o yüzden hani kapıyı. Dur neyse hadi senimi kıracağım. Bekleyin kapıyı örteyim geleyim. Şurada göstereyim kitaplığımı. He he. Geldim geri. Üt düt düt. Evdeyim yani onu soruyorsan. Evet. Havuzoda zaten yalandan kitaplığını gene görüyoruz. Güzel. O bir ekran görüntüsü.

Biz hepimiz biliyoruz. Aynen öyle. İşte bile YouTube kanalımı bilenler e bilirler bir kere. Canım arkadaşlarım öncelikle hepiniz hepiniz hoş geldiniz. Bu süre zarfında umuyorum ki hayatınızda güzel şeyler olmuştur. Evet maalesef ülkemiz kötü bir deprem. geçirdi ama çok şükür ki bir büyük bir kayıp olmadı. Yani onun için çok mutluyum. Hani böyle bir şey yaşanması için değil ama bir şey sonucunda kötü bir şey olmadığı için eee böyle bir şey söylemek istiyorum. İkincisi arkadaşlar şimdi önemli birkaç duyuru yapma zamanı sizlere. Öncelikle yarın şu anda İstanbul'dan katılan arkadaşlarım varsa şayet şu yarınki etkinliğimizin linki. Hala kaydolmayan varsa acele etsinler. Çünkü zaten çoktan listeyi, katılımcı listesini ilettim ama hani yine de belki görmeyen arkadaşlarım

varsa diyorlarsa ki ya ben unuttum, kaçırdım başvuruyu. Bu neymiş diyorsanız buna başvurun. İstanbul'da olacak. Eee başka başka başka Burak Demir Bek. Burak seni gördüm aslında bakarsan. Elif Hanım size şu an çok özel. Ah ah ya için dışım seni için beni yakar canım benim ya. var ya. Ben de tam az önce Selçuk ne kadar dertli olduğum hayatında ne kadar bir şeylerin yolda gitmediğini anlatıyordum. Yani diyeceğim o ki hep öyle gözükür. Özendiğimiz hayatlar hep çok güzel gözükür ama içine girdiğin zaman hiç öyle olmuyor ya. Güven bana yani. Ece canım Ece ya hoş geldin. Aa Ece seni yarın göreceğiz. Çok heyecanlıyım inşallah bakalım. Selam Ahmet. Yani diyeceğim o ki Ece hiç öyle

değil ya. Hiç öyle değil gerçekten değil. Hiç özel özelilecek gibi değil yani. Neyse eee bu bir. İkincisi eee yarınki etkinliğin linkini attım sizlere. Tamam mı? Eee yarın İstanbul'da gelecek arkadaşlarımı göreyim. Grup buraya yazabilirsiniz. Ecih gelecek. Onu biliyorum. Murat Selim. Murat gelecek galiba. Murat gelecek miydin? Ben artık sçuk insanları tanıdığım için hani onlar canım arkadaşlarım benim çünkü. Evet. Fındık anlamadım ama. Ha ben Ec yazmışım.

Fındık fıstık ece şey vardı ya Avrupa yakasında mıydı? Bir şarkı vardı sanırım Volkan'ın e işte şu kız arkadaşına yazmış olduğu şarkı. Fındık fıstık falan filan o tarz bir şey. Çok saçmaydı ama güzeldi. Her neyse arkadaşlar çok güzel bir haberim var sizlere. Yani biliyorsunuz çoktan ama bilmeyenler için söyleyeyim. Eee ya köpeklerin ismi harika. Çok güzel. Ece seninle tanışmayı sabırsızlıkla bekliyorum. Şu an Türkiye'de değil Murat ya. Canın sağ olsun. Seni inşallah bir sonrakinde bekleriz o zaman. Arkadaşlar size ne söyleyecektim? Şunu söyleyecektim canlarım. Bir dakikanızı rica edeceğim.

Heh. Şunu göndereceğim. Ankara Büyükşehir Belediyesi bizim eğitimi paylaşmış. Şok oldum yani gerçekten. Şuna bakar mısınız? Hani gerçekten çok şaşırdım. Orada birlikte yapacağız. Büyükşehir Belediyesi ile hani onlar eğitime destek verecekler birazcık. Yeme içme falan filan. Ondan sonra Ankara'daki etkinliğimiz için e bu tweet'ten başvuru yapmanız gerekiyor. Oradaki forumdan başvuru yapmanız gerekiyor. Haberiniz olsun dedim ve lafı eee aslında artık eğitimimize geçebiliriz gibi. Çünkü baktım ki kimsenin hayatında çok da şey bir şey olmuyor. Hani iyi kötü böyle hani birazcık konuşalım dedim ama kimse konuşmuyor. O yüzden devam edelim bence.

Ekranını paylaşıyorum senin yayın hazırsan. Tamamdır. Bugün bir tık hızlı bir dedik. Niye diyeceksiniz? Çünkü zaten yarın ders var. O yüzden sabah 500'te çıkmam gerekiyor. O yüzden biraz erken bitirelim. Ben erkenden kaçayım. Eee, o yüzden bugün erken bitirsek çok güzel olur. Bir saatte falan sizin için de uygun arkadaşlar. Ama tabii ki eğitimlerimizin son gelmiyor. Merak etmeyin. İnşallah. Aynen. Hadi bakalım. Paylaşıyorum. Gelsin. Tamam. Şimdi bugün ekranım geliyor mu bilmiyorum. Bakayım bir saniye. Evet, geliyor. Görünüyor. Presentation modu almıyorum.

Bu iyi yani yeterince. Okey. Şöyle biraz uzatayım. Eee, şimdi bugün yapacağımız şey bir tane kontrat yazacağız. Çok basit. Bu sayfanın kendi eğitim materyallerinin arasında da var bu kodlar. Oradan da bakabilirsiniz. Gitaptan da bakabilirsiniz. Yapabiliriz. Burada bizim anlatacağınız şey arkada neler oluyor, sorularınız varsa onlarla birlikte eee bunları çözümlemek olacak. O yüzden dediği gibi biraz genel çerçevede anlatacağız. Bunun devamında yapacağız. haftaya da sonraki haftaya da devam ettir ettire işte birkaç seri daha yaparız gibi görünüyor. Eee şöyle bir kod yazacağız.

Simple storage diye. İki tane fonksiyon olacak. Şu paylaştığım ekran eee aslında etkileşim ekranı yani son kullanıcıların eee bu kontratlaya etkileşmek isteyen kullanıcıların ekranda ne göreceği ile alakalı olan bir kod. E ondan sonra bunu biraz daha derinleştirip başka bir kontrat daha yazacağız. O kontratta factory yani bu simple strin factories yani bunu generate eden başka bir kontrat daha yazacağız. Bazılarınız zaten bunu biliyordur. Ondan sonra biraz daha detaya dalıp şu nedir şuna bakacağız. Bu bir işlemin logu. Logo birazcık kendi aramızda inceleyeceğiz.

Nedir ne değildir diye. Çok kısa bunu da anlatacağız ve daha sonra bitireceğiz. Ama şöyle bir şey oldu. Geçen gün Elif'le bir tane başka toplantıya girdik. Eee bir eğitime girdik. Orada arkadaşlar güzel sorular sordu. Yeni başlayanlar için bu da yeni başlayan eğitiminin bir devamı niteliğinde. Bazı temel kavramlarla ilgili ben biraz açıklama gereği hissettim açıkçası. Herkesin kafasına tam otursun. Konsept seviyesinde insanlar bunun ne olduğunu, smart kontratının ne olduğunu diye. Biraz da hikaye anlatmayı seviyorum. O yüzden buradan başlayarak eee biraz anlatımda bulunacağım. Evet. O yüzden şuraya geliyorum arkadaşlar. İlk önce şuradan başlayayım dedim.

Biz niye blockchain'e ihtiyaç diyoruz ya da nereden doğdu blockchain' olan ihtiyaç? Biraz geriden aldım ama hızlı gideceğim. Aklıma gelen iki tane temel fonksiyonu var bankaların. Daha önceki eski traditional finance yani eee geleneksel finans kurumlarının ve bankaların yaptıkları iki tane şey var. Bankaya bakarsanız öncelikle parayı save ediyor. Yani bu şey var, kasası var. Kasaya parayı koyuyorsunuz. Kimin kimde olduğu belli. Evde saklama gereği duymuyorsunuz. İkinci de parayı birinden birine aktarmak. Para transferi. İşte uluslararası anlamda bunun ismi Swift oluyor ya da EFT oluyor ya da hava oluyor. Bu işlemleri yapabilmek. Şimdi biz birazcık daha ikincisine yoğunlaşacağız. Transfering money, trade yani bu paranın transferi

ile ilgili olan kısımda ne oluyor? Şöyle bir şey oluyor. Bankaya niye bu anlamda ihtiyacımız var? Bankaya bize hakem olarak eee support verdiği için ihtiyaç duyuyoruz. Ona da ne diyoruz biz? konsensüs mekanizması yani uzlaştırma mekanizması oluyor. Konsensüs dediğimiz uzlaştırma. Bankalar bu anlamda centralized yani merkezi bir uzlaştırma mekanizması diyor ki eee bu paraya kim sahip? Bunun bilgisi var. Bu Selçuç'un parası mı? Elif'in parası mı? İkincisi, bu transfer eee geçerli mi? Yani Selçun olmayan parasını Elif'e transfer edemezsiniz. Benim bankadan 5.000 liram varsa Elif'e 10.000 L gönderemem. Yani bu transferin mantıklı olup olmadığını, e, geçerli olup olmadığının kontrolünü

de yapıyor. Bunu, e, validasyonunu yapıyor. Bu anlamda iki tarafı da konsensüs konsens eee uzlaştırma yapıyor. Şöyle yapalım. Paranın transferindeki adımlara şöyle bir bakalım. Diyor ki mesela burada bir şurada bir ok var. Şu benim bankadaki hesabım. Bu da arkadaşımın hesabı. Bu görüntüyü de bu arada chatp'ye çizdirdim. Yani bir transfer flowu yap dedim. bunu çıkarttı. Kendi hesabımdaki parayı eee arkadaşıma gönderken ilk önce bankayı kullanıyorum tabii ki. Daha sonra Cleaning House diye bir yere gidiyor. Bu Takas Bank. Takas Bank da aslında bu işlemin eee işte şeyine bakıyor. Eee nasıl söyleyeyim? governance'ına bakıyor. Eee,

valid olup olmadığını eee, uluslararası anlamda hem eee, ülke içerisinde hem ülke dışındaki transferleri inceleyebiliyor. Daha sonra arkadaşımın bankasına geçiyor para. Daha sonra arkadaşımın hesabına geçiyor. Bu aralarda bir uzlaşma gerekiyor. Bankayla, cleaning kaos'la, cleaning kaos'la arkadaşımın banka arasında. Bunların hepsi bir uzlaşma. Diyor ki bu alan okey mi? Satan okey mi? Bu aradaki clearing bunu anlıyor. Banka bunu yapıyor, bunu yani bir sürü arada bir aracı middlem dediğimiz bir şey var. Kurum var. Middlem bunun kontrolünü yapıyor ve uzlaştırıyor iki tarafı.

Şimdi bunun üzerine bir arkadaşımız da çıkıyor. Diyor ki para transferinin daha kolay olmalı diyor. Kendi cüzdan başka cüzlandan çok hızlı şekilde gidebilmeli diyor. Bunu da eee bir aracıya ihtiyaç duymadan, bir eee bir kuruma ihtiyaç duymadan nasıl yaparım diye düşünüyor. Bunu düşünen kişi de eee complete tam anlamda yapan kişi Satşi Nakamoto. Aslında bunu formülize eden, çözüm haline getiren kişi kendisi. Öyle biliyoruz biz. Burada da ne yapıyor? Sathi'nin yaptığı, Nakamato'nun yaptığı peer to peer electronic cash system diye bir şey çıkartıyor. Aslında

başlangıçtaki noktamız şu. Buraya nereden geldik? Diyor, "Transfer money, trade işlemini gerçekleştirmek. Bankanın yaptığı en önemli işi araya aracı girmeden, banka girmeden, bir başımızda beklemeden bu işlemi kişilerin arasında yapabilmek. Sonra adam düşünüyor tabii bunu nasıl yapabilirim diye. Ve adamın aklına şöyle bir şey geliyor. Olay aslında bu. Eee bunu biraz anlatacağım. Nedir ne değildir diye. Şimdi buradaki şey durum şu. Bu adamlar kendi alanında kağıt oynuyorlar.

Ben bu örneği sürekli veriyorum. Hoşuma da gidiyor. Şöyle oluyor. Bu kağıt oyununda kazanan kişiyi belirleyen biri kazandığı zaman bu belirleyen kişi şu arkadaki adam mıdır? Bu hakem midir? Yani diyor mu? Aa sen kazandın. Sen kazandın. Hayır sen kazandın. Bu uzlaşmayı sağlayan kişi bu adam mı? Bunu bir sorayım arkaya birileri yazsın cevaben. Evet bu adamdır ya da hayır bu adam değildir diye. Herkes bir dondu yani. Eee kendi aranızda okey oynayın ya da kağıt oynayın. bir şeyler yapın. Eee, bunun kararını veren kişi yancı değildir demiş arkadaş. Doğru.

Oyunun kendisidir demiş. Doğru. Yani arkadaki adam, şu yancı adam aslında banka. Sistemdeki banka bu. Bankaya bu oyunda ihtiyacımız yok. Bir hakime ihtiyacımız yok. Burada oyunun kendisi ve oyuncuların kendisi kendisi kendi arasında bir uzlaşmaya varabiliyor. Blockchain'de de sistem böyle ilerliyor. Konsensus mekanizması bir araca ihtiyaç duymuyor. Konsensüs mekanizmasını elinde tutulan blockchain'in kendisi buna karar veriyor. Oradaki oyuncular buna zaten agree oluyor. Agree'nin Türkçesi nedir? Elif agree derken şey dedik de eee fikir birliğine varıyorlar. Fikir birliğine varıyor. Aynen. Agree oluyorlar. Buraya kadar bir sorusu olan yoktur. Kafanızda da bir şeyler oturmuştur diye

düşünüyorum. Bundan sonraki adımda bir şey yazmış. Katılmak. Agree'ye katılmak demiş. Doğru katılıyor. Hani sana katılıyorum. Bak şimdi şöyle bir şey daha yapmış. Tamam. Biraz daha tarihsel kronolojik sırada gidelim. Bu Satşi Nakamoto'nun Bitcoin pe electronic cash sistem adına verdiği makaleye bakarak bu protokole bakarak bu bir rule seti. Yani bu kitapta diyor ki şöyle şöyle yaparsan, şöyle şöyle adımları uygularsan, şu çözümü uygularsan eee eee eline bir elektronik para transfer sistemi elde ediyorsun.

Güvenilir bir sistem elde ediyorsun diyor. Bunu gerçekledikleri şeyin ismi de yapının ismi de bu kitapta yazan kuralları gerçekledikleri yapının ismi de blockchain de Bitcoin. Hani blockchain bunun e kavramsal ismi Bitcoin'de bunun gerçekleştirildiği bir tane örneği. Bitcoin diye bir tane network yapıyorlar. Satş kendisi yapıyor bu network. Genesis block'la başlıyor, sonra devam ediyor gidiyor. İlk initiate ediyor, sonra bırakıyor. Bu Bitcoin network'ündeki önemli olan şey decentralized ledger olması. Yani dağıtık bir e ledger'ın Türkçesi nedir Elif? Eee, leder. Hesap defteri. Defter.

Hesap defteri. Aynen. Hay defteri. Yani burada diyor ki hani az önce dedik ya Selçuk Elif'e para gönderecek ama 5.000 L havası varsa 10.000 L gönderemez. Yani o hesabın valid olduğunu, o transaction, o havalenin doğruluğundan emin olmak zorunda. Bunu kontrol etmek zorunda. Bu transferini doğru şekilde yapmalı. Yani 5.000 L gönderince 4.000 gitmemeli. 5 ise 5 o gitmeli. Çok özür dilerek bir şey diyebilir miyim? Hı hı. Sağ olasın. Eee, normalde de zaten arkadaşlar böyle bir şey geçmişte olduğu için mesela David işte kör imza projesinde ya da işte 1990'larda bu çözülmeye çalışılan bir sorundu zaten. Double spending eee, problemi olarak da bilinir aynı zamanda.

Hani mesela şu Aynen Burak eee sizin de mesela şu anda kullanmış olduğumuz bütün bankacılık sisteminde de aynı şey var. Yani hani mesela birbirimize para gönderdiğimiz zaman bahadan o paranın çıktığı ve Bura'a gittiği konusunda bankaların ya da işte tüm eee ulusal ve uluslararası eee finans birimlerinin de haberi olması için bir mutabakat sistemi zaten çoktan var. Yani konsensus dediğimiz bu mutabakat sistemi ya da bu double spending sadece eee blockchain ekosisteminin kriptonun kendisinde yok. Onu söylemek istiyorum. sadece devam edebilirsin. Aynen. Daha sonra bunu gerçekledikten sonra bu arada blockchain'in kendisine bir çözüm diye anlatmıştım. Eee, bir solution, bir sürü teknolojinin bir arada tanımlandığı, uçtan uca farklı teknolojileri bir araya

getiren, orkestre eden, onları bir arada sunan bir çözüm. Bu çözümü Bitcoin network'ünde gerçekleştiriyorlar ve bunun çalıştığını gösteriyorlar. Diyorlar ki artık A kişi B kişisine bankadaki gibi parayı gönderebiliyor. Aracı kurum yok. Bitcoin network'ün kendisi ve o Bitcoin network'ündeki nodlar, şeyler, minerlar bunu valide ediyor. Yani okeyliyor, garantisini veriyor ve bu sistemin güvenliğini, kriptografisiyle birlikte işte diğer teknolojiyle konsens mekanizmasıyla, proof of work'üyle vesaire bir ekonomi haline de getirip çalışırlığı kanıtlanıyor ve bugüne kadar sorunsuz şekilde geliyor. Şimdiye kadar hacklenememiş, herhangi bir sorun

olmamış, değeri gittikçe artan önemli bir sistem. Burada ne yapıyorsun? bir e değeri eee menkul değeri başka bir yere bir coin'i, bir Bitcoin'i başka bir yere gönderebiliyorsun. Burada herhangi bir sorun yaşayamıyorsun. Kimse kimseyi aldatamıyor. Kimse kimseye fazla gönderemiyor. Eksik gönderemiyor. Borçlanamıyor. Yani neyse o accür bir şekilde şeffaf ama eee rigit. Rigite ne diyebiliriz? Olduğu gibi yapısal olarak sağlam bir şekilde bu işlemleri gerçekleştirebiliyor. Bu kanıtlandı. Ama daha sonra şöyle bir şey çıkıyor. Diyorlar ki biz burada sadece birbirimize coin göndermeyelim. Yani bir Bitcoin göndermeyelim. Değer, menkul değer göndermeyelim. Aynı zamanda biz buraya başka şeyler de yapabiliriz diyor. Yani dağıtığı sistemde biz bunu

yapabiliyorsak diyor Vitalin'in ortaya attığı bir fikirin devamında yeni bir bunun üzerine inşa edilmiş yeni bir konsept ortaya çıkıyor. O konseptin ismine de biz eee Etherium diyoruz. EBM based blockchain sadece Etherium değil EBM based diyoruz. Buradaki olay da şu. Dağıtık olan sistem sadece coinin ya da o asetin o varlığın kime ait olduğunu belirtmesin. Y bunun takibini tutmasın. Aynı zamanda bu coinler çalışabilir programlarmış gibi de olabilsin. Yani coinin yerine program koyuyorsunuz.

Bu ilk başta biraz garip gelebilir ama oradaki durum şu. Siz eee herhangi bir eee fikrinizi kodlaştırarak yazılım haline getirip onu herkese ulaşılabilir kılıp onun güvenliğini sağlayıp onun çalışma mekanizmasını eee simüle edip var olan bir Bitcoinmiş gibi programı da böyle tanımlayabilirseniz adam bunun mantıksal şeyini yapıyor, çıkarımını yapıyor. Müthiş bir güce kavuşuyorsunuz. Müthiş bir olanağa kavuşuyorsunuz. Yani Bitcoin sadece menkulü, aseti bir yerden bir yere gönderirken o bilgiyi tutarken bir lederken, bir defterik biren, defterken defterik

birken Etherium ve buna benzeyen diğer blockchain'ler decentralized computing yapıyor. Yani ledger değil aynı zamanda birer hesaplama makinesi ama dağıtık hesaplama makines mekanizması görevi görüyorlar. Daha sonra bunun eee kavramsal altyapısı yapıldıktan sonra birçok eee şey oluşturuluyor. E blockchain EVM based blockchain oluştur EVM Etherium virtual machine demek. Yani Etherium ve o aileden gelen diğer eee blockchain'ler bu kapasiteye sahip. Sadece değer tutmuyorlar. Aynı zamanda programda çalıştırabiliyorlar. Bulutta ya da işte blockta ya da chain'de ne derseniz orada yukarıda bir yerde bunu çalıştırabiliyorlar. Bunun güvenliğini

de aynen Bitcoin'de olduğu gibi güvenliğini sağlayabiliyorlar. Böyle bir sistem. Devamına geleyim. Ya bu ben önemli olduğunu düşündüğüm bir nokta olduğu için buraya highlight ettim. Şimdi bu ikisi arasındaki farkı biraz daha açalım. EVM5 blockchain ve Bitcoin arasındaki farklara biraz daha bakalım. Şöyle bir karşılaştırma var. Diyor ki, "Etheryum ekosistemi ve Bitcoin'de neler oluyor?" Bitcoin'de sadece neler var? You can transfer it out of the exchange. Yani değiş dokuş için kullanabilirsin. E volta ne kadar para var, ne kadar coin var, ne var ona bakabilirsin. Eee, işte alıp verebilirsin. Yani bunu sadece bununla yapabiliyorsun. Ama burada Etherium ekosisteminde bir sürü şey var. Daha

devamı var. Bunun nedeni de çünkü artık blockchain'e programlar koyabiliyorsun. Programları blockchain'de koşturabiliyorsun. Böyle bir yapısı var. Ve bizim yapacağımız şey de aslında bu programların nasıl yazıldığını öğrenmek. Şu an burada yaptığımız solidity diliyle bu programcıkları hazırlıyoruz. Bunlara da biz smart kontrat diyoruz. Temelde bu smart kontratları hazırlayarak, bu programları hazırlayarak blockchain'e koşturabiliyoruz. Bu da bize müthiş avantaj sağlıyor. Şimdi bir örnek daha vereyim. Bitcoin ve Etheryum arasındaki fark. Bitcoin şuna yalın tak ateş ediyor büiyüyor ama işte Etherium biraz daha sofistike değişik şeyler yapıyor. Hoşuma gittiği için koydum onu.

Yine bir mem var burada. Burada da diyor ki işte alttaki Bitcoin meetup'ında insanlar bir araya geldiklerinde diyor ki benim Bitcoin'im var. Benim de var diyor ama Etherium Meetup'ında neler yapabildiklerini anlatıyorlar. Diyor ki işte müzik gönderdim işte bilmem ne yaptım. Ondan sonra Difi'ya gittim. Para kazandım, para kaybettim. Bir şeyler tanımladım. Un Swap'ta compound yaptım vesaire vesaire. Bir sürü bir sürü bir sürü şey söyleyebiliyor. Eee işte oyun oynadım diyor. Do you want to play Gods Unchained? İşte burada sky the limit.

Burada e bir full flexibility sağlıyor. Etherium EVM sayesinde bunu. EVM ismini çok fazla duyacaksınız. Şurada EVM based dedik ya. Etherium virtual machine demek. Virtual machine demek şu demek. E orada sanal bir bilgisayar var demek. Diyor ki Etherium'un sanal bilgisayarını koyuyorsunuz blockchain üzerinde. Yazılımları o koşturuyor tepede. Arada bir katman sağlıyor. Mantıksal katman. Bu sayede bunu yapabiliyoruz. Arada sorular geliyor galiba Elif. Onlara bir bakalım istersen. Göremiyorum ama bakıyorum. Bitcoin'de ilkelde o smart kontraklar yok mu? Bildiğimiz anlamda yok. Atasoy hocam. Yani mesela şu anki bizim Etherium'u tanıttığımız e Etheryum Virtual Machine'i tanıttığımız ST ile yazılmış akıllı kontratlar var ya

bunların aynısı şeklinde Bitcoin'deki şeyler akıllı kontratlar bu şekilde değiller. Onlarınki daha farklı. Hani ne diyor programlama dilinin adı? Eee bir şeyle yazılıyorlar. Hani bir ara Bitcoin ordinerleriyle çok meşhur oldu. Script ile yazılıyorlar. Ya Bitcoin scripti gibi bir şeydi. Ama dediğim gibi bu bizim sandığımız akıllı kontratlardan çok daha farklı ve tam akıllı kontrat da değil. Yani hani smart kontrakctla hiç alakası yok bunun. Eee, bunu böyle söyleyeyim yani. O yüzden farklı yani bahsettiğimiz oranda yok. Aynen. Devam edebiliriz. Devam edelim. Evet. Şimdi gelelim asıl konumuza doğru bir dönüş yapalım. Şöyle kaydıra kaydıra geliyorum fark ettiyseniz. Evet, buraya geldim. Şimdi burada şöyle bir tane kontrat yapmışız demiş. Demişiz

ki bir tane kontratımız olsun. İsmi simple star olsun. Bu bir şey etkileşim ekranı. Etkileşim ekranından kastımız nedir? Eee şeyde bu kontrat kurulmuş, yapılmış. Her şey hazır. Bunun e adresini biliyoruz. Ne olduğunu biliyoruz. Artık oraya bir fonksiyon çağıracağız. Alacağız, vereceğiz vesaire. O kontratla etkileşeceğiz. O kontratı okuyabileceğiz. Hatta mümkünse değer yazmaya iznimiz varsa ona değer atayacağız. Bir şey verisini değiştireceğiz vesaire. Blockchain'de koşan bir sistem. Onu daha önce anlatmıştık. Onun detaylarını gösteriyoruz şu an. Eee, ne yapacağımızı gösteriyoruz. Burada şöyle bir şey yazmışız. Diyoruz ki buraya simple storage demişiz. Demek ki bu kontratın

ismi buymuş. Tersten gelerek yazmaya çalışacağım. Simple storage nedir? Şu. Şimdi sizin elinizde remix var mı? Açabilir misiniz bilmiyorum ama çok da beklemeyeceğim remix'i açmanızı. Nedir, ne değildir? O kısma çok fazla girmeyeceğim. eee açmışsınızdır herhalde daha önceki e şeyden session'da. E kullanmayı birçoğunuz biliyordur. Bilmeyenler için ise bir öncekini izlemenizi tavsiye ederim. Değil mi Elif? Öyle yapabilirler. Aynen. Remisadarum.org. Tamam. Çok iyi açıkladın. Teşekkür ederim. Eee burada ne yapmışız? Şu kontratın başında genel bilgilerini yazmışız. spdx license identify MIT yani diyor ki bu artık diyor bu kontratın scopu eee hukuki anlamda geçerli MIT

tarafından tanımlandığı şekildedir. Başlık bilgisini vermişiz şuraya hani Etherium virtual machine hangi versiyonuna uyumlu çalıştığını söylüyor bu kontrat şu versiyonuyla çalışsın ve üstüyle çalışsın. En sonu hangisiyse bunu anlatmıştık zaten. Buraya girmiyoruz. Bunu yazdık. Daha sonra kontratın ismini yazdık. Süslü parantezlerle açtık, kapattık. Artık bizim bir kontratımız var. Ama bir öncesinde sonra kontratın isminden ziyade şey de vardı. İki tane fonksiyon vardı. Biri turuncu biri mavi. İki fonksiyon varmış. Demek ki ben iki tane fonksiyon yazacağım. Bu konuda hem fikir miyiz arkadaşlar? İlk fonksiyonun bile parametre istediğini görüyoruz. Diyoruz ki unsigned integer 256 tipinde alt çizgi fav isminde bir tane parametre alıyormuş bu fonksiyon. Bunu yazmamız

lazım. Bir de get favorite number diye bir şey var. Şu sonu nokta nokta görünmüyor ama number yazıyorum ben. İkinci fonksiyonum da bu. Ama bu geriye bir değer dönüyor. E bir D onu görebiliyorum. Read olduğunu görebiliyorum. Onu da şöyle anlatabiliriz. Blockchain'le şu şekilde etkileşiyor demişiz. Ona da biraz burada ş yapmışım. Çizim yeteneğimi kullanarak. Şimdi bu blockchain blockchain'le iki tane fonksiyon üzerinden dünyayla etkileşiyor. Bir set favorite number bir de get number diye iki tane fonksiyon yapmışız. Bunları yazacağız demek ki. Yani bunlar yazılmış. Şimdi orada ne yazılmış ona bakalım. Gelmişiz simple strug'nin içerisine girmişiz. Buraya iki tane kod

girmişiz. Evet. Birincisi set favorite number parametresini de yazmışım. 256 public bir eee rakam iletmiş. Bir de get number bir de 256 değerinde yani bir bir değeri de dönmüş. Bunu buradan görebiliyorum. Bu kontrat şu an çalışabilir değil. Sadece screenshotını aldım ama buradan varmayı istediğimiz nokta şu. Bu geldiğimiz ilk noktadan şu noktadan bu iki fonksiyonun yazılması gerektiğini, var olduğunu anlayabiliyorum. Turuncu olan şu demek.

Blockchain'e bir şey yazıyorsun. O yüzden rengi turuncu. Bunu daha önce anlatmıştık. Mavi ol aslında read only yani okumaya yönelik vi ya da pure olduğunu blockchainindeki herhangi bir değişkenin değerini değiştirmediğini gösteriyor. Sadece okuyoruz. Eee bir şey geriye dönebilir dönmeyebilir ama okuyoruz. Bir şey değiştirmiyor demek. Bunu yazdıktan sonra bunu biraz daha detaylandırırsak şu şekilde yazmışız. Şeyi complete ediyorum yani. Tamam şu şablonu oluşturdum. İki tane fonksiyon vardı. Biraz geleyim. İki tane fonksiyon vardı. Neydi biri? Set. Bir de get fonksiyonu. Favorite numberı. Ama favorite number nerede? Onu da şu şekilde yazdığımız kontraktaki kodu şöyle paylaşayım. Onun üzerine konuşalım. Burada dönen olay şu. İlk

önce bir tane değişken tanımışım. U int 256 tipinde yani integer tipinde tam sayı demek pozitif tam sayı tipinde bir değişken tanımlamışım. Bu değişken bir şey parametre almış. O şeyde de görmüştük zaten. İlk kısımda da görmüştük. O parametreyi almış ve buna değer olarak atamış. Buraya kadar okeyiz. Burada bunun public olması gerekiyor ki biz bunu public olmasaydı eğer dış dünyadan okuyamazdık. O ilk ekran vardı ya dış dünyadan okuyabilmesi için bunu yapmamız gerekiyordu. Diğer fonksiyon da read get fonksiyonuydu. Bunun da return olarak bu son değeri okuması gerektiğini görüyoruz. Yani burada dünyaya geri bu değeri dönüyor. Şimdi geleyim bakayım bir şeyi de paylaşayım bunu size. Bir

saniyenizi alacağım. Nereye koymuşuz bunu? Evet. Şimdi paylaştığım ekranı biraz değiştirmem gerekiyor. Bir saniyenizi alacağım. Stop sharing. Bir daha start sharing yapacağız. Evet. Ekranım görünüyor zaten değil mi?

Paylaştım. Aynen. Şimdi burada yaptığımız şey şu. Az önce kodumuzu yazmışız. Böyle alt tarafı görmezden gelin. Önemli değil. Başka bir kontrat. Kontratın ilk önce ne yapmışım? 0.8B üzeriyle derlenmesi gerektiğini belirtmişim. 0.8 ta altlarda, şuralarda bir yerlerde ama şuradaki yukarı carot yani ok bizi en son versiyona götürüyor. O en son 25 zaten o otomatik atıyor. Bunu buradan görüyorsunuz. Bunu konuşmuştuk. Compile ediyoruz. Kodumuzu ilk önce bitec haline çevirdik. Daha sonra depoy geldik. Deploy adamında deploy tuşuna bastığımız zaman hangi kontratı şey yapacağımı söylüyorum.

Simple str. içerisindeki simple storage. Evet. Bunu deploy et dedim. Deploy etti. Burada remix virtual machine kullandık. Bunun biraz daha detaylarını anlatırız ama yani bu aslında bir simülatör. Buraya baktığımızda sonuç olarak işte şu az önceki ilk ekranda hani göstermiştik ya böyle bir etkileşim ekranı var. Bu etkileşim ekranında şuraya bir sayı girelim. Benim favori sayım 9. Set dedim. İşte şurada şeyler döndü. Bu oldu. Setti. Yani şuraya artık 9 derini atadı. Şunun içi artık 9. Hadi get diyelim. GET'te de 9'u gördüm.

Yaptığımız olay bu oldu. Şimdi burada eee buraya kadar bir sorunuz var mı? İlk önce orayı bir alalım. Yok galiba değil mi? Görmüyorum ben ekranı. Bir bakayım görebiliyor muyum? Ekranda soru var. Ben bölerim merak etme. Ben cevaplarım. Tamam. Peki. Şimdi buraya gelin biraz da şeye bakalım. Eee, ya da devam edelim. Şimdi şuradaki ekrandaki şeyleri bir kere daha temizliyorum. Her şeyi bir sileyim. Şunu clear edeyim. Bunu da clear edeyim. Her şeyi sildim. Aynı

işlemi bir daha yapacağım. Deploy edeceğim. Bu sefer loglara bakalım. Simple storage bir de bir kere daha deploy ediyorum. Deploy ettim. Şurada dediğim gibi bir tane kontrat oluştu. Blockchain'deki şöyle bir bellek gözünde ve şöyle iki tane erişim kütüphanesi tanımlandı. Bu işlemi yaptığında ekranda şunları gördüm. Dedi ki bana kenara çekeyim. Kenarı çekemedik. Niye çekemedik? Tamam şu tarafı çekeyim. Hadi şimdi şu logları biraz okuyalım. Ne olmuş burada? Neler gerçekleşmiş?

Evet. Burada gerçekleşen olay şu. İlk önce statüs 01 diyor ki bu işlem başarıyla gerçekleşti diyor. Yani şuradaki logları okuduğunuzda her yapılan işlem sonrasında buraya bir log düşüyor. Burayı genel anlamda özetleyeceğiz. Her detaya girmesek de genelde ne olduğunu burada gördüğümüz zaman eee işler yolunda gidiyor. Şimdi srage constructor yani deployment constructorı çağrılmış. Bu işlem için yapılan altda neler gerçekleştiğini söylüyor. Transaction hash. Bu yapılan işlemin bir değeri yani bir sistemde bir unique value'su var. O tutuluyor. Bunu oraya koyduk. Block hash. Bunu bloğun eee bu bloğun içine girdikten sonra bu

bloğu hashliyor. Buraya da çok takılmayın şu an. Yani normalde bir bloğun içerisine konuluyor. Onu daha sonra bir hash'ten geçiyor. Onun değeri o. Block number 12. Yani bu bir eee simülatör olduğu için sanki simülasörde arkada bir blockchain varmış gibi bu 12. bloğuna yazıldı diyor. Bu yapılan işlem 12. blok üzerinde gerçekleştiriliyor diyor. Daha sonra diyor ki kontraktın adresi. Yani her e deployment bir adresi var ya bu kontrat bir bellek özünde yer tutuyor. Bir yeri var adresi var. O adres kontraktımızın adresi buymuş. Bunu anladık. Peki bu kontrat adresi nereden nereye gitmiş? Yani kim buna istekte bulunmuş da bu kontrat burada

oluşturulmuş? From from dediğimiz kişi benim eee şurada da yazar. Benim volut'umun adresi olması lazım. Şurada C4'te bitiyor ya sonu. Burada C4'te bitiyor. Yani şu aslında benim wallet'ımın eee belirttiği şuradaki account adres. Eee burada şurayı geçiyorum. GES'e geliyorum. GES. Eee burada diyor ki bu işlem bir [Müzik] eee kaynak tüketimine neden oluyor değil mi? Benden bir fi kesecek. Bu niye önemli? Bu bir ekonomi. Yani şöyle söyleyeyim. Bizim yaptığımız her işlemden bazı ücret kesintileri oluyor.

Bizden bir bu işlemi yapan kişilerden, bu taleplerden, şu çağıranlardan, bu fonksiyonları çağıranlardan, alanlardan, verenlerden bir para talebi var. Etherium talebi. Biz buna guest diyoruz. Bu niye önemli? Bu kazanılan para, bizim ödediğimiz para sistemi sürekli besliyor. Bu blockchain'i ayakta tutan nodlara bu ödemeler yapılıyor. Bu onunla alakalı. Bu işin ekonomik boyutu dediğim gibi blockchain dediğimiz sistem aslında bir çözüm. Bunun bir bacağı da ekonomik çözüm. Ekonomik tarafı da var. Burada da ekonomisi gereği bir para verilmesi gerekiyor. Bu sistemi çeviriyor. Eee burada ilk aşamada benden 14.000 e pardon bu ne?

141.456 birim GES göndermişim ben bu adama bu işlemle birlikte ama bunun tamamını kullanmamış. 123.5 GES kullanılmış. Bu da şu anlama geliyor. Eee, diyor ki yani tamam sen fazla gönderdin. Ben bu kadarını kullandım. Geri kalanını sana geri revert ediyorum. Yani bana geri şu aradaki farkı yaklaşık 20.000 kadar neyse 18.000 kadar gesi bana geriye çevirmişler. Aslında benim işlemim toplam transaction costu bu. Execution cost da transaction costun içerisinde başka bir kısım. Bu bu başka değerlerle toplanıyor aslında. Yani benim harcadığım toplam tüketim şu kadar.

Bu bunu gösteriyor. Input. Ben bu kontratı generate etmek için gönderdiğim parametrelerden bazıları burada duruyor. Output bir işlemin sonucusundaki output'un eee valuesunu tutuyor. Buralara girmiyorum. Dikkat et input. Dikkat ed output. Bunları daha sonraki versiyonlarda daha net tartışırız. Şimdi gelelim başka bir işlem daha yapalım. Hadi bir değer set edelim. Bir de öyle bakalım. Şunu kapatayım. Bir işlem daha yapalım. Şuraya 23. En sevdiğim sayıya 23 dedim. Gönderdim. Gene bir tane işlem yaptı. Gelin bunun da loguna bakalım. Daha önceki 12 bloktu. Bu 13. bloğa yazdı. Ondan sonra dedi şu benim volutum. C4'te biten benim volut'umdu.

To simple strogin set favorite numberına bu fonksiyonun adresine gitti. Tamam. Gest bu sefer daha düşük. 50.000. Çünkü daha düşük bir işlem yaptık. Burada kullanılan 43.000 yani geri kalan 7.000'e revert etti. Geri benim hesabıma döndürülmüş. Execation cost 21.000. Burada şöyle bir şey var. Eee, pardon. Execution code 22.000. Şimdi gerçek de harcadım bu ama sistemin ihtiyaç duyduğu execution için bu. Bir de default fee var. 21.000.

Buralara girmiyorum. Çok şey yapmayayım, kafanızı karıştırmayayım ama ben bu işlem için 43.696 GES tükettim. Yani daha sonra bu işte uzmanlaştığınızda öne çıkacak faktör şu. Daha az GES nasıl tükettiririm bu kontrata? daha nasıl optimize edebilirim bu kontratı? Eee, bir süre sonra amacınız buna dönmek zorunda kalıyor. Çünkü milyonlarca kişi bunu çağırdığını düşünün. Buradaki rakamlar inanılmaz değerlere ulaşıyor, harcamalara ulaşıyor. Zaten orada mesela auditlerin yaptığı şeylerden biri sadece güvenlik değil. Aynı zamanda eee, efficiency optimization. Yani daha nasıl az eee g tüketecek şekilde ben bunu optimize ederim, kodumu daha nasıl hızlı çalışır, daha rahat çalışır hale getirebilirim.

Ama bunlara bakıyorum. Mesela şuraya UT 256 yına başka bir değişken tanımladığımda ya da constant tanımladığımda vesaire vesaire bunların hepsi değişiyor. Optimal hale getirmeye çalışıyorlar ki eee önemli. Burada yazılımın önemi büyük. Yazılımcının önemi büyük. Eee buraya dikkat çekiyorum. Sonra input olarak buraya yazmış zaten. Dikod input output'u yok. Bunları girdikten sonra bu da bizim eee logları nasıl okumamız gerektiği ile ilgili aşağıda dönen olayları bize anlatıyor. Şimdi başka bir şey daha yapalım. Ben bunları sildim.

Tamam. Ben burada ne yaptım? Remix'in kendi simülatörünü kullandım. Ama ben tutup da mesela gerçek bir blockchain kullanmak istiyorum. Mesela Etherium kullanmak istiyorum. Ya da Etherium'un testnetini kullanmak istiyorum. Bu da gerçekten bulut diyeyim. Bulutlaraan edilen eee gerçek bir blockchain. Oradan da şunu seçiyorum. Diyorum ki injected provider MetaMask. Ben MetaMask'la MetaMask'la ilişkilendirilmek istiyorum. Burada MetaMask'ın şu an gösterdiği yerde Sepol network'üne bağlıım.

Buraya şu anlamda girmiyorum. Burayı cferın after draft'ın dokümanlarından nasıl bağlanacağın, ne olduğunu Solidity 101 eğitiminden alabilirsiniz ya da internetten bunu da bulabilirsiniz. Remix'in MetaMask'a nasıl bağlanacağı ve Sepelio networken nasıl bağlanacağı ile ilgili da benim bir tane örnek metabaskım var. Buradaki şu account bau 27 ile bitiyor. Bakın bunun da sonu 27 ile bitiriyor. Aslında ben burada injected provider metamask yaparak kendi metabask'ıma bağladım sistemi. Bu da Seperine bakıyor. Yani Etherium Seperine bakıyor. Gerçek bir network. Hadi buraya da deploy edelim. Normal şeyi simülatöre değil gerçek bir network'e deploy edelim. Confirm

diyeceğim. Confirm ettim. Eğer network çok yoğun değilse creating simple strending diyor. Bu biraz sürebilir. Biraz bekleyelim. Olmazsa es geçeceğim. Network'ün yoğunluğuna vesaire bakarak. Bu arada da Elif bize şarkı söylesin. Şaka yapıyorum. Söyleme tabii. Okey oluştu. Bunun da loguna bakalım. Gene farklı bir şey yok. Eee, öbürü zaten bunun simülatörüydü. Gene aynı değerlere yakın oldu. 01 success demek zaten şurada yeşile döndü.

Ondan sonra block number yani Sepolio network'ünde ne bu 8241.700 bloğa yazmışız. Kontrat adresimiz bu. Benim volutum bu 27 ile biten volutta hatırlıyorsunuz. Şu fonksiyonu çağırmışım. O kadar geç tüketmişim. Fıtı fıtı. Yani burada bu. Ama burada önemli olan bu şey. Ben bunu log'da görüyorum ama herkeste bu işlem yansıdı. We eater scan var mesela. Bakalım eer scan'de bunu [Müzik] açalım. Bu şeyde sepol e scan io burada da yani global olarak da görünebiliyor. Şuradan şuraya 43 saniye önce şu bloğa success olarak eee bu işlem yapılmış. Transaction fee bu kadar tutmuş. Gu price bu kadardan hesaplanmış

vesaire vesaire. More'la işte detaylarına inip detaylandırıp bakabilirsiniz. Ben buralara fazla fazla uzun uzun girmiyorum. Buraya kadar da bir sorunuz varsa alabilirim. Burada yaptığımız şey şu oldu. Biz ilk önce burada e MetaMask'ta da gerçek bir blockchain'e nasıl etkileşeceğini çok basit bir şekilde Nemix'le göstermiş olduk. Buraya kadar bir soru var mı? Hemen alalım. Bakıyorum. Tesnet'in maliyetini gerçek A mı karşılıyor? Testnet'in maliyetini gerçek A mı karşılıyor? Vallahi bunu bilmiyorum. Eğer öğrenirsen bize de

söyle. Maliyete kimler yükleniyor? Olabilir. Bunun node operatörleri kimdir bilmiyorum. Bunları birileri eee her node operatörü kendi şey yapıyor olmayabilir. Yani ada o Sepely ağındaki nodları kim üstleniyor artık orasını bir testnet koşarsan bize söylersin. Alıyor musun o parayı? Nasıl alıyorsun bilmiyorum. Eee biri demiş ki MetaMask tarihi karışmalı. Neden başlangıçta fazla GES ödeniyor? Çünkü Neden başlangıçta fazla GES ödeniyor? Çünkü bir kontratı create ediyorsun.

yaratıyorsun. Bu ciddi bir computation hesaplama yükü, ciddi bir memory yükü. Yaptığın işlemin ağırlığına bağlı olarak bu hesaplanıyor. İlk baş olduğu için değil. Mesela bir fonksiyon çağrısını çok komplekstir. Sürekli read bir şeyleri değiştiriyordur vesaire. O deployment maliyetinin de daha üstünde bir değere de ulaşabilirsin. Orada EVM yani Etherium Virtual Machine akıllı bir makine olarak düşün. Orada ne kadar çalıştığını senin için hesaplıyor kendisi ve sana maliyet gönderiyor. İlk önce bir istekte bulunuyor. İsteğin eee altında kalırsa geri refund ediyor sana. Kalanını geri gönderiyor vesaire ama o hesaplamayı yapıyor. Evet başka soru yok. O taraftan devam edelim. O halde şu ekranıma

geldim. Burada diğer bir fonksiyon tanımlamışız. Demiş ki buna simple strory demişiz. Burada da ü tane fonksiyon var. Bir generate simple storage yazıyor. Turuncu push favorite number. Bu new favorite de Allah nedir bu falan. Bir bakalım. Ona da şöyle bakalım. Dış dünyada şu işlemler gerçekleşmiş. Evet şurada olması lazım. Maviye gelmiş. Şöyle. Şu ikisi turuncuydu. İki tane fonksiyon var. Bir generate simple storage demek ki bir şeyi create ediyor.

Bu şu favorite number diyor. Yeni bir şey şey yapıyor. Pulla da okuyor. Ben buradan bunu alıyorum. Mavi de mavi rengi de vermemin nedeni o. Bu üç fonksiyonu nasıl yazmışız ona bakalım. Burada araylere biraz girmişiz konu olarak. Array nedir? Eee bunu daha önceki derste biraz şey yapmıştık ya. Ekran yok diyor. Dur bir dakika. Kapattın az önce ama anlamadım ben de. Ha ben de kendi kendime anlatıyorum. Bir dakika. Share screen.

Tamam. Tekrar başlıyorum. Yeni bir tane kontrat yazmışız. Kontratımızın ismi simple strctory. Buraya kadar bence okeyiz. İlk önce contract simple stretch factory diyor. Şuraya yazalım. Contract simple stretch factory dedik. Tamam. Ok. Sonra gelelim push new favorite number. Yani bir push diye bir tane fonksiyon yazmışız. Push new favorite number bir index alıyor. Şu indexsteki kontrata bu favorite number'ı koy şeklinde. Eee, ondan sonra bir fonksiyon daha var. Neymiş? Pull favorite number.

Bu da tek bir parametre alıyor. Index parametresi alıyor. Hala mı yok bu arada? Allah. Ben paylaşıyorum ama. Gelmiyor mu Elif? Gelmiyor. Bir dakika. Bir daha denen kaynaklanıyor. Aynen. Bir saniye. Ha tamam. Şimdi geldi mi? Heh şimdi geldi. Tamam. Bunu kısa tutayım o zaman. Şey yapacağız. Şimdi bir tane daha eee şey yapıyoruz. Eee adını sen getir.

Ne denir ona? Kontrat tanımlıyoruz. Bu kontratın da ü tane fonksiyonu var. Bu fonksiyonlardan iki tanesi write işlemi kurucu olanlar. Generate ve push. Bir tanesi dri çok yaşa. Ay pardon çok sağ ol. Onu da şöyle grafikte şöyle belirtmişiz. Generate ve push yazıyor. Pool da okuyor. Ama burada şöyle bir şey daha var. Dikkatinizi çekmek istediğim. Şu generate bir parametre almıyor. Gördüğümüz gibi boş yani herhangi bir parametre almayan bir fonksiyon. push iki tane parametre alıyor. Biri index, biri de favorite number'ın kendisi. Yani index diyor ki şuranın içi bir dizi var. Demek ki dizinin şu elemanın içerisine şu değeri yaz

diyor. Bu konuda hemfikir miyiz? Buraya kadar anlaşılmayan bir şey var mı? Bence anlaşıldı. Eee, ben entire screen'i paylaşayım mı Elif? Bu sadece tek screen görünüyor değil mi? Sizden bir saniye daha alacağım. Enter screen. Sağ ol, sal. Bırak. Teşekkür ederim. İstediğin gibi paylaşabilirsin. Tamam. Yarın arkadaşlar etkinliğe gelenler İstanbul'da eee şey olacak. Selam Yaşar. Eee ne olacağını söyleyeyim sizlere. Canlı kod analizi ve Baya Security tarafına gireceğiz İstanbul'daki yüz yüze eğitimimizde. O nedenle eee ona katılmanız ayrıca önemli bu arada. Ondan sonra da Ankara'da var bu arada.

Ankara'daki arkadaşlarım hiç merak etmesin. Ankara'daki etkinliği de paylaşayım hemen. O da güzel. Bayağı onu da çok seviyorum. O bayağı önemli. Onu paylaşmadım sizle galiba. Paylaşmış olabilirim. Ha paylaştım değil mi bir daha? Olsun bir daha paylaşalım. Şurada hazırlayayım da virtual machine deploy edeyim. Tamam. Şimdi az önce anlatmaya çalıştığım şey şu fonksiyonlu. Diyoruz ki burada iki tane şey var. Turuncu var. Bir tane mavi var. Turunculardan biri generate simple storage diyor. Yani bu bir şey generate ediyor. Etti diyelim. Bir tane contrat generate etti bu. Ok.

Şimdi ben buraya push new favorite number diyorum. Şöyle 0 indexsteki kontrata bir değer yazıyor bana. 9 generate push dedim. Yaptı. Pull deyince de diyor ki bir tane indeks ver bana. Mesela diyelim 12. indeksteki kontraktaki değeri al dedim. Hop ne yaptı? Hata verdi. Çünkü 12 indeks diye bir şey yok. Demek ki allah 0 yazsam ne olacak? Hop geldi. 9. Yani demek ki bu şöyle bir şey yapıyor. Ne kadar generate edersem ettim, ettim ettim. Şuraya da 1 2 3 diye bir kere daha ettim. Bir şunun cevabı da 19 olsun. Şu olsun. Şunun cevabı da ikincisinin cevabı da 38 olsun. Hoş. Şuraya da diyelim ki

2. Hop 38 geldi. 1 yazsam ne gelecek? 1 yazamadım. 1 yazsam ne gelecek? Hop 19. O zaman ben ne yaptım? Şimdi burada bir dizi var. Şu ilki, şuradaki ilk parametreler zaten içini silersek index. Şurada generate ettiğim kontratın indeksine gidiyor ve onun içerisine bir değer yazıyor. Bua da o yazdığım değeri hangi kontratsa o indeksine gidiyorum çekiyorum. O değeri okuyorum. Yaptığım işlem bu. O zaman ben ne yapıyorum bakalım. Şimdi dedik ya simple storage factory diye bir tane fonksiyon yazmışız. Şey kontrat yazmışız. Kontratımın üzerine bir simple storage tipinden bir dizi

belirtmişim. Yani simple storage'i az önce yazmıştık ya basit bir storage. Şu hatırlıyor musun? Favorite number yazıyor sadece. Üstünde tek yaptığı şey eee favori değer tutan bir tane fonksiyon şey kontrat. Başka hiçbir işe yaramıyor. Sen bu bir favori değer koyuyorsun. Yazıyorsun okuyorsun. Yazıyorsun okuyorsun. Bundan bir havuz oluşturmuşum. Pool. Pool dediğimiz havus yani bir dizi. Bu simple strzesi dizi böyle tanımlanıyor. Bu şeyi bilmiyorsanız öğrenin. Diziler ve mappingleri dizisini çalışmanız lazım bence. Bir fonksiyon belirmişim. Ne demişim? Push new favorite number demişim. Ha ilk önce generate'ten başlayalım. Şurada generate fonksiyonu.

Generate'de şunu yapmışım. Diyorum ki yeni bir tane simple str yapıyorum. Yani her generate'e bastığımda bir tane şundan yapıyorum. Şu bloktan bir tane yapıyorum. Şundan ve bunu havuza gönderiyorum. Böyle bir tane ekledim. Havuzun içerisine push ettim. Koydum. Oke miyiz buraya kadar? Bir soru var mı? Sen beni kesersin Elif. Mesela buna üç kere bastım diyelim. Diyelim 1 bir kere çalıştı. Pool'a bir tane ekledi. Bir daha bastım. Hop bir daha koydu. Hop bir daha koydum. 3 oldu. Hop bir kere. 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 diye gidiyor. Şuradaki havuzumun içerisini şuradaki şeyle doldurdum. Şu kontrat tipiyle bu yapıyla

doldurdum. Bu şablonla doldurdum. Generate Simple Stroke'nin yaptığı bu. Yani 20 tane şunun içerisinde 20 202 arası bastık. Neyse 202 arası bir indeksim var. Bir dizim var. Bu 20'lik dizinin içerisinde yine 23 mü 20 mi neyse işte 20 diyelim. 20'lik dizinin içerisinde herhangi bir tanesini aradan çekip içerisine değer yazabilirim. Şurada mesela push favorite number. Buna diyelim ki 13 dizinin içerisindeki yani havuzun içerisindeki 13. elemana git. Şurada index diyor ya 13. Bak şurada da yazıyor. Simple strull. Şu 13 bu 13'e gidecek. 13 yazalım. Set number f. Favor numaramı da ne diyeyim ben? Elif favori numaran kaç?

Çocukken okul numaramı 6'ydı. 6. Tamamdır. Hepimiz öğrendik. Bu şda iyiymiş yani. 6. sıra o kadar az nasıl oluyor? Evet. Okula 6 kayıttım. Evet çünkü Evet. Evet. Zaten çok küçüktü de bayağı ilçedeydik yani arkadaşlar. Hani okulda 300 kişi bile yoktuk. O yüzden 6ıncı olmak biraz bilemiyorum. 62 diyelim mi? Tavşan yaparız. Şöyle yapalım. İyi hadi öyle olsun. Tamam. 13. elemanın içerisine 62'yi yazdım. Hop. Ne yaptı? Şuraya gitti. Şuranın 13. indeksine gitti. 13yü seçti. Sonra bunun içerisinde set favorite number fonksiyonu çağırdı. Set favorite number nerede? Şu fonksiyonu çağırdı. Onun içerisindeki şu değerin içerisine de

hop 62'yi koydu. Değil mi? Ben bundan emin miyim? Hadi şuraya 13 yazalım. Bence 13 yazmayalım. Bir 14 yazalım. Hiçbir şey olmadığını görelim. Hop. Bakın. 0 ama 13 yazarsam ne gelecek? 62 gelecek değil mi? Hop bastım 62 geldi. Burada yaptığımız olayda iki şeyi gerçekleştirmiş [Müzik] olduk. Eee birincisi bir dizi nasıl tanımlanır onu gördük. Ondan sonra şurada bir dizi nasıl tanımlanır onu gördük. Bir de bir kontratın içerisinden başka bir kontrat nasıl generate edilir?

New'le new keywordüyle new'le alıyorsun. Hop dizinin içerisine pushluyorsun. Atıyorsun. Bir havuz oluşturuyorsun. Bu havuzu oluşturduk. Daha sonra şunu gördük burada. Dedik ki bu havuzun içerisine girip o elemanı bulup simple strolun içerisine girdik. Indekse girdik. Şuraya 13 yazdık. 13 indeks geldi. Nokta dedikten sonra da ya şuraya kadar zaten o elemanı bulduk. Şu o eleman 13 eleman. 13. elemanın içerisindeki set favorite number fonksiyonunu çağırdık. Şunu çağırdık ve bunun içerisindeki değeri, bu elemanın değerini 62'ye eşitledik. Yaptığımız işlem bu oldu. Sonra da şu pool'la da gittik. 13 elemanın değerini oku dedik.

Şu 13 eleman. Hop. Get favite number fonksiyonunu çağırdık. O da şuradaydı. Get. Şu fonksiyonu çağırdık. Hop bize cevabı döndü. Buraya kadar soru var mı? Ona da bakalım hemen. Nöp nöp. 11. Neden mapping yapmadık? Bir dizi yaptığımız için mapping yapmamıza gerek kalmadı. Ama mesela şöyle yapsaydın şu bir mapping olurdu. Bir mapping örneği yapalım o zaman. Şimdi normalde bir mapping için şöyle bir şey lazım. Mapping'le de yapabilirdim bunu.

Eee, mapping'le kaçıncı indeks olduğu değil. Mesela şöyle bir şey olsaydı mapping olurdu diyelim. Bir kontrat yazdınız. Kontratta herkes kendi hesabını tutmak istedi. Onunla ilgili bir örnek var. Bir saniye onu paylaşayım. Ondan başka soru var mı? Ona bir geleyim. O mapping'e geliriz. Ne yazmış? Selam. İyi yayınlar hocam. Çok çok iyi yaşa. Ekran yok. Ha çok iyi yaşa. Benim de 11. Benim de 11. Onu da anlamadım. Ha şey favori sayısı 11. Tamam ya. Mapping'e gelmeden önce eee ikisini çok iyi öğrenmeniz lazım.

İlk önce o konudan bir başlayalım. Yani eğer bir şey yapıyorsanız eee adını sen getir. E bu yazılımı yapacaksanız iki şeyle çok yakından uğraşacaksınız. Pardon bir saniye. Ben şeyi kaybettim. Ekranı kaybettim. Beni görebiliyor musunuz? Hı, tamam geldim. Bir saniyenizi alacağım sadece. Şunu quit etmem [Müzik] lazım. Stop sharing. Özür dilerim. Quid.

Tamam. Ekran biraz karıştı. Elif sen görüyorsun. belki ama bir saniye ekranları bende de görünmüyor. Bende de görünmüyor. Ekranları kaybettim. Bir saniyenizi alacağım. Ekranı kaybettik. Şehir demiyorum. Şehir butonunu bulamıyorum. Allah Allah. He tamam. Şimdi bir daha şeyim. Şurada bir tane nerede? Presentare screen. Entire screen diyelim. Dur bir de en deneyeyim.

Tamam. Enter'den geldi. Evet. Şimdi burada hala etmek istediğim arkadaş mapping sordum. Mapping'i de bir anlatalım. Mappingde şu. Bu aslında bir şey değil. Şöyle söyleyelim. Mapping aslında bir eee dictionary gibi. Yani gidiyorsunuz bir rehberde o kişiyi bulabiliyorsunuz. Bir yere gidiyorsunuz. Mesela şu ismin karşılığında ne var? Bunu one to one direkt bulabiliyorsunuz. Tek tek aramak yerine. Oraya map edip oradan çıkartabiliyorsunuz. Bu mapping ve eee dizileri çok iyi kullanmanız lazım.

Buraya simple bank diye bir tane basit bir kontrat yazdık. Simple bang'in ne yaptığına bir bakalım. Şimdi bir şeye mapping dediğinizde diyorsunuz ki bir şeyim var. İkili bir yapım var. İlk tarafı yani key value ya hani böyle şey biliyorsanız biraz bilgisayar biliminden aşinaysanız key value pair vardır. Keynin karşılığında bir value vardır. Şimdi diyor ki benim keyim string tipindeymiş. Yani buraya bir isim gelecek. Selçuk gibi, Ahmet gibi, Mehmet gibi bir isim gelecek ki bu bunun eee şeyi olacak. Karşılığında da bir değer var. İşte eee ne oluyor? Eee 5 milyon lira. Atıyorum Selçuk 5 milyon lira mappingi. Yani Selçuk ne kadar parası varın mappingini tutabiliyor. Ya da Elif

250 lira işte Ayşe 5.000 L bu bunu tutabiliyor. Şimdi şeyin sorusuna gelirsek şurayı bir anlatayım ondan sonra soruya gelelim. Burada mesela bir fonksiyon yapmışız. Bunu isterseniz bir derleyelim. Compile diploylar yapalım. Şu eskileri silelim. Kafamızı karıştırmasın. Deployment'da benden iki tane şey almış. Demiş ki add person. Buraya Selçuk yazalım. Virgül karşılığında benim 1000 liram olsun. Bu kişiyi çat diye ekledim.

Tamam. Bir de Elif yazalım. Ona da 1 lira koyalım. Hop. Bunu da ekledim. Şimdi buraya mesela name to account şuraya string Selçuk yazalım. Hop geldi. 1 elifi yazalım. Hop geldi bir. Burada direct bir mapping var. Key value şeklinde. Diziler ve bu dictionaryler ya da key value playerleri birbirine yakın gibi görünmekle birlikte çok yakın değil ama birbirleriyle korel çalışıyorlar. Şimdi şu fonksiyona gelelim. Ne yapmışız? Şu add person'da ne yapmışız?

Ona da bakalım. Bu şeyi nasıl çalıştırığıma dair bu isimden account yani hesaba isimden hesaba bir dictioneri key value payer'ı diyorum ki şuraya parametre almış Selçuk aldı Selçuk aldı dedi ki Mekan Selçuk isimli kişinin hesabına şu paraya yatırılan para neyse fonksiyonda şuraya 1 yazdık ya 1000 yazdık ya onu ekle ya da şurada elife 1 yazdık bunu ekle şimdi buraya bir bir kere daha add person diyelim bir kere daha ettim buraya baktım Bakım 2 oldu. Sayı sürekli artıyor. Bunun nedeni şurada artı olması. Bu artı şu demek aslında. Bunu kısa yoldan yazmışız. Uzun yoldan yazayım. Şu demek yani şuraya artı

koyarsan bunu bir daha tekrar etme demek. Ben böyle tutayım çok kafamız karışmasın. Bunu sürekli bu kişinin indeksini buluyor isminden. Bu bu değere ulaşıyor. O bellik gözüne giriyor ve o değeri ekiliyor. Burada da anlatmak istediğimiz şey mapping. Eğer eee bunu tam olarak anlamak istiyorsanız bunun defalarca e tekrarını yapmanız gerekiyor. Bir mapping yapın. Mesela az önceki soruda bunu diziyle tanımlayın ya da az önce dizini ile tanımladığınız şeyi mapping'le yapın. En önemli öğrenmeniz gereken solidity, en önemli öğrenmeniz gereken iki tane fonksiyon kullanımı, iki tane feature kullanımı ya da tool kullanımı. Bunlar birer tool diye geçiyor. Birincisi diziler, ikincisi mapping'ler. Yani bununla ilgili ne

kadar örnek yapabilirseniz sıfırdan başlayarak o kadar örnek yapın. Benim tavsiyem size eee koder chatd yazdırabilirsiniz. Bana mapping'le basit bir örnek yap deyin. Size onu yapsın gibi. Onun üzerinde çalışın, sorular sorun. Bu şekilde bu iki tool üzerine yoğunlaşın. Evet. Eee, sunumumu burada bırakıyorum. Bir saatlik olarak tanımlamıştık. Bir saati saat 9'a kadar tanımıştım. 9'da bırakıyorum. E, burada string key oluyor demiş. İsim gibi. Karşısında da value yani money oluyor. Evet, doğru. O şeyi değiştirebilirsiniz. Key value'yu değiştirebilirsiniz kafanıza göre. Integer, integer de olabilir.

Integer to string de olabilir vesaire vesaire. Hı hı. Evet Elif bugünlük anlatacaklarımız bu kadardı. Sorular varsa alalım. Evet sorular varsa şimdi alalım değerli arkadaşlar. Yoksa zaten eee Allah izin verirse ik hafta içerisinde tekrar kaldığımız yerden devam edeceğiz. Eee hatta şey var. Yine Ankara'da ve İstanbul'daki eğitimlerde zaten çok daha derine detaylı olacak bir şekilde girmeyi düşünüyoruz. Eee ama hangi eğitime geçeceğiz buna detaylı olarak? yarın retency'den falandan filandan bahsedeceğiz ama bahsederiz değil mi yani? Eee, bahsedilecek galiba. Ben de dinleyici geliyorum.

Tamam. Bakalım. Hadi oradan. Tamam. Harika. Çok sağ olun gençler. Eee, kendinize çok iyi bakın. Bugün bir saatte bitirelim. Hiç sorun yok. Eee, kaldığımız yerden likeın arkadaşlar. Ama siz hiç posta alanı atmıyorsunuz ki ya. Allah Allah. Atmıyorlar mı? Atıyorlar ya. Atmıyorlar ya. Şeyde görüyorum. Ne onun ismi? LinkedIn'de sürekli paylaşıyorlar. Şeyler bana geliyor yani. Ben taglenmişim ya. Repost. Beni taglememişsiniz o zaman. bana sürekli bir geliyor. Yani bugüne özel mülakat sorusu. Eee bu arada derslerin şeyi periyodu iki haftada bir olarak devam ediyor. Bu böyle eee özel mülakat sorusu. Mü kaçırmışım yani bugüne özel. Ben anladım ne demek

istediğini de. Bir dahaki eğitim ya şöyle bir dahaki eğitimi ben size chaining Türkiye yani benim eski biliyorsunuz blockchain kanalımdan duyuracağım. Benim grubumdan ayrılmayın arkadaşlar. Tamam mı? Türkiye topluluğumuz grubumuz var ya oradan ayrılmayın. Şurada her şeyi buradan duyuruyorum ben çünkü. Tamam. Bir sonraki eğitimimiz şey yapalım. Oracle oradan duyuracağım. Oracle kullanabiliriz. Aynen. Tamam. Bir Oracle yapalım. Olabilir. Chak'e biraz şey yapalım. Eğitimler 2 haftada bir oluyor normalde. İşte şu zaman zarfında arkadaşlar bir tık fazla yoğunlaştık yani hani iş gerçekten çok çığrından çıktı biraz. hukuk ve teknoloji bayağı böyle şey oldu. O nedenle birazcık eee geç duyurabilirim sizlere ama bir ya da

iki hafta içerisinde mutlaka bir eğitim bekliyoruz. O nedenle yarınki etkini inşallah güzel bir atlatalım. Bir de haftaya cumartesi Ankara'daki etkinliği güzelce atlatalım. Sonrasında sizlerle belki daha sık bir şekilde vesaire de olabilir bu arada fark etmeksizin bir görüşeceğiz arkadaşlar. Mesela Selçuk olur bir yayını tamamen ben alırım bir yayını mesela işte Temel bir yayını Talha alabilir. Bir yayını sonra tekrar Selçuk bir yayını Murat Han alabilir vesaire. Ondan sonra eee başka yayında kaç musun ya bu arada? Sanırım 21 galiba şu an. Hım. Evet. Mülakat sorusu. Ya Burakcığım ya canımsın vallah iyi hatırlattın. Şöyle daha sık olsa bence de daha iyi olur.

Harika olur. Aynen. Eee Burak sana özel mülakat sorusu hazırlayıp geleceğim diğer sefere. Diğer sefer bendensiniz. Ondan sonra da aklımda başka bir eğitim serisi var. Ya hepsine nasıl zaman yetiştirelim arkadaşlar ya? işte yetmiyor. Bir de özel hayat problemleri, şu bu falan filan derken bir sürü şey çıkıyor ama ben sizinleyim. Eğitimlere devam merak etmeyin. O zaman gruba katıldınız cansınız. Çok seviyoruz sizleri. O zaman iki hafta sonra görüşmek üzere. Yarın Ankara İstanbul'da sonraki hafta Ankara'da görüşeceğim arkadaşlarıma çok çok selamlar. Sabırsızlıkla bekliyorum. İnsanlar şeyi de anlatsın Elif ya. Kim ne duymak istiyor, ne öğrenmek istiyorlar bir arada buraya bir yere not girin de oradan da takip edelim. Şunu bunu anlat.

Bence az önce paylaştığım Telegram kanalı var ya oraya yazı yazabiliyor mu arkadaşlarım şu an? Bazen kapatıyorum yazı yazmayı. Böyle şey Oracle anlatacağız. Sonra Foundry'yu anlatacağız ama tamam siz de yazarsanız onlara da bakıyor oluruz. Eee, sen mesaj ha mesaj atabiliyorlar gruba. Aynen. Şunun fotoğrafını da değiştireyim ya. Bir dakika buradayken sonrasında da şey yapalım. Like etmiş. Bak şu an bakıyorum 14 kişi like etmiş. Biri benim. 14 kişi like etmiş. Tamam. Güzel [Müzik] güzel. Peki arkadaşlar görüşmek üzere.

Kendinize iyi bakın arkadaşlarım. Kendinize çok iyi bakın. Eee, heh gruba yazabiliyorlar. Harika. Buradan bu gruba lütfen şey yazın, olur mu? Eee, hani nasıl eğitimler istiyorsunuz, nasıl gidelim, ne yapalım, ne edelim vesaire. Bu burada bir ekibiz biz sonuçta. O nedenle bu ekipte güzel işler yapacağız inşallah. Eee, o yüzden iyi bakın kendinize canım arkadaşlarım. Hoşça kalın. Görüşmek üzere. Sabırsak bekliyorum sizleri görmeyi. Hoşça kalın. Hoşça kalın. Hoşça kalın. Bay bay. Kapatıyorum. Kaçtım. Kaçtık. Kaç, kaç, kaç kaç.