RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Herkese Merhaba!

Yakın zamanda Waves Labs açıkladı Ride4Dapps'in merkezi olmayan uygulamalara yönelik RIDE akıllı sözleşme dili uzantısının test ağına sunulmasına adanmış geliştiriciler için yarışma!

DAO vakasını seçtik çünkü Ventuary Sosyal işlevlere sahip dApp'ler geliştirmeyi planlıyor: oylama, bağış toplama, güven yönetimi vb.
Basit bir örnekle başladık Soru-Cevap oturumları ve SÜRÜŞ İDEASI - ile örnek paylaşılan cüzdan.

Bu örneğe bakalım, hipotezleri test edelim ve bazı tuhaflıklara bakalım:

Alice'e sahip olalım - dApp Sahibi
Boob ve Cooper, Alice ortakları ve Alice-BC DAO'nun kurucu ortaklarıdır.
Neli finansmana ihtiyacı olan bir işletme sahibi
Banka – jeton dağıtan bir banka

Aşama 1. Bakiyelerin başlatılması

Waves test ağında token almak için iletişime geçmeniz gerekir. musluk ve jetonların gönderileceği adresi belirtin.
Hesap ayrıntılarınızı açarak adresi IDE'de bulabilirsiniz.
Bank 10 WAVES'ı vurguluyoruz. Daha sonra blok ve işlem tarayıcısı aracılığıyla ulaşıp ulaşmadıklarını kontrol ederiz: yorumcu

Şimdi jetonları bankadan diğer katılımcılara dağıtalım. (Notlar: Waves ağındaki tüm işlemler ücretsiz değildir, dolayısıyla tüm katılımcıların işlem yapabilmesi için minimum pozitif bakiye gereklidir).

1 DALGA = 100000000 birim (dalgacık), çünkü miktarlar yalnızca tamsayı olabilir
0.01 WAVES (İşlem Ücreti) = 1000000

Banka -> [3 DALGA] -> Alice, TransferTransaction yoluyla (Tür: 4).

İşlemlerin imzalandığı ortam SEED'in Bankamızla eşleşip eşleşmediğini kontrol ediyoruz:
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Eşleşen bir başlangıç ​​ifadeniz yoksa Hesaplar sekmesinde ona geçin ve tekrar kontrol edin.
Bundan sonra 3 WAVES Alice'in transferi için bir işlem oluşturuyor, duyuruyor ve imzalıyoruz.
Alice'in verilerini env.accounts değişkeni aracılığıyla da öğrenebilirsiniz. Numaralandırma 0'dan başlar, dolayısıyla Alice env.accounts[1] olur.
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))

Sonuç tarayıcıda da gözlemlenebilir; bunun bağlantısı, yürütmenin hemen ardından bize iade edilecektir. işlemler.

Alice'in bakiyesinin 3 DALGA ile doldurulmasını ve banka bakiyesinin 10 - 3 - 0.01 = 0.699'da kalmasını sağlıyoruz.
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Boob ve Cooper'a 3'er WAVES, Neli, Xena ve Mark'a ise 0.2 WAVES gönderiyoruz.
(Notlar: Tek karakter hatası yaptık ve Neli'ye 0.02 WAVES gönderdik. Dikkatli olun!)

broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))

Tüm katılımcıların bakiyelerini yeniledikten sonra şunu görüyoruz:
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Aşama 2. Bir dApp hesabı oluşturun

Alice'in merkezi olmayan uygulamanın yaratıcısı ve sahibi olacağı konusunda anlaştık.
Hesaplar'a gidin, SEED olarak ayarlayın ve env.SEED'in Alice ile eşleştiğini kontrol edin.

Mümkün olan en basit betiği (sözleşmeyi) Alice'in hesabına yüklemeye çalışalım.
Waves'teki akıllı kişiler, belirli koşullar altında her türlü giden işlemin gerçekleşmesini yasaklayan veya buna izin veren tahminlerdir. Bu durumda bu durum HER ZAMAN olur. Sözleşme kodu doğrudur. Dağıtımı () çağırın.

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

setScript işlemi başına ücret 1400000/100000000 = 0.014 WAVES. Alice'in bakiyesinde 2.986 DALGA kaldı.

Şimdi Alice hesabına daha karmaşık akıllı sözleşme mantığını kurmaya çalışalım. örnek

Ride4Dapps artık 2 yeni açıklama türü içeriyor:

  1. @çağrılabilir(i) — işlemi hangi hesabın çağırdığı/imzaladığı hakkındaki verileri i parametresi olarak alır. DApp hesabının durumundaki değişikliği belirleyen bu işlevin sonucudur. Diğer hesaplar bu açıklamayla işlemler oluşturabilir, işlevler yürütebilir ve dApp hesabının durumunu değiştirebilir.
  2. @Doğrulayıcı(tx) — İşlem tx parametresine sahip işlem doğrulayıcı. RIDE'ın yüklem mantığına karşılık gelir. Bu ifadede, dApp hesabındaki akıllı sözleşmelerin mantığında daha fazla değişiklik yapılmasına izin verebilir veya yasaklayabilirsiniz.

Yapalım Dapp hesabı tüm katılımcılar için ortak bir cüzdan olarak kullanın.
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Hesabınızda şu anda hangi sözleşmenin etkin olduğunu kontrol etmek için akıllı sözleşmenin base64 kodunu blok gezginine kopyalayabilir ve bir kod çözücü kullanarak tanıyabilirsiniz (örneğin)
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Akıllı sözleşmenin mantığının beklediğimizle eşleştiğinden emin oluyoruz.
Alice'in bakiyesinde 2.972 DALGA kaldı.

Bu dApp, bir mekanizma aracılığıyla her katılımcının ortak fona ne kadar katkıda bulunduğunu takip ediyor veri işlemi — DataEntry(currentKey, newAmount)burada currentKey, para yatırma işlevini çağıran hesaptır ve newAmount, yenilenen bakiyenin değeridir.

Boob ve Cooper dApp hesabına 1 WAVES ile para yatırıyorlar.
RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Hata yapıyoruz ve işlem gerçekleşmiyor. Çünkü Bob adına işlem yaptığımıza ikna olmamıza rağmen endekste hata yaptık ve akıllı sözleşmesi olmayan bir Banka hesabı belirttik. Burada önemli bir noktaya dikkat çekmekte fayda var; başarısız işlem başlatma girişimleri için bir ücret alınır kaldırılamaz! Alice'in bakiyesinde 2.972 DALGA kaldı. Bob'un 3 DALGA'sı var.

Bob dApp Hesabına 1 WAVES gönderdi.

broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Bob'un 1.99 DALGA'sı kaldı. Yani Bob 0.01 WAVES komisyon ödedi

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Alice'in bakiyesinde 2.972 DALGA vardı, şimdi 3.972. Alice hesabına da işlem kaydedildi ancak dApp Hesabından (Alice) herhangi bir komisyon alınmadı.
Cooper da hesabı yeniledikten sonra Alice'in bakiyesi 4.972 WAVES oldu.

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Veri sekmesindeki blok gezgininde ortak cüzdanda kimin kaç WAVES'a sahip olduğunu öğrenebilirsiniz.

Cooper, 1 WAVES miktarını genel cüzdanda bırakma konusundaki fikrini değiştirdi ve affinity'nin yarısını geri çekmeye karar verdi. Bunu yapmak için geri çekme işlevini çağırması gerekir.

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Ancak geri çekme fonksiyonunun tamamen farklı parametreleri ve farklı bir imzası olduğundan yine yanıldık. RIDE4DAPPS üzerinde akıllı sözleşmeler tasarlarken bu noktaya dikkat etmelisiniz.

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Cooper'ın bilançosunda şu anda 2.48 DALGA var. Buna göre 3 DALGA - 1 - 0.01 ve ardından + 0.5 - 0.01. Buna göre, her para yatırma ve çekme çağrısının maliyeti 0.01 DALGA'dır. Sonuç olarak dApps sahipleri tablosundaki girişler aşağıdaki gibi değişti.

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Bob da paylaşılan cüzdandan bir miktar para çekmeye karar verdi ancak bir hata yaptı ve 1.5 WAVES çekmeye çalıştı.

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Ancak akıllı sözleşmenin bu duruma karşı bir denetimi vardı.

Xena bir dolandırıcıdır, toplam hesaptan 1 DALGA çekmeye çalıştı.

RIDE ve RIDE4DAPPS'ta Waves akıllı sözleşmelerini yazmayı öğrenme. Bölüm 1 (Çok kullanıcılı cüzdan)

Onun için de işe yaramadı.

Bir sonraki bölümde Alice dApp Hesabının kusuruyla ilgili daha karmaşık konulara bakacağız.

Kaynak: habr.com

Yorum ekle