Bu yazıda hedef kitle IOTA ile geliştirmeye ve aynı zamanda programlamaya yeni giriş yapacak kişilerdir.
IOTA’nın ne olduğu hakkında bilgisi olmayanları şöyle alalım. IOTA’nın aslında bir shitcoin olmadığını ve sunduğu olanakları test etmenin bir çok kolay yolu var. Bunlardan birisi de testnet’i kullanarak sıfır değerli bir transaction ( işlem ) oluşturmak. Bunun için gerekenler:
- Node.js 8+
- Node Package Manager ( NPM )
- Kod düzenleyici ( Notepad++, Atom vs. )
- Terminal ( cmd )
- Internet bağlantısı
Başlamak için öncelikle bir çalışma alanı oluşturmamız gerekiyor: ( terminal komutları Windows kullanıcıları için farklı olabilir )
$ mkdir iota-example && cd iota-example
Daha sonra IOTA için NPM paketlerini yüklüyoruz:
$ npm install iota.lib.js @iota/curl-remote
Bu işlemin sonucunda package.json ve node_modules dosyaları iota-example içerisinde oluşturulmuş olacak. Daha sonra oluşturduğumuz iota-example dosyasına giderek index.js adında bir metin dosyası oluşturalım.
index.js dosyasına aşağıdaki kodu kopyalayıp yapıştırın.
const IOTA = require('iota.lib.js') const iota = new IOTA({ provider: 'https://nodes.testnet.iota.org:443' }) const remoteCurl = require('@iota/curl-remote') remoteCurl(iota, `https://powbox.testnet.iota.org`, 500) iota.api.getNodeInfo((error, success) => { if (error) { console.log(error) } else { console.log(success) } }) const trytes = 'HELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDD' const message = iota.utils.toTrytes('Hello World!') const transfers = [ { value: 0, address: trytes, message: message } ] iota.api.sendTransfer(trytes, 3, 9, transfers, (error, success) => { if (error) { console.log(error) } else { console.log(success) } })
Şimdi yukarda ne yazdığını açıklama kısmına gelelim:
const IOTA = require('iota.lib.js') const iota = new IOTA({ provider: 'https://nodes.testnet.iota.org:443' }) const remoteCurl = require('@iota/curl-remote') remoteCurl(iota, `https://powbox.testnet.iota.org`, 500)
Öncelikle IOTA’nın sağladığı Javascript kütüphanesini çalışma ortamımıza ekliyoruz ve bu değişken bir provider değişkeni içeriyor. Bu kısmı testnet node’larından biri olan nodes.testnet.iota.org:443’ü ekliyoruz ve yapacağımız bütün işlemler bu node üzerinde gerçekleşecek.
remoteCurl ise yapacağımız PoW ( proof of work ) işlemi için gerekli. AttachToTangle işlemini gerçekleştiren, PoW için oluşturulmuş özel bir servistir.
iota.api.getNodeInfo((error, success) => { if (error) { console.log(error) } else { console.log(success) } })
Bu kod parçacığı bağlandığımız node ile ilgili bilgileri verir.
const trytes = 'HELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDD' const message = iota.utils.toTrytes('Hello World!') const transfers = [ { value: 0, address: trytes, message: message } ]
Trytes değişkeni, göndereceğimiz transaction’ın hangi adrese ( receive address ) gideceği bilgisini barındırır. Buraya kendi cüzdanınızın adresini yazabilirsiniz. ( DİKKAT SEED DEĞİL! )
Message kısmı ise oluşturacağınız transaction’ın signatureMessageFragment kısmında görüntülenecek mesajı barındırır.
Transfers objesi ile birlikte transaction’ı hazırlamış oluyoruz. Bir adres ve mesaj içeriyor. Sıfır değerli işlem olduğu için değere 0 veriyoruz.
iota.api.sendTransfer(trytes, 3, 9, transfers, (error, success) => { if (error) { console.log(error) } else { console.log(success) } })
sendTransfer fonksiyonu, oluşturduğumuz transaction’ı Tangle’a gönderen kısım. Aldığı parametreler trytes ( receive address ) , depth , MWM ( minimum weight magnitude ) , transfer edilecek veridir. MWM, testnet için en az 9 olmalıdır böylelikle transaction’lar mainnet’e göre daha çabuk onaylanacaktır.
Evet bu kadar! 0 değerli bir işlem oluşturup Tangle’a göndermek bu kadar basit. Son olarak komut satırına
$ node index.js
yazıp enter’a bastığınızda karşınıza şöyle bir ekran çıkacak:
Burada yazan hash kodunuzu ( OVGCAYGWIOMKBHEWXEPQLJBAFPMPALFJJILFVKOPPYASGJ9FQYNBRLJCVZLDIYIEYIHECNECFMRCRD999 ) kopyalayıp şu linkteki sitede aradığınızda ilk oluşturduğunuz transaction’ın Tangle’a eklendiğini göreceksiniz. 🙂
Sonraki yazımda oluşturduğunuz transaction’ları nasıl Tangle’dan çekebileceğinizi göstereceğim.