Pada tanggal 11 dan 12 Mei 2018, tim 8base dari Evgeny Semushin, Gabe Kelly dan saya memutuskan untuk menguji kekuatan saya dan bersaing untuk mendapatkan hadiah AlphaPoint di hackathon
Konsensus 2018 , yang diadakan di New York. Secara total, 33 tim berpartisipasi dalam hackathon, dan di antara para sponsornya adalah raksasa seperti CoinDesk, Microsoft, IBM, Hyperledger dan Quorum.

Di kompetisi AlphaPoint, perlu untuk menulis aplikasi yang terkait dengan pertukaran mata uang digital, jadi kami berharap pengalaman saya dalam hedge fund akan sangat berguna. Kami ingin menciptakan sesuatu yang lebih dari sekadar solusi blockchain yang ada. Tujuan kami adalah untuk memecahkan masalah nyata dengan menerapkan kemampuan unik dari arsitektur blockchain, pengalaman kami sendiri dalam mengembangkan kontrak yang cerdas dan pengetahuan tentang mekanisme internal keuangan.
Kami telah membuat serangkaian kontrak pintar di jaringan Ethereum, yang memungkinkan Anda untuk membuat turunan terdesentralisasi dan mengelola ketentuan mereka berdasarkan blockchain. Dengan solusi kami, setiap pengguna dapat menjadi penjamin berdasarkan kontrak untuk penjualan atau pembelian aset ERC20 apa pun tanpa manajemen eksternal persyaratan dan pemenuhannya. Hasilnya, kami memenangkan hadiah utama.
Di bawah cut, nuansa implementasi proyek ini.
Masalah
Turunan adalah hal yang serius. Kapitalisasi pasar derivatif global diperkirakan mencapai hampir $ 500 triliun. Jika Anda membandingkannya dengan pasar cryptocurrency (sekitar $ 0,4 triliun), uang tunai (sekitar $ 40 triliun) dan pasar saham global (sekitar $ 70 triliun), menjadi jelas betapa pentingnya peran derivatif dalam ekonomi global. Lihat saja
infografis ini. Bank, dana, dan perusahaan secara aktif menggunakan opsi, futures, swap dan derivatif lainnya untuk mengelola risiko.

Kapitalisasi pasar dari berbagai aset:
- Crypto - cryptocurrency
- Uang cair - uang tunai
- Pasar saham publik global - pasar saham global
- Derivatif - derivatif
Kesulitan utama dengan kontrak derivatif adalah bahwa mereka biasanya menggunakan leverage, karena risiko potensial lebih tinggi dari jumlah yang sebenarnya dimiliki para pihak. Karena itu, sistem kompleks penyelesaian bersama muncul, serta persyaratan untuk margin minimum dan permintaan untuk peningkatan margin: tingkat agunan harus tetap sedemikian sehingga keluar dari transaksi selalu lebih mahal daripada pelaksanaannya.
Semua ini runtuh pada 2008. Terjerat dalam seluk-beluk kontrak derivatif, pemain Wall Street kehilangan kendali atas situasi. Akibatnya, "efek domino" bekerja: kesibukan permintaan untuk meningkatkan margin dan ketidakmampuan untuk memenuhi mereka menyebabkan runtuhnya Lehman Brothers dan pemain lain. Pemerintah AS harus turun tangan dan bertindak sebagai penjamin Wall Street dalam jumlah besar kontrak luar biasa untuk derivatif. Kita semua tahu apa yang menyebabkan ...
Solusi

BlockSigma adalah seperangkat kontrak pintar untuk mengatur transaksi pada derivatif cryptocurrency dan mengelola transaksi tersebut. Manajemen agunan didasarkan pada blockchain, oleh karena itu, untuk memastikan kepatuhan dengan persyaratan margin minimum untuk dana yang dicatat dalam kontrak pintar, tidak ada perantara yang diperlukan.
Inovasi utama adalah manajemen margin yang sepenuhnya didasarkan pada blockchain, tanpa kontrol terpusat dan arus kutipan yang diprediksi. Untuk melakukan ini, kami mengintegrasikan protokol
Bancor . Protokol Bancor sudah secara aktif diimplementasikan dalam perdagangan pertukaran dan operasi layanan harian untuk jutaan dolar. Bancor menggunakan fungsi harga deterministik berdasarkan rasio penawaran dan permintaan untuk aset tertentu. Dengan demikian, harga token dasar dapat ditentukan secara langsung pada blockchain, yang memungkinkan Anda untuk secara akurat merumuskan persyaratan untuk margin minimum dan pada waktunya untuk membuat permintaan untuk meningkatkan margin.
Logika kontrak pintar dirancang sedemikian rupa sehingga pembeli opsi secara paksa menutup posisi segera setelah jaminan dalam kontrak pintar jatuh di bawah persyaratan margin minimum wajib. Fungsi menentukan margin minimum memperhitungkan kelebihan cadangan, yang menciptakan insentif ekonomi bagi pembeli opsi untuk memonitor posisi dan mendapatkan cadangan ini (bersamaan dengan kelebihannya) ketika dipaksa menutup jika terjadi pelanggaran persyaratan margin minimum. Pada gilirannya, penjual (penjamin) opsi juga memiliki insentif ekonomi untuk mengisi kembali agunan tepat waktu jika transaksi tidak berhasil sehingga tidak kehilangan kelebihan cadangan.
Implementasi

Kode sumber solusi lengkap diterbitkan dalam
repositori GitHub .
Solusinya terdiri dari tiga file Solidity utama: BlockSigmaBase.sol, BlockSigmaCall.sol dan BlockSigmaPut.sol. BlockSigmaBase mengimplementasikan logika umum, sementara BlockSigmaCall dan BlockSigmaPut mewarisinya dan mengimplementasikan logika kontrak untuk pembelian dan penjualan, masing-masing.
Seperti apa tampilan antarmuka kontrak:
contract BlockSigmaBase is StandardToken { /** * @dev Constructor * @param _underlyingTokenAddress address of the underlying ERC20 token. * @param _currencyTokenAddress address of the currency ERC20 token. * @param _strike option strike denominated in the currency token. * @param _exp expiration timestamp. * @param _minReserve minimum (excess) reserve * @param _underlyingBancorConverter address of the Bancor converter contract that converts underlying token into BNT. * @param _currencyBancorConverter address of the Bancor converter contract that converts currency token into BNT. * @param _issuer address that is allowed to issue(underwrite) new contracts. */ function BlockSigmaBase(address _underlyingTokenAddress, address _currencyTokenAddress, uint256 _strike, uint256 _exp, uint256 _minReserve, address _underlyingBancorConverter, address _currencyBancorConverter, address _issuer) public; /** * @dev get the required maintenance margin level in currency token. */ function getRequiredReserve() public view returns (uint256); /** * @dev Get price of the underlying token expressed in currency token from Bancor */ function getUnderlyingPrice() public view returns (uint256); /** * @dev Ability for writer to issue(underwrite) new contracts * @param amount how many contracts to issue (in wei). */ function issue(uint256 amount) public onlyIssuer returns (bool); /** * @dev Buyer can exercise the option anytime before the maturity. Buyer deposits currency(call) or underlying tokens(put). */ function exercise() public returns (bool); /** * @dev Writer delivers the underlying tokens(call) or currency(put). * @param to which buyer to deliver to. */ function deliver(address to) public onlyIssuer returns (bool); /** * @dev Buyer can force liquidation if exercise is past due or reserve is below requirement */ function forceLiquidate() public returns (bool); /** * @dev Writer can deposit additional reserve * @param amount how much currency token to deposit. */ function depositReserve(uint256 amount) public returns (bool); /** * @dev Writer can withdraw reserve * @param amount how much currency token to withdraw. */ function withdrawReserve(uint256 amount) public onlyIssuer returns (bool); /** * @dev Is reserve below the requirement? */ function isReserveLow() public view returns (bool); /** * @dev Is option series expired? */ function isExpired() public view returns (bool); /** * @dev Can option be liquidated? */ function canLiquidate() public view returns (bool); }
Sekarang pertimbangkan alur kerja dasar untuk kontrak penjualan. Ambil, misalnya, kontrak untuk penjualan token EOS dalam mata uang DAI, yang memungkinkan Anda untuk melakukan lindung nilai aset dalam EOS secara efektif terhadap dolar AS. Siklus hidup kontrak semacam itu adalah sebagai berikut:
- Setiap pengguna dapat menerbitkan kontrak BlockSigmaPut untuk masalah opsi tertentu . Saat menerbitkan, Anda harus menentukan: (1) token dasar, (2) token mata uang, (3) tanggal kedaluwarsa, (4) mogok, (5) alamat penerbit yang berwenang bertindak sebagai penjamin untuk kontrak dalam masalah ini dan (6) persyaratan cadangan minimum di bawah kontrak. Contoh: Jual EOS sebelum 1 Juli 2018 dengan pemogokan 10 DAI dan cadangan minimum 2 DAI. Kontrak semacam itu memberi pembeli hak untuk menjual EOS kepada penjamin sebesar 10 DAI kapan saja hingga 1 Juli 2018. Persyaratan margin minimum untuk setiap kontrak dalam hal ini adalah 2+ maks (0, 10 - harga EOS saat ini).
- Penerbit tertentu bertindak sebagai penjamin untuk sejumlah kontrak tertentu, menempatkan cadangan yang diperlukan dalam token mata uang. Untuk contoh di atas, pada harga pasar EOS saat ini $ 12, penerbit harus menempatkan 2 + maks (0, 10 - 12) = 2 DAI untuk menerbitkan 1 kontrak opsi. Kontrak yang diterbitkan akan dianggap token ERC20 biasa, yang akan memungkinkan mereka untuk terdaftar di bursa untuk dijual.
- Pembeli yang ingin memenuhi kontrak harus memberikan izin untuk mentransfer EOS ke kontrak opsi cerdas dan kemudian memanggil metode latihan. Setelah dimulainya pelaksanaan kontrak, penjual akan memiliki 24 jam untuk mentransfer pembayaran dalam token mata uang. Dalam contoh kami, penjual harus memberikan 10 DAI untuk setiap token EOS.
- Penerbit memberikan izin untuk mentransfer token DAI dari akunnya ke kontrak opsi pintar dan memanggil metode pengiriman. Kontrak pintar yang dilaksanakan secara otomatis menyelesaikan transaksi: transfer DAI dan EOS ke pembeli dan penjual (penerbit), masing-masing, dan cadangan dikembalikan ke penjual.
- (Opsional) Jika penjual belum melakukan pembayaran dalam waktu 24 jam, pembeli dapat menghubungi metode forceLiquidate untuk mengembalikan EOS yang ditempatkan bersama dengan cadangan untuk menutupi tindakan yang salah dari penjual.
Sekarang pertimbangkan bagaimana manajemen agunan diimplementasikan. Dalam contoh kami, harga EOS pada saat kontrak opsi dikeluarkan adalah $ 12. Misalkan dia turun menjadi $ 9. Maka cadangan yang diperlukan adalah 2 + maks (0, 10 - 9) = 3. Ini berarti bahwa penjual juga harus menyetor 1 DAI untuk setiap kontrak di mana ia bertindak sebagai penjamin. Jika penjual tidak dapat melakukan ini, maka pembeli akan memiliki insentif ekonomi untuk secara paksa menutup posisi:
- Jika pembeli menggunakan opsi, ia akan menerima pembayaran 10 - 9 = 1 DAI untuk setiap kontrak (mis. Ia akan membeli EOS di pasar dengan harga $ 9 dan menjualnya kepada penerbit dengan harga $ 10).
- Di sisi lain, jika pembeli secara paksa menutup posisi, dia akan menerima seluruh cadangan, yang untuk contoh kita adalah 2 DAI untuk setiap kontrak.
Ini memotivasi pembeli untuk secara paksa menutup posisi sedini mungkin untuk mendapatkan keuntungan dengan cepat.
Kesulitan
Ini sama sekali bukan solusi yang sudah jadi. Tujuan utamanya adalah untuk menunjukkan kemampuan terobosan dari blockchain dan kontrak pintar untuk mengotomatisasi penyelesaian bersama dan mengelola penyediaan kontrak opsi. Secara tradisional, layanan ini disediakan oleh perantara, dan juga membutuhkan pekerjaan manual dan pembayaran komisi.
Meskipun solusi kami sangat menjanjikan dalam hal ini, kami melihat sejumlah kesulitan serius:
- Protokol Bancor belum diuji dalam kondisi yang ketat. Ini menggunakan fungsi harga deterministik yang konvergen untuk menukar harga melalui arbitrase. Belum jelas bagaimana mekanisme ini akan bekerja dengan volatilitas yang jauh lebih besar dan / atau dengan kesenjangan harga yang serius.
- Mekanisme manajemen agunan tidak stabil terhadap perbedaan harga yang tajam. Secara teoritis, suatu situasi dimungkinkan di mana kewajiban penjamin melebihi cadangan, karena penjamin ingin memutus transaksi, dan pembeli tidak menerima kompensasi penuh. Untuk menghindari ini, Anda dapat meningkatkan cadangan minimum. Selain itu, Anda dapat melakukannya dengan cara tradisional: pengguna sistem menyetor dana ke “kumpulan asuransi” yang didistribusikan, yang secara otomatis mencakup kekurangan dalam kasus luar biasa.
- Karena Bancor menggunakan fungsi harga deterministik, berbagai manipulasi dimungkinkan untuk meningkatkan pembayaran ke satu sisi kontrak opsi sehingga merugikan sisi lain. Ini hanya dapat terjadi dengan cadangan kecil dari konverter Bancor (yaitu dengan sensitivitas tinggi terhadap harga) relatif terhadap jumlah posisi opsi. Dalam hal ini, manipulasi harga di Bancor mungkin lebih menguntungkan daripada pembayaran opsi yang dihasilkan dari manipulasi tersebut. Namun, masalah ini tipikal tidak hanya untuk cryptocurrency, tetapi juga untuk pasar tradisional (misalnya, membakar rumah untuk asuransi).
- Ketidakpastian dalam regulasi. Kami tidak mempelajari aspek peraturan, karena sejauh ini proyek kami memiliki tujuan penelitian murni.
Jika Anda melihat ada masalah yang tidak terdaftar, tulislah di komentar.
Kesimpulan
Solusi yang dijelaskan secara umum mencerminkan perubahan mendasar yang akan dibawa oleh blockchain ke industri keuangan selama beberapa tahun mendatang. Selain penyelesaian yang lebih efektif dan manajemen agunan, teknologi ini akan memperkenalkan aturan yang transparan, memuaskan sendiri dan seragam untuk semua pelaku pasar.
Tim 8base kami tidak berspesialisasi dalam solusi dan protokol niche yang dijelaskan dalam artikel ini. Kami mengharapkan pertumbuhan eksplosif dari teknologi revolusioner yang serupa di tahun-tahun mendatang pada gelombang transformasi digital. Oleh karena itu, kami fokus pada pembangunan infrastruktur tingkat selanjutnya untuk memberikan pengguna bisnis akses mudah ke teknologi ini dan kemampuan untuk mengintegrasikannya ke dalam perangkat lunak perusahaan untuk mencapai tujuan bisnis.
Sumber GitHub