nemberid@gmail.com

Mendaftarkan Metadata Akun Symbol Dengan Python

Created with Sketch.

Mendaftarkan Metadata Akun Symbol Dengan Python

Mendaftarkan akun Metadata Symbol dengan Python, ini adalah contoh nyata yang sangat menarik untuk di pelajari. Dengan adanya Panduan ini yang diterjemahkan dari Artikel Qiita asli yang ditulis oleh nem_takanobu alias @xembook  yang sudah di terjemahkan lagi ke dalam bahasa inggris oleh Xharvesting di Blog Symbolnya

Tahukan anda bahwa kami ambasador Symbol sedang mempelajari pemograman Python? Anda bisa bergabung bersama kami untuk mempelajari Python dengan cara yang lebih mudah. 

Dalam artikel terakhir kami, kami menjelaskan cara mengirim transaksi terikat agregat dengan Python dan menunjukkan bagaimana kami dapat mengirim dana antara banyak akun dan mengumpulkan semua tanda tangan yang diperlukan dalam satu transaksi agregat. Dalam latihan ini kami akan menunjukkan cara menggunakan transaksi agregat untuk menetapkan metadata ke akun lain.

Ini membawa saya beberapa saat untuk memahami ketika saya pertama kali melihat kode dan saya akan mencoba (dengan pengetahuan saya yang terbatas) untuk menjelaskan beberapa konsep sebelum kita mulai.

Apa itu metadata akun dan mengapa kami membutuhkannya?

Mari kita mulai dengan menjelaskan metadata akun Symbol. Saya pikir Dokumentasi Symbol melakukan pekerjaan yang sangat baik untuk menjelaskan ini jadi saya akan mencuri deskripsi mereka (mereka juga memberikan beberapa contoh kode tetapi ini hanya untuk TypeScript/Javascript).

 

Contoh

Bob bekerja sebagai notaris digital yang mencap akun di blockchain publik Symbol. Ketika pelanggan datang ke Bob untuk membuat notaris dokumen, dia memeriksa otentikasi dokumen pelanggan kemudian menandai akun dengan MetadataTransaction.

Alice lulusan baru dan ingin sertifikat pendidikannya terakreditasi ke akun Simbolnya untuk menghindari kerumitan berulang kali memberikan verifikasi gelarnya. Jadi dia pergi ke Bob dan memberinya bukti gelarnya. Setelah Alice membayar Bob biaya, Bob memverifikasi keaslian dan cap akun Alice dengan metadata yang menandakan gelarnya.

Anda dapat membaca lebih lanjut, dan melihat contoh kedua yang menunjukkan penggunaan metadata akun untuk mengontrol akses pengguna ke jaringan perusahaan di sini.

HASH

Ini adalah sesuatu yang perlu saya teliti ketika saya melihat blok kode ini. Di sini kami mendefinisikan metadata kami yang akan terdiri dari kunci dan nilai. Namun, kita perlu hash nilai kunci.

Beberapa latar belakang

OK banyak dari Anda akan tahu lebih banyak tentang ini daripada saya, tetapi bagi Anda, seperti saya, yang melihat kode ini dan bertanya-tanya mengapa kita tidak bisa hanya menggunakan string untuk kunci dan apa fungsi intisari itu semua tentang saya akan mencoba memberikan sedikit latar belakang.

Dalam data kriptografi dapat dikodekan ke dalam hash ini adalah fungsi satu arah dan sekali dikodekan hampir tidak mungkin untuk memecahkan kode ke input asli. Situs web menggunakan hash kata sandi untuk keamanan jika sistem mereka disusupi dan nama pengguna serta kata sandi pengguna dicuri. Saat masuk ke situs web, hash kata sandi pengguna dihitung dan dibandingkan dengan hash kata sandi yang disimpan dalam database mereka. Jika isi database ini dicuri maka penyerang tidak akan dapat mengambil string kata sandi asli dari nilai hash.

Anda mungkin juga menemukan hash md5 yang biasanya digunakan untuk memastikan integritas file yang Anda unduh dari internet. Anda akan mengetahui terlebih dahulu hash md5 file yang benar dan kemudian dapat menghasilkan hash md5 dari file yang Anda unduh di komputer Anda dan membandingkan keduanya. Jika mereka sama maka Anda tahu bahwa Anda mengunduh file yang Anda inginkan dan bukan sesuatu yang telah dirusak. Demikian juga saat mengunduh file besar, Anda dapat memeriksa apakah transfer berhasil diselesaikan dan Anda tidak memiliki file yang terpotong.

Anda dapat membaca lebih lanjut tentang hash kriptografi di sini.

Sayang nya saya tidak bisa menjelaskan bagaimana kode itu bekerja di situs saya, namun anda akan menemukan tentang Blok Kode misteri di SymbolBlog. Semua penjelasan tentang kode Python di perlihatkan disana dan anda bisa memulai mempraktekan.

hasher = sha3.sha3_256()
hasher.update('certificate'.encode('utf8'))
digest = hasher.digest()
metadataKey = int.from_bytes(digest[0:8], 'little')
metadataValue = 'aaa'

Dalam contoh ini kita membuat objek SHA3-256 dan mengkodekan string 'certificate' menjadi digest biner dari pesan menggunakan hasher.digest(). Jika kita print digest itu seperti ini:

b'\x86b\x0f\\~\xab\x1d\xe9q\xcb\x9d\xe4Ry\xfd\xbb$c-\x95\x022\xbb|\xc1\xb5!\xed\x1d\xbb\xf3>'

Itu disimpan sebagai objek byte

print(type(digest))
<class 'bytes'>

Kami kemudian mengubah 8 nilai pertama dalam digest menjadi nilai integer.

metadataKey = int.from_bytes(digest[0:8], 'little')
print(metadataKey)

Mengembalikan nilai ini:

16797770744360559238

Ini sama dengan melakukan ini:

print(digest[0:8])
b'\x86b\x0f\\~\xab\x1d\xe9'
test = b'\x86b\x0f\\~\xab\x1d\xe9'
metadataKey = int.from_bytes(test, 'little')
print(metadataKey)
16797770744360559238

Apa yang tidak jelas bagi saya dari @xembook’s contohnya adalah apakah ada alasan untuk memotong digest. Tapi saya berasumsi bahwa itu adalah batas panjang bilangan bulat karena saya mendapatkan kesalahan ini saat tidak memotong.

OverflowError: int too big to convert

Padahal itu berfungsi dengan angka yang lebih kecil mis. [0,2] yang menciptakan nilai integer yang lebih pendek.

 

Mengapa kita membutuhkan semua ini?


Mengapa kita tidak menyimpan metadata sebagai string yang dapat dibaca manusia seperti yang kita lakukan pada namespace? Yah saya kira (dan ini adalah asumsi karena saya tidak dapat menemukan dokumentasi apa pun tentang ini) bahwa kami ingin mencoba memastikan bahwa kuncinya unik. Jika dalam contoh di atas notaris mengeluarkan sertifikat tetapi siapa pun dapat menyalin kunci metadata akun mereka, maka itu dapat menyebabkan kebingungan atau penipuan yang lebih buruk. Anda dapat membayangkan pihak lain dengan sengaja membuat kunci identik dan memvalidasi sertifikat palsu dengan menulis metadata dengan kunci identik ke akun lain.

Saya tidak tahu bagaimana Symbol menangani kunci duplikat yang dikeluarkan oleh akun terpisah jadi ini mungkin tidak terjadi, mungkin jika Anda semua mengerjakan contoh ini menggunakan string yang sama untuk menghasilkan kunci maka kita semua akan menghasilkan ID kunci yang sama yang berarti tidak seperti misalnya ruang nama tidak ada jaminan bahwa kunci akan unik. Saya tidak tahu pasti karena saya belum mengujinya!

 

Melihat metadata di dompet, tidak ada cap untuk mengatakan akun mana yang telah ditetapkan metadata, tetapi mungkin Anda dapat memeriksanya dengan menanyakan transaksi di blockchain jadi mungkin ini bukan masalah jika validasi dilakukan secara menyeluruh.

 

Mungkin Anda ingin menggunakan kumpulan nilai alfanumerik yang lebih kompleks dalam string saat membuat kunci meskipun hanya untuk mencoba memastikan keunikan. Misalnya kemungkinan dua orang menghasilkan hash dari string yang lebih acak ‘2g3fth8shm!’ Jauh lebih kecil kemungkinannya daripada dari kata kamus ‘certificate’.

Untuk lebih detail mengenai kode pemograman pada Python saya mengajak anda pergi ke Symbolblog dan mengikuti setiap langkah yang diberikan. Selamat memulai!! 🙂

 

No Comments

Add your comment