Merhaba Dünya Akıllı Sözleşmesi
Öncelikle, önceki bölümdeki gibi bir sözleşme oluşturmayı incelemeden önce, bir selamlama mesajı döndüren basit bir sözleşme yazarak bazı temelleri gözden geçirelim. Buna merhaba dünya akıllı sözleşmesi adını vereceğiz.
Bir sözleşme, bir start
fonksiyonunu dışa aktaran bir JavaScript modülü ile tanımlanır. Merhaba dünya akıllı sözleşmesi için start
fonksiyonunun tanımı şu şekildedir:
<<< @/../snippets/zoe/src/01-hello.js#start
Merhaba dünya akıllı sözleşmesi için start
fonksiyonunun yanı sıra basit bir greet
fonksiyonumuz olacak. greet
fonksiyonu, bir dize parametre alır (örneğin, fonksiyonu çağıran kişinin adı) ve kişiye özel bir selamlaşma mesajı döner.
<<< @/../snippets/zoe/src/01-hello.js#greet
greet
fonksiyonu, diğer tüm kamu fonksiyonları ile birlikte sözleşmenin publicFacet
aracılığıyla erişilebilir olmalıdır. start
fonksiyonu, bir publicFacet
özelliği ile bir nesne döner. Merhaba dünya sözleşmesinde, start
fonksiyonu greet
fonksiyonunu sözleşmenin publicFacet
'inin bir metodu olarak tanımlayarak açığa çıkarır, aşağıda gösterildiği gibi:
<<< @/../snippets/zoe/src/01-hello.js#publicFacet
publicFacet
özelliğinin değerini bir Far(...)
çağrısı içinde sararak, bunu uzaktan erişilebilen bir nesne olarak güvenli bir şekilde açığa çıkarırız. Bu, ayrıca hata ayıklama için Hello
adında önerilecek bir arayüz adı verir.
Far
hakkında daha sonra.
Tüm bunları bir araya getirdiğimizde:
<<< @/../snippets/zoe/src/01-hello.js#contract
Bu kodu src
dizinine 01-hello.js
adlı bir dosyaya kaydedelim.
Bir sözleşmeyi test etme
Agoric sözleşmeleri genellikle çerçevesi kullanılarak test edilir. Test dosyası, ortamını oluşturmak için import @endo/init
ile başlar. Ayrıca, asenkron yöntem çağrıları yapmak için E()
'yi ve ava
'dan test
fonksiyonunu içe aktarıyoruz. Asenkron yöntem çağrıları için E()
kullanımı hakkında daha sonra. Bu import
ifadelerine takiben, greet
yönteminin beklenildiği gibi çalıştığını doğrulayan basit bir test yazıyoruz.
Tüm bunları bir araya getirdiğimizde:
<<< @/../snippets/zoe/contracts/test-zoe-01-hello.js#test-01-hello
Bu kodu test
dizininde test-01-hello.js
adını verdiğimiz bir dosyaya kaydedelim. Hem src
hem de test
dizinleri, aynı contract
dizininde bulunmalıdır. Testi çalıştırmak için aşağıdaki komutu uygulayalım:
yarn ava --match="contract greets by name"
Çıktının sonunda aşağıdaki satırı görmelisiniz:
1 test passed
Tebrikler! İlk akıllı sözleşmenizi yazdınız ve test ettiniz. Bir sonraki hedefimiz, bir akıllı sözleşmenin durumunu öğrenmektir.
Eğer bir sorun yaşıyorsanız, örnek reposundaki dalını kontrol edin.
Ayrıca bakınız: