
Obyte adalah platform crypto terbuka yang menggunakan Directed Acyclic Graph (DAG, diarahkan grafik tanpa siklus) sebagai registri transaksi, bukan blockchain, dengan akses bebas dan sama ke registri untuk semua peserta. DAG, tidak seperti blockchain biasa untuk semua orang, memungkinkan untuk mengirim data ke registri terdistribusi secara langsung tanpa partisipasi penambang karena penolakan blok dan dari pemesanan transaksi yang ketat. Dibandingkan dengan blockchains, arsitektur DAG tidak memerlukan kelas-kelas pengguna yang istimewa, seperti penambang, pemalsu atau blokir produsen, sehingga tidak ada perantara antara pengguna dan registri pada jaringan, dan setiap orang memiliki akses yang sama dan langsung untuk menambahkan transaksi ke registri.
Pada artikel ini, saya ingin berbicara tentang Obyte, Agen Otonomi dan membandingkan semua ini dengan Ethereum.
Apa itu Agen Otonom?
Ini adalah program yang kode sumbernya disimpan dalam registri (DAG) dan memiliki alamatnya sendiri, mirip dengan alamat peserta jaringan lainnya. Program ini menjelaskan tindakan yang akan dilakukan dalam menanggapi pengiriman koin dan data ke alamat ini. Jika Anda terbiasa dengan kontrak pintar Ethereum, Agen Otonomi sangat dekat artinya.
Contoh dari kehidupan adalah mesin penjual otomatis. Menanggapi nomor produk yang diketik pada keyboard dan memasukkan jumlahnya, perangkat memberi pengguna produk itu sendiri. Ada satu perbedaan penting antara AA dan mesin penjual otomatis: mesin penjual otomatis dikontrol oleh pemiliknya, dan pengguna hanya berharap bahwa tindakan perangkat akan sesuai dengan harapan pengguna. Agen Otonomi benar-benar otonom: seluruh program disimpan dalam DAG, kode sumbernya dapat dilihat oleh semua peserta jaringan, tidak dapat diubah, dinonaktifkan atau dihapus.
Misalnya, Anda dapat memprogram AA untuk bertukar token. Untuk pemrograman, bahasa yang dikembangkan untuk tugas ini adalah Oscript.
Obyte juga memiliki konsep kontrak pintar, tetapi tidak sama dengan kontrak pintar AA atau Ethereum. Perbedaan utama antara kontrak pintar AA dan Obyte adalah bahwa kontrak pintar, seperti kontrak reguler di dunia nyata, beroperasi antara dua peserta dan mengatakan dalam kondisi apa suatu kontrak dapat dijalankan. Sederhananya, serangkaian kondisi yang memungkinkan atau melarang transaksi. Pada saat yang sama, agen otonom adalah peserta yang diprogram secara independen, berinteraksi dengan mana kami memulai tanggapannya (transaksi baru, dll.).
Eksekusi kode AA dimulai setelah transaksi pemicu telah stabil (yaitu, ada konsensus pada transaksi dan pengeluaran ganda jelas tidak ada). Setiap node penuh akan mengeksekusi kode AA pada salinan registri, dan mencatat hasil eksekusi hanya dalam database-nya. Tidak perlu menyampaikan hasil eksekusi ke node lain, karena keadaan semua peserta dalam jaringan adalah sama dan hasil eksekusi juga deterministik dan sama untuk semua orang. Keadaan akhir dari registri ditentukan hanya oleh aturan eksekusi AA, dan tidak dikendalikan oleh penambang, atau pemilih, atau oleh orang lain.
Mengapa mereka dibutuhkan?
AA memungkinkan dalam mode desentralisasi untuk membuat hal-hal seperti
- opsi
- kontrak berjangka
- koin algoritmik yang stabil
- aset sintetis
- turunan lainnya
- pinjaman keamanan
- perdagangan margin
- pertukaran desentralisasi
- kata-kata desentralisasi
- saluran pembayaran
- permainan ekonomi
- pembuat pasar
- manajemen portofolio investasi otomatis
Dan masih banyak lagi ...
Transparansi Pengguna
Obyte dari hari pertama keberadaannya memberikan kesempatan untuk menyimpulkan kontrak yang cerdas antara manusia dalam bentuk yang dapat dipahami manusia. Transparansi dan kemudahan persepsi oleh pengguna telah dan tetap menjadi salah satu prinsip utama dalam menciptakan platform.
Terlepas dari kenyataan bahwa Oscript adalah bahasa pemrograman, dan diciptakan untuk persepsi oleh mesin dan programer, dan bukan orang biasa, kami berusaha untuk tidak menyimpang dari prinsip kami. Oleh karena itu, bagi orang yang tidak terbiasa dengan pemrograman, dompet GUI akan mencoba menafsirkan kode AA sebelum melakukan transaksi dan menunjukkan hasilnya kepada orang tersebut dengan cara yang ia mengerti:

Oscript - bahasa agen yang berdiri sendiri
Pengembang yang akrab dengan bahasa C-like tidak akan kesulitan bekerja dengan AA.
Pertama, saya ingin melihat fitur-fiturnya.
AA hanya berfungsi untuk memicu transaksi. Ini bisa berupa pembayaran, atau transfer data AA. Misalnya, Anda meneruskan data
{foo: 'bar', nilai: 100} dan mereka akan diterima oleh AA sebagai
input , dan berdasarkan ini, tindakan dilakukan.
Untuk apa AA memiliki akses
- untuk setiap variabel yang menggambarkan kondisi DAG saat ini
- Jumlah yang diterima dalam transaksi pemicu
- data dari pemicu transaksi
- yang mengirim transaksi pemicu
- variabel keadaan AA kami dan lainnya
- akses ke berbagai data publik dari DAG, seperti data_feed dari oracle, pengesahan nama asli, dll.
- saldo AA kami dan lainnya
- informasi aset
Fitur Oskrip
Oskrip - TIDAK Turing bahasa lengkap, namun, dalam gudang ada:
- operasi aritmatika
- operasi logis (dan, atau, dll.)
- perbandingan
- penggabungan string
- beberapa fungsi matematika
- fungsi kriptografi (pembuatan hash, verifikasi tanda tangan)
- percabangan (jika / lain)
- tidak ada loop dan fungsi (untuk mencegah rekursi tak terbatas). Anda dapat menemukan lebih banyak di manual di tautan ini
Untuk mengontrol penggunaan sumber daya dan mencegah skenario berbahaya, AA dibatasi hingga maksimum 100 operasi padat karya, seperti fungsi kripto atau akses basis data. Verifikasi terjadi pada saat penyebaran kode Agen.
Tetapi tidak ada formula rumit untuk menghitung biaya kinerja AA. Tidak ada rumus seperti itu sama sekali, eksekusi kode gratis, pengguna, seperti AA sendiri, hanya membayar untuk menambahkan data ke registri DAG, seperti anggota jaringan lainnya - 1 byte dalam mata uang Obyte untuk setiap byte data yang ditambahkan ke DAG. Namun, AA harus menjaga keseimbangannya dalam byte tidak kurang dari ukuran semua variabel keadaan yang disimpannya.
Jika, pada eksekusi, AA memicu eksekusi AA lain, maka pertama transaksi yang dihasilkan dari AA pertama akan dicatat dalam registri, dan hanya kemudian AA selanjutnya akan mulai dieksekusi.
Agen Otonomi dalam Tindakan
Sekarang kita akan menulis skrip ping-pong yang paling sederhana. Kami mengirim uang AA, ia meninggalkan sejumlah uang untuk dirinya sendiri dan mengirimkan sisanya kembali. Kami akan memecahkan masalah yang sama pada dua platform -
Obyte dan
Ethereum, dan bandingkan. Dalam Ethereum, entitas AA yang serupa biasanya disebut sebagai kontrak pintar (meskipun kertas putih Ethereum menyebut mereka agen otonom sekali).
Ethereum
Saya akan melakukan segalanya melalui
geth. Jalankan node dalam mode
cahaya dan tunggu sinkronisasi.
geth --testnet --ws --wsapi "admin,db,eth,net,web3,personal" --syncmode "light" --allow-insecure-unlock
Sekarang kami memiliki dua opsi untuk pengembangan acara:
- tunggu hingga rekan terdeteksi dan sinkronisasi dimulai
- tambahkan teman sebaya secara manual
Saya memilih opsi kedua. Dan
rfikki dan
daftar perintah yang sudah jadi datang untuk
menyelamatkan . Kami terhubung ke simpul dan menambahkan rekan:
geth attach ws://127.0.0.1:8546 admin.addPeer("enode://bc827e035cf3a42c249374be7ddc9c2fb819765c440116cf01aa6a8d70d03043d29ccd42b32a283f5ab08294467eb3b92fc40111e9af1770c84bc116edae89c0@104.248.199.52:30303"); admin.addPeer("enode://2d86877fbb2fcc3c27a4fa14fa8c5041ba711ce9682c38a95786c4c948f8e0420c7676316a18fc742154aa1df79cfaf6c59536bd61a9e63c6cc4b0e0b7ef7ec4@13.83.92.81:30303"); admin.addPeer("enode://053d2f57829e5785d10697fa6c5333e4d98cc564dbadd87805fd4fedeb09cbcb642306e3a73bd4191b27f821fb442fcf964317d6a520b29651e7dd09d1beb0ec@79.98.29.154:30303"); admin.addPeer("enode://690c93ac2f6e6f711a175cc6a73a3cf3b649eea83c458ce34364c69d1b557bb408693f06bdf6fc31538a744d5c231fdd904cce5665d04ce165032c0fc009a208@104.248.199.160:30303");
Setelah itu, proses sinkronisasi akan dimulai, dan agar tidak kehilangan waktu, buat akun. Untuk melakukan ini, kami akan menulis perintah berikut di koneksi kami dan mengatur kata sandi:
personal.newAccount();
Di konsol kita akan melihat alamatnya, menyalinnya dan pergi ke
faucet . Rekatkan di bidang dan klik kirim.
Sekarang periksa sinkronisasi:
eth.syncing
Dan periksa saldo:
eth.getBalance(eth.accounts[0])
Persiapan sudah selesai dan sekarang kita bisa beralih ke menulis dan menerbitkan kontrak.
Buat file, misalnya pingPong.sol dan tulis kontrak kami ke dalamnya:
pragma solidity ^0.5.10; contract PingPong{ function deposit() payable public { msg.sender.transfer(msg.value - 20000); } function getBalance() public view returns(uint256){ return address(this).balance; } }
Dalam kontrak ini, kami membuat dua fungsi publik:
deposit - panggilan dengan pengisian dan pengembalian minus 20.000.
getBalance - hanya menunjukkan saldo alamat kontrak kepada kami.
Selanjutnya, kita perlu mengkompilasinya, untuk ini saya menggunakan
modul npm solc :
solcjs -o . --bin --abi pingPong.sol
Sekarang siapkan file yang dikompilasi untuk unduhan cepat di
geth client. Ubah file
abi agar terlihat
var pingPongContract = eth.contract([{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]);
Dan
bin untuk melihat
personal.unlockAccount(eth.accounts[0]) var pingPong = pingPongContract.new( { from: eth.accounts[0], data: "", gas: 500000});
Pergi ke klien
geth dan hubungkan skrip ini
loadScript('sol2/pingPong_sol_PingPong.abi') loadScript('sol2/pingPong_sol_PingPong.bin')
Di mana
sol2 adalah jalur ke folder skrip Anda. Setelah menjalankan skrip kedua, ia akan meminta Anda untuk membuka kunci akun Anda. Selesai
Selanjutnya, tulis `pingPong`. Jika akibatnya Anda melihat bahwa alamatnya tidak kosong - kontrak telah diterbitkan, jika tidak - Anda perlu menunggu sedikit dan coba lagi.
Setelah itu, kami akan menjalankan fungsi
setoran , mengirim uang, dan memeriksa bagaimana semuanya berjalan.
personal.unlockAccount(eth.accounts[0]) pingPong.deposit({from: eth.accounts[0], value: 500000});
Pada output, kita dapat melihat id transaksi. Salin, kita akan membutuhkannya nanti. Sebelum ini, kita memanggil fungsi
getBalance dan kita melihat ada 20.000, yang kita kurangi.
pingPong.getBalance()
Sekarang mari kita beralih ke etherscan. Di sana, Anda akan melihat dalam "Transaksi Internal" pembayaran kembali 48.000. Ternyata seperti ini -
https://ropsten.etherscan.io/tx/0xc3fab9f39f2ec32eadffc54608a61c3c77c4ac0f3630037b5c312d3b66ee85f8#internalObbyte
Untuk publikasi kami akan menggunakan
editor OscriptBersihkan template yang ditawarkannya kepada kami. Kami akan menulis dari awal. Minimum AA adalah objek dengan array pesan.
{ messages: [] }
Karena kami akan mengirim pembayaran, kami perlu menambahkan objek dengan properti yang menunjukkan ini ke pesan:
{ messages: [ { app: 'payment', payload: { asset: 'base', outputs: [ {address: "{trigger.address}", amount: "{trigger.output[[asset=base]] - 20000}"} ] } } ] }
Di sini kita melihat metadata standar untuk pembayaran. Mereka diubah menggunakan "{}" di baris. Objek
pemicu digunakan untuk mentransfer nilai, ia menyimpan informasi tentang pembayaran yang diterima. Anda dapat mempelajari lebih lanjut tentang sintaks
dalam dokumentasi .
Kami menempelkan kode ini ke editor dan kemudian klik Menyebarkan.
Itu saja!AA diterbitkan dan di bawah ini kami melihat alamatnya. Sekarang kita membutuhkan
dompet GUI testnet , instal dan jalankan. Selanjutnya, untuk mendapatkan beberapa koin percobaan, buka "obrolan", pilih "Bot Store" dan tambahkan "Faucet Bot" di sana. Obrolan kami akan terbuka, klik pada menu di sebelah kiri dan pilih "Masukkan alamat saya"

Kemudian kami mengirim dan menunggu pesan bahwa uang itu datang kepada kami: "Pembayaran: ...". Selanjutnya, kita perlu pergi ke yang utama dan menunggu sampai tulisan "Termasuk konfirmasi tertunda" menghilang (beberapa menit), ini berarti bahwa koin yang diterima dikonfirmasi dan mereka dapat digunakan.
Yang tersisa bagi kita adalah pergi ke "menerima", masukkan alamat AA, masukkan jumlah "500000" dan tekan "kirim". Sekarang kita perlu menunggu sampai transaksi stabil (memeriksa histori). Ini perlu dipicu. Kami akan memeriksa apakah uang itu dikembalikan kepada kami:

Itu saja, itu berhasil. Dengan pergi ke penjelajah
di AA, kita dapat melihat bahwa saldonya telah meningkat sebesar 20.000 dikurangi biaya untuk membayar kita. Di Obyte, Agen Otonomi sendiri membayar komisi untuk tindakan yang mereka lakukan.
Kesimpulan
Seperti yang dapat kita lihat dari perbandingan di atas, Obyte jauh lebih mudah untuk menerbitkan, menulis, dan mengendalikan apa yang terjadi. Sebagai contoh, dalam Ethereum jauh dari selalu bahwa kita dapat dengan tepat memilih gas dari transaksi keluar, karena itu dapat dikonfirmasi untuk waktu yang sangat lama. Di antara kelebihan Ethereum, seseorang dapat memilih publikasi cepat dan konfirmasi (sekitar satu menit, tergantung pada gas yang disediakan). Sementara dalam publikasi Obyte berlangsung segera, dan waktu konfirmasi tergantung pada beban jaringan, dengan beban ringan - sekitar 10-15 menit, dengan beban besar - kurang dari tiga menit.
Dalam artikel berikut, kami akan menganalisis beberapa contoh yang menarik dan hidup, misalnya, bagaimana menerapkan DAO sederhana menggunakan AA dan menjawab pertanyaan Anda.
Persaingan
Sehubungan dengan inovasi, kami mengundang pengembang untuk bergabung dalam kompetisi untuk aplikasi Agen Otonomi yang paling menarik dan mengesankan. Kompetisi sudah berlangsung dan akan berlangsung hingga pertengahan Oktober. Sebagai contoh dari aplikasi yang sudah diterima, ada beberapa crowdfunding AAs, dua pertukaran, berbagai "pendaftar" dan pelacak reputasi, lotere, game, dll. Setiap dua minggu, juri tim Obyte mengumumkan entri terbaik.
Total anggaran kontes adalah
$ 38.000 (pada tingkat
GB pada saat peluncuran).
Anda dapat membaca lebih lanjut tentang kompetisi
di artikel ini .