كتابة وقراءة البيانات في البيتكوين blockchain

من الممكن الكتابة إلى blockchain لعملة البيتكوين ليس فقط المعاملات المالية ، ولكن أيضًا أي بيانات تقريبًا. تصبح البيانات المسجلة في blockchain Bitcoin عامة ومن شبه المستحيل حذفها أو تغييرها. يمكن استخدام هذه الميزة ، على سبيل المثال ، لإنشاء مواقع غير مركزية غير قابلة للحظر.

باستخدام مكتبة blockchaindata-lib ، يمكن تنظيم كتابة وقراءة البيانات على blockchain في بضعة أسطر من التعليمات البرمجية.

الأدوات


تتم كتابة مكتبة blockchaindata-lib في node.js. شفرة المصدر مع أمثلة متاحة في github.com/3s3s/blockchaindata-lib github. لإضافة مكتبة إلى مشروعك ، ما عليك سوى تشغيل أمر واحد في وحدة التحكم

npm install blockchaindata-lib 

للعمل مع blockchain ، يجب عليك تكوين وصول RPC إلى محفظة Bitcoin أو شوكة متوافقة مع Bitcoin (Litecoin ، Dogecoin ، إلخ). بشكل افتراضي ، ستحاول blockchaindata-lib الوصول إلى خادم RPC على التفاصيل التالية:

 : http://127.0.0.1:18332 : rpc_btc_test : rpc_btc_password_test 

يمكن تغيير الإعدادات الافتراضية حسب وظيفة المكتبة

 updateNetwork(url, user, password) 

وبالتالي ، من أجل العمل مع المكتبة ، فإن أول ما عليك فعله هو إطلاق محفظة اختبار Bitcoin:

  1. تنزيل محفظة Bitcoin (أو شوكة متوافقة)
  2. إنشاء ملف ~ / .bitcoin / bitcoin.conf (أو في Windows٪ APPDATA٪ / Bitcoin / bitcoin.conf)
  3. في ملف bitcoin.conf ، اكتب الإعدادات التالية

     testnet=1 server=1 rpcbind=127.0.0.1 rpcallowip=127.0.0.1 rpcuser=rpc_btc_test rpcpassword=rpc_btc_password_test txindex=1 

  4. حفظ التغييرات إلى bitcoin.conf وتشغيل bitcoind (أو في windows bitcoin-qt.exe)
  5. انتظر تزامن blockchain

باستخدام الإعدادات المذكورة أعلاه ، سيتم تشغيل المحفظة في شبكة اختبار Bitcoin.

تسجيل البيانات


في البيتكوين ، تحظر المعاملات التي لا توجد فيها نفقات. لذلك ، قبل أن تكتب شيئًا ما إلى سلسلة Bitcoin blockchain ، سيكون عليك بالتأكيد تجديد محفظتك. يمكن الحصول على Bitcoins لشبكة اختبار مجانًا إذا كنت تبحث على Google عن شيء مثل "bitcoin testnet faucet". عندما يتم تجديد المحفظة ، يمكنك أخيرًا تسجيل البيانات.

تحتوي المكتبة على العديد من الوظائف لتسجيل البيانات:

 SaveTextToBlockchain( dataString ) SaveJSONToBlockchain( objectJSON ) SaveFileToBlockchain( data ) 

من حيث المبدأ ، ما تفعله هذه الوظائف واضح من الاسم. نتيجة دالة - كائن
  {النتيجة: <صحيح |  false> ، الرسالة: <string> ، txid: <string>} 


النظر في مثال الاستخدام:

 'use strict'; const blockchaindata = require('blockchaindata-lib') async function test1() { try { //    const ret1 = await blockchaindata.SaveTextToBlockchain("     "); if (ret1.result == false) throw new Error("SaveTextToBlockchain failed, message: "+ret1.message); console.log("SaveTextToBlockchain success! txid="+ret1.txid+"\n--------------------------") } catch (e) { console.log(e.message) } } test1(); 

إذا تم تنفيذ هذا الرمز دون أخطاء ، فسيتم عرض تجزئة المعاملة في وحدة التحكم. يمكنك قراءة البيانات من هذا التجزئة.

قراءة البيانات


من أجل قراءة البيانات المسجلة في وقت سابق في blockchain ، تحتاج فقط إلى معرفة تجزئة المعاملة. قد تكون المحفظة فارغة ، أي إذا كنت ترغب فقط في قراءة البيانات ، فإن إعادة ملء المحفظة ليست ضرورية.

مثال رمز

 'use strict'; const blockchaindata = require('blockchaindata-lib'); async function test2() { //    try { const savedObject = await blockchaindata.GetObjectFromBlockchain("8af6633160b982a0b0b4d4962ad28e0d5b3dd97e05e27cc2dd64ec0c56820df5"); if (savedObject.type == 'error') throw new Error(savedObject.message) if (savedObject.type == 'text') console.log(Buffer.from(savedObject.base64, 'base64').toString('utf8')); else console.log(savedObject.base64); } catch(e) { console.log(e.message) } } test2(); 

إذا كان هذا الرمز يعمل بدون أخطاء ، فسيتم عرض نص html للصفحة الذي قمت بحفظه مسبقًا على blockchain في وحدة التحكم.

أين تقدم؟


في blockchain ، على سبيل المثال ، يمكنك حفظ موقع ثابت. سيكون هذا الموقع مستحيلًا لحذفه أو حظره بطريقة أو بأخرى. ومع ذلك ، لقراءة هذا الموقع ، ستحتاج إلى برنامج إضافي: متصفح جديد أو امتداد متصفح.

امتداد المتصفح هو الحل الأسهل. مثال على هذا التمديد يمكن العثور عليه هنا github.com/3s3s/blockchaindata

يمكنك تنزيل هذا الامتداد وتثبيته لبرنامج Firefox من هنا: yadi.sk/d/a3xM9BCepP4nBw
بعد التثبيت ، سيعترض Firefox ويعالج الارتباطات إلى المواقع بالتنسيق
  http: // tbtc / <txid> 


على سبيل المثال ، سيعمل هذا الرابط على http: // tbtc / 8af6633160b982a0b0b4d4962ad28e0d5b3dd97e05e27cc2dd64ec0c56820df5

فعالية


تقوم مكتبة blockchaindata-lib بضغط البيانات قبل وضعها على blockchain باستخدام خوارزمية deflate ، لذلك هذه الطريقة فعالة بشكل خاص لكتابة المستندات النصية. أثناء الاختبار ، تمكنت من كتابة ما يصل إلى 70 كيلو بايت من البيانات المضغوطة إلى blockchain. على الرغم من عدم وجود قيود على حجم البيانات الواردة ، تظهر الأخطاء في مجموعات البيانات الكبيرة بسبب التنفيذ الداخلي لرمز البيتكوين.

عند كتابة البيانات إلى blockchain ، يجب على المرء أيضًا مراعاة المكون المالي. قراءة وكتابة البيانات إلى شبكة اختبار Bitcoin باستخدام مكتبة blockchaindata-lib بسيطة ومجانية. ومع ذلك ، إذا كنت ترغب في كتابة البيانات إلى شبكة عمل البيتكوين ، فستحتاج إلى مراعاة سعر البيتكوين غير الصفري.

Source: https://habr.com/ru/post/ar470884/


All Articles