Selamlar,
Discord sunucumuzda paylaştığım Smart Contract Programmer Solidity 0.8 playlistindeki projeleri sırasıyla Türkçe açıklamalar ile sizlere aktaracağım. Bu bölümde orta seviye bir kontrat olan Multi Sig Wallet geliştireceğiz.
Multi Sig Nedir?
Multi Sig, birden çok kişinin dökümanları grup olarak imzalamasını imkan sağlayan bir cüzdan çeşididir.
Multi Sig Wallet Geliştirmek
1-) Eventleri oluşturmak.
Bu adımda cüzdanda gerçekleşecek eventleri oluşturuyoruz.
2-) Cüzdanda imza yetkisine sahip adresleri tanımlamak
Bunun için owners adında address değişkenlerini tutan bir array oluşturuyoruz. Daha sonrasında bir adresin owner olup olmadığını kontrol edebilmek için isOwner mapping’ini kullanıyoruz. Bir işlemin gerçekleşebilmesi için gerekli olan imza sayısını tutmak için de required değişkenini kullanıyoruz.
3-) Transactionların tanımlanması ve liste içerisinde tutulması
Bir transaction’ın sahip olması gereken özellikleri tanımlıyoruz ve sonrasında transactionları saklamak için bir array oluşturuyoruz. Bir transaction’ın gerçekleşip gerçekleşmediğini kontrol edebilmek için mapping kullanıyoruz.
4-) Contract’ın constructure metodunun tanımlanması ve parametrelerin atanması
Parametre olarak verilen owners listesi ve required sayılarının atamasını sağlıyoruz
5-) Contract’ın ether alabilmesini sağlıyoruz
6-) Submit fonksiyonunun oluşturulması
Submit işlemini yalnızca ownerlar gerçekleştirebilir. Transaction submitlenir ama henüz onaylanmaz. Sadece ownerların gerçekleştirebilmesi için modifier oluşturuyoruz.
7-) Approve fonksiyonunun oluşturulması
Transaction submitlendikten sonra ownerlar tarafından onaylanması gerekir. Bundan dolayı Approve fonksiyonunu yazıyoruz ve gerekli modifierlari oluşturuyoruz.
8-) Approve sayısının alınması
Transaction’ın execute edilebilmesi icin required sayısından daha fazla onay alması gerekir. Bunu kontrol etmek için bir fonksiyon yazıyoruz.
9-) Execute fonksiyonunun yazılması
Transaction submitlendi (onaya yollandı)
Transaction approvelandı (onaylandı)
Transaction execute edilmeli. (gerçekleştirilecek)
10-) Revoke fonksiyonunun yazılması
Bazı transactionlar’ı onaylamak istemeyebiliriz. Bunun için revoke fonksiyonunu yazıyoruz.
Tebrikler! Kendi Multi Sig Wallet’ınızı geliştirdiniz.
Kodun son hali
Kodu adım adım kendiniz yazmak isterseniz kaynak video:
For contact: twitter.com/abdthedev_