Dari Blockchain ke DAG (II)
Kehidupan MEERDAG Dulu dan Sekarang
Kata pengantar
Prospek pengembangan blockchain 3.0 pernah dibahas dengan hangat, di antaranya DAG dianggap sebagai generasi baru teknologi blockchain yang paling menjanjikan setelah Bitcoin dan Ethereum. Jadi apa asal usul DAG blockchain? Apa konsep teknisnya?
DAG dan blockchain pada awalnya adalah dua teknologi yang berbeda, tetapi kombinasi keduanya, konsep "DAG blockchain" dan kemunculan pertamanya di pusat perhatian, dimungkinkan oleh dua orang Israel, Yonatan Sompolinsky dan Aviv Zohar, pelopor konsep perintis ini. .
Protokol GHOST yang diusulkan oleh Aviv Zohar diadopsi oleh Ethereum pada tahap awal. Protokol ini memecahkan masalah keamanan yang disebabkan oleh garpu rantai. Struktur data blockchain bercabang berevolusi dari rantai tunggal menjadi rantai Pohon. Belakangan, Aviv Zohar lebih lanjut mengusulkan protokol Inklusif. Di bawah aturan protokol Inklusif, struktur data blockchain berkembang menjadi grafik asiklik terarah (DAG). Dengan eksplorasi berkelanjutan DAG oleh DAGlabs, konsep kerangka kerja BlockDAG dan arsitektur teknis telah ditetapkan secara bertahap, di mana protokol SPECTRE, protokol PHANTOM, dan protokol GHOSTDAG dirilis secara berurutan.
Qitmeer sedang mengeksplorasi protokol konsensus yang membahas skalabilitas (ketersediaan) tanpa mengorbankan desentralisasi (mempartisi toleransi kesalahan) dan keamanan (konsistensi) di awal proyek, dan menemukan bahwa itu bertepatan dengan filosofi desain BlockDAG.
Dalam arti sempit, BlockDAG dapat dipahami sebagai kerangka kerja teknis dari protokol konsensus, yang bertujuan untuk lebih meningkatkan teknologi DAG dengan kinerja konkurensi tinggi dengan alasan memastikan desentralisasi dan keamanan. Mekanisme konsensus PoW berbasis bukti kerja dapat memastikan bahwa jaringan blockchain cukup terdesentralisasi, sehingga menambang blok untuk menghasilkan blok telah menjadi fitur teknis yang penting, sehingga disebut BlockDAG.
Tim Qitmeer telah membuat banyak pengoptimalan tingkat teknik untuk algoritme konsensus GHOSTDAG dan SPECTRE, dan telah membuat protokol MeerDAG dengan karakteristiknya sendiri dengan tetap mempertahankan keunggulan kedua protokol.
1. Struktur dasar DAG
1.1 Seperti apa tampilan DAG?
Kita semua sangat akrab dengan struktur data pohon Merkle. Di dalam setiap blok Bitcoin, pohon Merkle digunakan untuk mencatat informasi transaksi, lihat gambar di bawah
Dapat dilihat bahwa pohon Merkle termasuk dalam struktur pohon berarah, setiap simpul dalam pohon hanya dapat menunjuk ke satu simpul sebelumnya, dan seluruh data memiliki arah aliran yang jelas. Struktur DAG memungkinkan setiap simpul menunjuk ke beberapa simpul sebelumnya, dan seluruh aliran data juga memiliki arah yang jelas. Struktur data lainnya adalah grafik berarah. Tidak seperti DAG, grafik berarah memungkinkan data mengalir kembali, dan aliran data dari seluruh struktur tidak terlalu jelas. Lihat gambar 2 untuk perbedaan antara ketiganya.
1.2 Blockchain adalah struktur DAG khusus
Setelah memiliki pemahaman intuitif tentang struktur DAG, mari kita cari tahu mengapa blockchain dianggap sebagai struktur DAG khusus?
Apakah garpu blockchain terkait dengan kecepatan pembuatan blok dan kecepatan penyiaran. Ketika kecepatan produksi blok melebihi kecepatan siaran, beberapa blok akan disiarkan secara bersamaan, dan percabangan akan terjadi. Semakin banyak garpu, semakin buruk keamanannya. Untuk mengurangi garpu, Bitcoin menemukan keseimbangan antara kinerja dan keamanan: sebuah blok dibuat setiap sepuluh menit. Sekarang mari kita asumsikan bahwa waktu untuk setiap blok cukup lama sehingga tidak ada blok baru yang akan ditambang sebelum blok sebelumnya disiarkan. Kemudian struktur dari blockchain ini adalah rantai tunggal, lihat gambar 3
Faktanya, karena keterlambatan jaringan dan alasan lainnya, bifurkasi pasti akan terjadi, sehingga struktur blockchain yang sebenarnya akan seperti yang ditunjukkan pada gambar 4, dan hanya satu dari rantai utama yang valid (putih) yang akan dipilih melalui prinsip rantai terpanjang dari rantai tersebut. konsensus buku besar. Informasi transaksi di blok yang tersisa (merah) tidak valid dan tidak akan diadopsi.
Sekarang kesampingkan konsensus buku besar, yaitu abaikan cara memilih rantai utama yang efektif. Dari perspektif struktur jaringan yang mendasarinya, struktur blockchain tipikal ditunjukkan pada gambar 5, dan struktur DAG tipikal ditunjukkan pada gambar 6.
Dapat dilihat bahwa satu-satunya perbedaan antara kedua struktur tersebut adalah blok DAG dapat menunjuk ke beberapa blok sebelumnya, sedangkan blockchain hanya dapat menunjuk ke satu-satunya blok sebelumnya. Secara khusus, header blok dari blockchain hanya dapat berisi nilai hash dari satu blok, menunjuk ke satu-satunya blok induk; sedangkan header blok dari blok di bawah struktur DAG dapat berisi nilai hash dari beberapa blok, menunjuk ke blok sebelumnya yang berbeda. Seperti yang ditunjukkan pada gambar 7.
Sekarang kami memperkenalkan koefisien fork K, yang mengacu pada jumlah fork yang diizinkan oleh jaringan.
Ketika K = 0, seluruh jaringan tidak mengizinkan percabangan, seperti yang ditunjukkan pada gambar 3.
Jaringan yang tidak mengizinkan percabangan ini adalah blockchain.
Bitcoin memenuhi definisi ini; meskipun Ethereum memiliki garpu blok paman, blok paman ini hanya digunakan untuk menilai bobot rantai utama, dan mereka tidak akan ditambahkan ke rantai utama pada akhirnya (catatan blok paman Informasi transaksi tidak termasuk dalam rantai utama ), jadi Ethereum juga memenuhi definisi ini.
Nilai K dari jaringan DAG harus bilangan bulat lebih besar dari 0. Jadi dari sudut pandang struktural, DAG adalah perpanjangan dari struktur blockchain, dan blockchain adalah DAG khusus dan disederhanakan.
1.3 Dampak struktur DAG terhadap kinerja
Sederhananya, kita dapat menganggap DAG sebagai struktur jaringan yang memungkinkan percabangan, dan jumlah percabangan yang diperbolehkan ditentukan oleh koefisien percabangan K.
Jadi apa sebenarnya arti jaringan yang memungkinkan percabangan? Artinya kecepatan pembuatan blok bisa melebihi kecepatan broadcast. Di satu sisi, ini mengarah pada lebih banyak transaksi yang dikemas per satuan waktu; di sisi lain, ketika blok A disiarkan oleh seluruh jaringan, blok B bercabang lainnya juga disiarkan oleh seluruh jaringan, dan akhirnya beberapa node hanya akan mengonfirmasi A, node lain hanya akan mengonfirmasi B, jadi DAG mengizinkan node dalam jaringan untuk merekam informasi yang berbeda pada waktu yang sama. Perpaduan kedua aspek tersebut membuat DAG menampilkan karakteristik konkurensi tinggi dan sinkronisasi lemah.
DAG adalah sejenis pembukuan asinkron, yang dapat sangat meningkatkan kecepatan pemrosesan informasi jaringan, yaitu TPS.
Blockchain adalah jaringan pembukuan sinkron yang kuat, yang mengharuskan setiap node dalam jaringan untuk merekam informasi yang sama pada waktu yang bersamaan. Namun, persyaratan ini seringkali membatasi kemampuan jaringan blockchain untuk memproses informasi, membuat TPS relatif rendah.
Jadi pertanyaannya adalah, konsensus seperti apa yang harus digunakan untuk jaringan pembukuan asinkron yang memungkinkan percabangan? Pada artikel sebelumnya, kami akan menyebutkan mekanisme konsensus berbasis DAG secara detail. Mekanisme konsensus dibagi menjadi konsensus blok dan konsensus buku besar. Konsensus blok DAG bisa sama dengan blockchain. Misalnya, POW juga digunakan. Karena fork diperbolehkan, waktu pembuatan blok dapat diatur sangat singkat. Konsensus blok juga bisa berbeda dari blockchain. Misalnya, proyek IOTA langsung membatalkan proses pengemasan dan pembuatan blok. Selama transaksi terjadi, itu akan segera ditulis ke jaringan (setiap blok dalam diagram DAG bukanlah blok tetapi transaksi pena), sehingga memperoleh kemampuan pemrosesan transaksi dengan kecepatan sangat tinggi.
Konsensus buku besar DAG jauh lebih kompleks daripada blockchain. Bagaimana cara mencegah node melakukan kejahatan? Bagaimana cara menyaring ketika ada dua transaksi yang bertentangan? Bagaimana cara mencegah "pengeluaran ganda"? Dengan kompleksitas struktur jaringan yang mendasarinya, konsensus buku besar juga diberikan persyaratan yang lebih tinggi. Ini akan disorot dalam artikel berikutnya.
1.4 TXDAG dan BlockDAG
Perbedaan antara BlockDAG umum (grafik blok) dan TxDAG (DAG Transaksional, DAG transaksional). Secara umum atau dalam hal struktur data, BlockDAG dan TxDAG hanyalah dua struktur data yang berbeda. Perbedaannya adalah yang pertama akan mengemas banyak transaksi ke dalam blok, dan buku besar diatur berdasarkan blok; sedangkan yang terakhir tidak memiliki konsep blok, dan buku besar terdiri dari transaksi, yang juga dapat dipahami sebagai hanya satu transaksi dalam satu blok. Karena transaksi memiliki banyak informasi deskriptif transaksi umum, yaitu informasi header, bagian informasi ini dapat disimpan di blok, dan transaksi hanya perlu menyimpan bagian transaksi yang berbeda, sehingga proses HASH (penambangan) dilewati dan rantai langsung diunggah. Karena BlockDAG tidak hanya mempertahankan konkurensi DAG yang tinggi,
1.5 Keuntungan DAG
Dibandingkan dengan blockchain, DAG sebenarnya adalah perbedaan antara grafik dan rantai. Untuk rantai, itu tidak dapat hanya berurusan dengan satu bagian, karena hanya ada satu derajat masuk dan keluar dari rantai, dan node pada rantai tidak dapat dipecah menjadi beberapa Node untuk diproses, tetapi dimungkinkan untuk grafik, karena grafik dapat memiliki banyak derajat keluar, maka node yang terhubung dengan beberapa derajat keluar dapat diproses pada saat yang bersamaan.
Untuk jaringan rantai, bukan karena kemampuan pemrosesan node tidak kuat, tetapi struktur rantai tidak dapat dihitung secara paralel, dan waktu yang terbuang terutama waktu tunggu: satu untuk memulai transaksi, yang perlu disinkronkan dengan semua node; yang lainnya adalah waktu konfirmasi, ketika ada konfirmasi node yang perlu disinkronkan ke seluruh jaringan. Untuk DAG, tidak ada masalah seperti itu. Saat dompet memulai transaksi, tidak perlu menunggu berapa banyak transaksi yang dilakukan sebelumnya. Hanya perlu melalui verifikasi parsial, siaran jaringan, dan verifikasi parsial lainnya, yang setara dengan desentralisasi konfirmasi transaksi. Node melakukan pekerjaan yang mirip dengan teka-teki, menyambungkan transaksi mereka sendiri dengan yang dikonfirmasi oleh orang lain.
Oleh karena itu, disimpulkan bahwa DAG memiliki keunggulan sebagai berikut:
(1). Kecepatan transaksi cepat
Sambil mencapai tingkat desentralisasi dan keamanan yang sama seperti Bitcoin dan Ethereum, pemrosesan lokal DAG dan penyelesaian paralel dapat sangat meningkatkan kecepatan transaksi, membuat throughput transaksi (TPS) dan penundaan akhir meningkat lebih dari dua kali lipat.
(2). Ekspansi yang kuat
Karena DAG mendukung pembukuan asinkron, node dalam jaringan dapat memproses transaksi baru secara paralel tanpa menunggu sinkronisasi data dari node lain, menghindari pemborosan waktu, meningkatkan efisiensi transaksi, dan memungkinkan setiap node yang berpartisipasi dalam pembukuan diperpanjang dengan cepat. Oleh karena itu, DAG sangat cocok untuk proyek pembayaran, seperti pembayaran mikro lintas batas dan skenario bisnis keuangan inklusif yang dianjurkan oleh Tim Qitmeer.
(3). Lebih sulit untuk memodifikasi secara jahat
Dibandingkan dengan struktur rantai, jauh lebih sulit untuk memodifikasi secara jahat di DAG karena DAG memiliki banyak derajat keluar dan masuk, dan jika sebuah node dimodifikasi, derajat masuk yang sesuai harus dimodifikasi.
2. Dulu dan Sekarang MEERDAG
2.1 Asal Teknologi DAG
Pada tahun 2013 di bitcointalk.org, tempat kelahiran blockchain yang terkenal, seorang sarjana Universitas Ibrani Israel dengan ID Avivz78 mengusulkan untuk memperkenalkan konsep DAG sebagai algoritme konsensus ke dalam struktur blockchain dan membuat protokol GHOST.
Setelah protokol GHOST diusulkan, Yonatan Sompolinsky mengusulkan ide baru lainnya di mana blok yang baru dibuat menunjuk ke semua blok ujung bercabang yang diketahui, yaitu, sebuah blok memiliki banyak ayah, di mana titik
rantai blok berubah dari rantai tunggal menjadi struktur yang terdiri dari beberapa rantai bercabang bersama-sama, dan struktur rantai semacam itu disebut DAG (grafik asiklik terarah).
Pada tahun 2016, makalah protokol teknis SPECTRE dirilis, yang selanjutnya meningkatkan detail arsitektur teknis, membentuk prototipe protokol blockDAG generasi pertama, dan mengusulkan ide besar penundaan jaringan tanpa parameterisasi (atau adaptasi parameter penundaan).
Pada tahun 2018, DAGlabs meluncurkan protokol PHANTOM. Memecahkan masalah bahwa protokol SPECTRE tidak dapat memperdagangkan penyortiran linier dan terus mengoptimalkannya untuk membentuk protokol GHOSTDAG, yang merupakan protokol BlockDAG tingkat industri pertama dan juga menandai kematangan BlockDAG.
Di akhir makalah protokol GHOSTDAG, Yonatan Sompolinsky membayangkan kemungkinan protokol yang menggabungkan GHOSTDAG + SPECTRE, tetapi tidak memperkenalkannya secara detail.
3. Pemikiran tentang pemilihan teknologi MEERDAG
3.1 Pemikiran tentang pemilihan teknologi MEERDAG
Pada tahap pertama Jaringan Qitmeer, Jaringan Mekah, itu bertepatan dengan munculnya eksplorasi teknologi ekspansi, dihadapkan dengan banyak solusi ekspansi arus utama on-chain dan off-chain, ketika memilih teknologi rantai publik Qitmeer, itu juga menghadapi pilihan yang sulit.
Dalam hal pemilihan teknologi ekspansi, industri umumnya dihadapkan pada masalah segitiga yang mustahil. Tidak mungkin mencapai skalabilitas (Skalabilitas), desentralisasi (Desentralisasi), dan keamanan (Keamanan) pada saat yang sama, dan hanya dua dari tiga yang dapat dicapai. Tim Qitmeer saat itu juga menghadapi masalah seperti itu. Setelah mempelajari banyak solusi ekspansi, sebuah teknologi bernama BlockDAG akhirnya disukai oleh tim.
3.2 Pengantar Singkat Protokol SPECTRE
SPECTRE adalah protokol blockDAG yang mendukung konfirmasi cepat. Algoritme konsensus SPECTRE adalah algoritma pemungutan suara. Setelah ditemukan transaksi yang bertentangan, blok yang berisi transaksi yang bertentangan tersebut akan digunakan sebagai kandidat untuk menerima suara dari semua blok, dengan satu suara untuk setiap blok. Pemungutan suara SPECTRE memiliki efek amplifikasi. Misalnya, sebuah blok akan mengikuti mayoritas suara yang dikonsentrasikannya di masa lalu, sehingga kecepatan konvergensinya sangat cepat, dan sedikit perbedaan dalam jumlah suara dapat menghasilkan keuntungan besar bagi pemenangnya. Biarkan blok yang jujur memilih blok yang jujur, dan blok yang jujur nanti akan memberikan kekuatan susun sebelumnya, sehingga serangan jahat akan gagal dan keamanan jaringan akan terjamin.
SPECTRE hanya dapat menjamin konfirmasi cepat dari blokir yang jujur. Untuk dua blok yang bertentangan yang waktu rilisnya dekat, waktu konfirmasi SPECTRE tidak pasti. Ini adalah konsep aktivitas lemah yang diusulkan oleh SPECTRE, yaitu tidak dapat dijamin bahwa semua blok dapat menjadi konfirmasi Akhir dalam waktu yang wajar.
SPECTRE adalah protokol konsensus berdasarkan sistem transaksi. Dalam sistem transaksi, hanya pelaku kejahatan yang dapat membuat transaksi pembelanjaan ganda. Dengan kata lain, transaksi pembelanjaan ganda tidak akan berdampak banyak pada blok yang jujur. Selain itu, melakukan transaksi pembelanjaan ganda sangat ketat dalam kontrol waktu, dan sulit untuk menyebabkan serangan dalam keadaan normal. Oleh karena itu, Tim Qitmeer percaya bahwa masalah lemahnya aktivitas SPECTRE dapat diterima dalam proyek yang sebenarnya.
3.3 Pengantar Singkat Protokol GHOSTDAG
Seperti yang dapat Anda lihat dari profil SPECTRE di atas, SPECTRE sangat baik dalam memecahkan masalah transaksi yang bertentangan dan bertahan dari serangan. Jika sebuah proyek hanya digunakan untuk tujuan pembayaran seperti Bitcoin, konfirmasi cepat dari protokol SPECTRE sudah cukup. Tetapi jika Anda ingin mengintegrasikan smart contract, SPECTRE tidak dapat melakukannya.
Karena SPECTRE hanya dapat melakukan penyortiran relatif dari transaksi yang bertentangan (menilai urutan transaksi yang bertentangan), tetapi tidak dapat melakukan penyortiran mutlak untuk semua blok. Karena bahasa smart contract harus lengkap Turing, seperti halnya kita menulis sebuah program komputer, kita perlu melakukan berbagai operasi dalam urutan yang ketat, sehingga jaringan dengan fungsi smart contract memiliki karakteristik: transaksi dalam jaringan dapat diatur waktunya Lakukan penyortiran linier (kronologis) satu demi satu.
Sebagai tanggapan, Yonatan Sompolinsky baru merancang protokol GHOSTDAG untuk membentuk urutan linier ke blok DAG. SPECTRE dan GHOSTDAG adalah dua protokol yang lengkap dan independen, tidak saling melengkapi.
Mekanisme penambangan GHOSTDAG sama dengan SPECTRE, yang akan menghasilkan jenis struktur DAG yang sama. Perbedaannya adalah GHOSTDAG menilai apakah blok itu jujur atau jahat dengan menganalisis konektivitas blok, mengurutkan blok sesuai dengan klasifikasi, dan menghasilkan blok DAG yang ketat. Urutan linier dari transaksi yang bertentangan dinilai oleh urutan linier.
Protokol GHOSTDAG tidak hanya memungkinkan DAG untuk mendapatkan kemampuan pemesanan linier transaksi, tetapi juga memecahkan masalah aktivitas yang lemah dari protokol SPECTRE. Protokol GHOSTDAG juga merupakan protokol blockDAG pertama yang mendukung pemesanan transaksi linier.
3.4 Protokol MEERDAG
Kemungkinan protokol yang menggabungkan GHOSTDAG+SPECTRE yang dibayangkan Yonatan Sompolinsky di akhir makalah protokol GHOSTDAG lebih tentang memberikan panduan dalam hal ide, dan fokusnya adalah untuk menunjukkan kekakuan algoritme, yang melibatkan banyak masalah praktik teknik dan kebutuhan untuk berdasarkan situasi aktual terus-menerus dipraktekkan dan diuji, dan salah satu masalah yang paling umum adalah kinerja. Jika diterapkan langsung sesuai dengan algoritme referensi dalam teks asli, kinerjanya hampir tidak dapat diterima.
Tim Qitmeer menganggap bahwa skenario aplikasi yang mendasari rantai publik terutama adalah keuangan inklusif, transaksi aset digital, dan manajemen rantai pasokan.
Mempertimbangkan mekanisme hadiah blok dan persyaratan konsensus buku besar untuk kemampuan penyortiran linier, dan pada saat yang sama mempertimbangkan kecepatan konfirmasi transaksi yang lebih penting untuk pengalaman pertukaran nilai.
Set biru (blok jujur) GHOSTDAG lebih sulit untuk distabilkan dan waktu konfirmasi akan lebih lama daripada SPECTRE. Namun, karena hadiah blok tidak memerlukan waktu konfirmasi yang tinggi, hal itu tidak akan memengaruhi jaringan. Protokol GHOSTDAG dipilih sebagai protokol konsensus dasar dan protokol SPECTRE dipilih sebagai protokol konsensus terbantu.
MeerDAG, solusi konsensus hibrida yang menggabungkan SPECTRE dan GHOSTDAG, adalah solusi penskalaan BlockDAG yang sesuai dengan pengaturan blockchain klasik (terbuka, adil, aman, dapat diskalakan) dan paling kompatibel dengan model blockchain klasik UTXO. Sementara blockchain klasik membuang semua blok di luar rantai terpanjang, MeerDAG adalah model kooperatif yang mempertahankan protokol SPECTRE dan menyimpan semua blok, sehingga dapat mencapai throughput tinggi dan memberikan throughput tinggi tingkat transaksi nyata, serta konfirmasi cepat dari transaksi blockchain. jasa. Kedua, BlockDAG didasarkan pada aturan rantai terberat dan dapat mencapai toleransi kesalahan 51% sebanding dengan Bitcoin. Selain itu, jaringan BlockDAG tidak memiliki node khusus, dan tidak memerlukan node untuk online atau tidak. Di pertambangan,
Selama periode Qitmeer Network Medina, jaringan tersebut memperkenalkan pengujian lingkungan daya komputasi nyata. Tim terus mengulang algoritma PoW dan meningkatkan efisiensi algoritma, mempertahankan sepenuhnya keunggulan protokol GHOSTDAG+SPECTRE, dan terus mengurangi kesulitan implementasi protokol dalam implementasi teknik. Misalnya: menurut versi pertama makalah Algoritma GHOSTDAG, perhitungan kerucut invers harus lengkap, dan kompleksitas algoritme adalah O(n^3). Setelah sejumlah besar pengujian tingkat teknik, kompleksitas dikurangi dua kali lipat menjadi O(n), yang sangat memenuhi persyaratan kegunaan. Di bawah persyaratan dasar untuk memastikan keamanan, desentralisasi dan keadilan, kinerja TPS dimaksimalkan.
Tim Qitmeer secara inovatif menggabungkan protokol GHOSTDAG+SPECTRE untuk membentuk protokol MeerDAG karakteristiknya sendiri, yang menjadi prototipe teknis dari generasi baru BlockDAG. Pemosisian inti dari jaringan dasar BlockDAG Qitmeer adalah untuk melayani sebagai jaringan sirkulasi nilai. Pada lapisan Layer 2, ini menggabungkan sistem mesin virtual pluggable yang digerakkan oleh MeerEVM untuk membangun aplikasi blockchain yang kaya dan merangkul seluruh ekologi blockchain.
Referensi:
[1] Dari blockchain ke DAG (2) -- struktur dasar DAG,https://mp.weixin.qq.com/s/Mc2uEOLtT_Z3OMapNh1TGg
[2] Dari Blockchain ke blockDAG,https://www.youtube.com/watch?v=tk38AAV_whw
[3] Jeff Zhou:Teknologi blockchain asinkron berkecepatan tinggi DAG,https://www.jianshu.com/p/45d73e0e74ec
[4] HANTU, SPECTRE, TEORI TEKNIK PHANTOM,https://mp.weixin.qq.com/s/nGR0ld73oXgs_p_MtDcv-Q
[5] Tim Qitmeer – “Buku Putih Qitmeer”

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































