"مون اهو نه چيو آهي" بلاڪچين تي پيغامن سان ڪم نه ڪندو.
ڪو به مرڪزي ڍانچو نه آهي جيڪو چيڪ ڪري ٿو پيغام جي "صداقت" تي. اهو اتفاق جي بنياد تي نوڊس جي ورهايل سسٽم طرفان ڪيو ويندو آهي، ۽ اهو صارفين جي ملڪيت آهي.
سينسرشپ جو امڪان - اڪائونٽس بلاڪ نه ٿي ڪري سگھجي ۽ پيغام ختم نه ٿي ڪري سگھجي.
ڪنهن به وقت توهان جي سڀني ڳالهين کي ڪنهن به ڊوائيس تان حاصل ڪرڻ جي صلاحيت جو مطلب آهي توهان کي گفتگو کي مقامي طور تي ذخيرو ڪرڻ جي ضرورت ناهي.
پيغام پهچائڻ جي تصديق. نه صارف جي ڊوائيس ڏانهن، پر نيٽ ورڪ ڏانهن. لازمي طور تي، هي توهان جي پيغام کي پڙهڻ لاء وصول ڪندڙ جي صلاحيت جي تصديق آهي. هي نازڪ نوٽيفڪيشن موڪلڻ لاءِ هڪ مفيد خصوصيت آهي.
هرڪو اڳ ۾ ئي هن حقيقت جي عادي آهي ته بلاڪچين منتقلي ٽوڪن ۾ ٽرانزيڪشن (سڪين) هڪ صارف کان ٻئي ڏانهن. Bitcoin وانگر. اسان پيغامن جي منتقلي لاءِ هڪ خاص قسم جو ٽرانزيڪشن ٺاهيو.
بلاڪچين تي ميسينجر ۾ پيغام موڪلڻ لاءِ، توهان کي ڪيترن ئي مرحلن مان گذرڻو پوندو:
پيغام جي متن کي انڪرپٽ ڪريو
ciphertext کي ٽرانزيڪشن ۾ داخل ڪريو
ٽرانزيڪشن تي دستخط ڪريو
ڪنهن به نيٽ ورڪ نوڊ ڏانهن ٽرانزيڪشن موڪليو
نوڊس جو ورهايل نظام هڪ پيغام جي "صداقت" کي طئي ڪري ٿو
جيڪڏهن سڀ ڪجهه ٺيڪ آهي، پيغام سان ٽرانزيڪشن ايندڙ بلاڪ ۾ شامل آهي
وصول ڪندڙ پيغام جي ٽرانزيڪشن کي ٻيهر حاصل ڪري ٿو ۽ ڊيڪرپٽس
مرحلا 1-3 ۽ 7 ڪلائنٽ تي مقامي طور تي ڪيا ويا آهن، ۽ مرحلا 5-6 ميزبان تي ڪيا ويا آهن.
پيغام جي انڪوشن
پيغام موڪليندڙ جي خانگي چيڪ ۽ وصول ڪندڙ جي عوامي ڪيئي سان گڏ انڪوڊ ٿيل آهي. اسان نيٽ ورڪ مان عوامي ڪنجي وٺنداسين، پر ان لاءِ، وصول ڪندڙ جو اڪائونٽ ضرور شروع ڪيو وڃي، يعني گهٽ ۾ گهٽ هڪ ٽرانزيڪشن هجي. توھان استعمال ڪري سگھو ٿا REST درخواست GET /api/accounts/getPublicKey?address={ADAMANT address}، ۽ جڏهن چيٽ لوڊ ڪندي، ڳالهائيندڙن جون عوامي چابيون اڳ ۾ ئي موجود هونديون.
انهي ڳالهه کي يقيني بڻائڻ ته هرڪو موڪليندڙ ۽ وصول ڪندڙ جي صداقت، موڪلڻ جو وقت ۽ پيغام جو مواد، ٽرانزيڪشن تي دستخط ٿيل آهي. هڪ ڊجيٽل دستخط توهان کي اجازت ڏئي ٿو ته ٽرانزيڪشن جي صداقت جي تصديق ڪرڻ لاءِ عوامي چيڪ استعمال ڪندي - ان لاءِ هڪ خانگي چيڪ جي ضرورت ناهي.
پر دستخط پاڻ پرائيويٽ ڪنجي استعمال ڪندي ڪيو ويندو آهي:
ڊراگرام ڏيکاري ٿو ته اسان پهريان SHA-256 سان ٽرانزيڪشن کي هٽايو ۽ پوء ان کي سائن ان ڪيو Ed25519 EdDSA ۽ هڪ دستخط حاصل ڪريو signature، ۽ ٽرانزيڪشن ID SHA-256 هيش جو حصو آهي.
مثال لاڳو ڪرڻ:
1 - هڪ ڊيٽا بلاڪ ٺاهيو، بشمول هڪ پيغام
/**
* Calls `getBytes` based on transaction type
* @see privateTypes
* @implements {ByteBuffer}
* @param {transaction} trs
* @param {boolean} skipSignature
* @param {boolean} skipSecondSignature
* @return {!Array} Contents as an ArrayBuffer.
* @throws {error} If buffer fails.
*/
adamant.getBytes = function (transaction) {
...
switch (transaction.type) {
case constants.Transactions.SEND:
break
case constants.Transactions.CHAT_MESSAGE:
assetBytes = this.chatGetBytes(transaction)
assetSize = assetBytes.length
break
…
default:
alert('Not supported yet')
}
var bb = new ByteBuffer(1 + 4 + 32 + 8 + 8 + 64 + 64 + assetSize, true)
bb.writeByte(transaction.type)
bb.writeInt(transaction.timestamp)
...
bb.flip()
var arrayBuffer = new Uint8Array(bb.toArrayBuffer())
var buffer = []
for (var i = 0; i < arrayBuffer.length; i++) {
buffer[i] = arrayBuffer[i]
}
return Buffer.from(buffer)
}
نوڊس جو هڪ ورهايل نظام، اتفاق راءِ جي بنياد تي، ٽرانزيڪشن جي پيغام جي "صداقت" کي طئي ڪري ٿو. ڪنهن کان ۽ ڪنهن ڏانهن، ڪڏهن، ڇا پيغام کي ڪنهن ٻئي سان تبديل ڪيو ويو، ۽ ڇا موڪلڻ جو وقت صحيح طور تي اشارو ڪيو ويو. هي بلاڪچين جو هڪ تمام اهم فائدو آهي - اتي ڪو مرڪزي ڍانچو ناهي جيڪو تصديق لاءِ ذميوار هجي، ۽ پيغامن جي ترتيب ۽ انهن جي مواد کي جعلي نٿو ڪري سگهجي.
پهرين، هڪ نوڊ جي درستگي کي چيڪ ڪري ٿو، ۽ پوء ان کي ٻين ڏانهن موڪلي ٿو - جيڪڏهن اڪثريت چوي ٿو ته هر شيء ترتيب ۾ آهي، ٽرانزيڪشن کي زنجير جي ايندڙ بلاڪ ۾ شامل ڪيو ويندو - اهو اتفاق آهي.
نوڊ ڪوڊ جو حصو جيڪو چيڪن لاءِ ذميوار آهي GitHub تي ڏسي سگھجي ٿو - validator.js и verify.js. ها، نوڊ Node.js تي هلندو آهي.
هڪ بلاڪ ۾ هڪ پيغام سان ٽرانزيڪشن سميت
جيڪڏهن اتفاق ڪيو وڃي ته، اسان جي پيغام سان ٽرانزيڪشن کي ايندڙ بلاڪ ۾ ٻين صحيح ٽرانزيڪشن سان گڏ شامل ڪيو ويندو.
بلاڪ جو هڪ سخت سلسلو آهي، ۽ هر ايندڙ بلاڪ اڳوڻي بلاڪ جي هيش جي بنياد تي ٺهيل آهي.
نقطو اهو آهي ته اسان جو پيغام پڻ هن ترتيب ۾ شامل آهي ۽ "ٻيهر ترتيب" نه ٿو ڪري سگهجي. جيڪڏهن ڪيترائي نياپا هڪ بلاڪ ۾ اچي وڃن ٿا، انهن جي ترتيب طرفان طئي ڪيو ويندو timestamp پيغام.
پيغام پڙهڻ
ميسينجر ايپليڪيشن بلاڪچين مان ٽرانزيڪشن حاصل ڪري ٿي جيڪي وصول ڪندڙ ڏانهن موڪليا ويا آهن. ان لاءِ اسان هڪ آخري نقطو ٺاهيو api/chatrooms.
سڀ ٽرانزيڪشن هر ڪنهن لاءِ دستياب آهن - توهان حاصل ڪري سگهو ٿا اينڪرپٽ ٿيل پيغام. پر صرف وصول ڪندڙ پنهنجي پرائيويٽ ڪنجي ۽ موڪليندڙ جي عوامي ڪيئي استعمال ڪندي ڊيڪرپٽ ڪري سگهي ٿو:
جيئن ته پيغام هن طريقي سان 5 سيڪنڊن ۾ پهچائي رهيا آهن - هي اهو وقت آهي جيڪو هڪ نئون نيٽ ورڪ بلاڪ ظاهر ٿئي ٿو - اسان هڪ ڪلائنٽ کان نوڊ ۽ نوڊ کان نوڊ ساکٽ ڪنيڪشن سان گڏ آيا آهيون. جڏهن هڪ نوڊ هڪ نئين ٽرانزيڪشن حاصل ڪري ٿو، اهو ان جي صحيحيت کي جانچيندو آهي ۽ ان کي ٻين نوڊس ڏانهن موڪلي ٿو. ٽرانزيڪشن ميسينجر ڪلائنٽ لاءِ دستياب آهي جيتوڻيڪ اتفاق راءِ ٿيڻ ۽ بلاڪ ۾ شامل ٿيڻ کان اڳ. هن طريقي سان اسان فوري طور تي پيغام پهچائينداسين، جيئن باقاعده فوري پيغامن جي.
ايڊريس بڪ کي ذخيرو ڪرڻ لاءِ، اسان KVS - Key-Value Storage - ھي ھڪڙو ٻيو قسم جو ٽرانزيڪشن آھي جنھن ۾ asset اهو NaCl-box ناهي جيڪو انڪريپٽ ٿيل آهي، پر NaCl-secretbox. اهڙي طرح ميسينجر ٻين ڊيٽا کي محفوظ ڪري ٿو.
فائل / تصويرن جي منتقلي ۽ گروپ چيٽ اڃا تائين تمام گهڻو ڪم جي ضرورت آهي. يقينن، غلطي ۽ غلطي جي شڪل ۾ اهو ٿي سگهي ٿو "خراب" جلدي، پر اسان رازداري جي ساڳئي سطح کي برقرار رکڻ چاهيون ٿا.
ها، اڃا تائين ڪم ڪرڻو آهي - مثالي طور تي، حقيقي رازداري فرض ڪري ٿو ته صارف عوامي نيٽ ورڪ نوڊس سان ڳنڍي نه سگهندا، پر پنهنجو پاڻ کي وڌائيندو. توهان جي خيال ۾ صارفين جو ڪيترو سيڪڙو اهو آهي؟ اھو صحيح آھي، 0. اسان جزوي طور تي ھي مسئلو حل ڪرڻ جي قابل ھئاسين ميسينجر جي Tor ورجن سان.
اسان ثابت ڪيو آهي ته blockchain تي هڪ رسول موجود ٿي سگهي ٿو. اڳي، 2012 ۾ صرف هڪ ڪوشش هئي - بٽ ميسيج، جيڪو ڊگهي پيغام پهچائڻ جي وقت، سي پي يو لوڊ، ۽ موبائل ايپليڪيشنن جي کوٽ سبب ناڪام ٿيو.
۽ شڪ جو سبب اهو آهي ته بلاڪچين تي ميسينجر پنهنجي وقت کان اڳ آهن - ماڻهو پنهنجي اڪائونٽ جي ذميواري کڻڻ لاءِ تيار نه آهن، ذاتي معلومات حاصل ڪرڻ اڃا تائين رجحان نه آهي، ۽ ٽيڪنالاجي بلاڪچين تي تيز رفتار جي اجازت نٿو ڏئي. اسان جي پروجيڪٽ جا وڌيڪ ٽيڪنالاجي اينالاگ اڳيان ظاهر ٿيندا. تون ڏسندين.