Ki jan yon mesaje desantralize travay sou blockchain la?
Nan kòmansman 2017, nou te kòmanse kreye yon mesaje sou blockchain la [non ak lyen yo nan pwofil la] lè nou te diskite sou avantaj ki genyen sou mesaje P2P klasik yo.
Pase 2.5 ane, e nou te kapab konfime konsèp nou an: aplikasyon pou mesaje yo disponib kounye a pou iOS, Web PWA, Windows, GNU/Linux, Mac OS ak Android.
Jodi a nou pral di w ki jan mesaje blockchain la ap travay ak ki jan aplikasyon kliyan yo ka travay ak API li yo.
Nou te vle blockchain a rezoud pwoblèm sekirite ak konfidansyalite mesaje P2P klasik yo:
Один клик для создания аккаунта — никаких телефонов и электронных почт, нет доступа к адресным книгам и геолокациям.
Entèrlokuteur yo pa janm etabli koneksyon dirèk; tout kominikasyon fèt atravè yon sistèm distribiye nan nœuds. Adrès IP itilizatè yo pa aksesib youn ak lòt.
Tout mesaj yo ankripte fen-a-fen koub25519xsalsa20poly1305. Li sanble ke sa a pa pral sipriz pèsonn, men kòd sous nou an louvri.
Atak MITM eskli - chak mesaj se yon tranzaksyon epi li siyen pa Ed25519 EdDSA.
Mesaj la fini nan pwòp blòk li. Konsistans ak timestamp Ou pa ka ranje blòk yo, ak Se poutèt sa lòd la nan mesaj yo.
"Mwen pa t 'di sa" pa pral travay ak mesaj sou blockchain la.
Pa gen okenn estrikti santral ki fè chèk sou "otantisite" nan yon mesaj. Sa a se fè pa yon sistèm distribiye nan nœuds ki baze sou konsansis, epi li se posede pa itilizatè yo.
Enposib pou sansi - kont yo pa ka bloke epi mesaj yo pa ka efase.
Kapasite pou jwenn tout konvèsasyon ou yo nan nenpòt aparèy nan nenpòt ki lè vle di ou pa bezwen sere konvèsasyon lokalman ditou.
Konfimasyon livrezon mesaj. Pa nan aparèy itilizatè a, men nan rezo a. Esansyèlman, sa a se konfimasyon kapasite moun k ap resevwa a pou li mesaj ou a. Sa a se yon karakteristik itil pou voye notifikasyon kritik.
Benefis Blockchain gen ladan tou entegrasyon sere ak lajan kript Ethereum, Dogecoin, Lisk, Dash, Bitcoin (yon sèl sa a se toujou nan pwogrè) ak kapasite nan voye marqueur nan chat. Nou menm te fè yon echanjeur kriptografik entegre.
Lè sa a, - ki jan li tout travay.
Yon mesaj se yon tranzaksyon
Tout moun deja abitye ak lefèt ke tranzaksyon yo nan blockchain transfere marqueur (pyès monnen) soti nan yon itilizatè a yon lòt. Tankou Bitcoin. Nou te kreye yon kalite espesyal nan tranzaksyon pou transmèt mesaj.
Pou voye yon mesaj nan yon mesaje sou blockchain a, ou bezwen ale nan plizyè etap:
Ankripte tèks mesaj la
Mete chifreman nan yon tranzaksyon
Siyen tranzaksyon an
Voye yon tranzaksyon nan nenpòt ne rezo
Yon sistèm distribiye nan nœuds detèmine "otantisite" nan yon mesaj
Si tout bagay se OK, tranzaksyon an ak mesaj la enkli nan pwochen blòk la
Moun k ap resevwa a rekipere tranzaksyon mesaj la epi li dechifre
Etap 1–3 ak 7 yo fèt lokalman sou kliyan an, epi etap 5–6 yo fèt sou hôtes yo.
Mesaj chifreman
Mesaj la ankode ak kle prive moun k ap voye a ak kle piblik moun k ap resevwa a. Nou pral pran kle piblik la nan rezo a, men pou sa, kont benefisyè a dwe inisyalize, se sa ki, gen omwen yon tranzaksyon. Ou ka itilize yon demann REST GET /api/accounts/getPublicKey?address={ADAMANT address}, epi lè chaje chat, kle piblik entèrlokuteur yo ap deja disponib.
Mesaje a ankripte mesaj yo lè l sèvi avèk algorithm curve25519xsalsa20poly1305 (Bwat NaCl). Piske kont lan gen kle Ed25519, pou fòme yon bwat, kle yo dwe konvèti an premye nan Curve25519 Diffie-Hellman.
Pou yon tranzaksyon mesaj, bagay ki pi enpòtan se asset - ou bezwen mete yon mesaj nan objè a chat ak estrikti:
message - sove mesaj la chiffres
own_message - nonse
type - kalite mesaj
Mesaj yo tou divize an kalite. Esansyèlman, paramèt la type di w kijan pou w konprann message. Ou ka voye jis yon tèks, oswa ou ka voye yon objè ki gen bagay enteresan andedan - pou egzanp, sa a se ki jan mesaje a fè transfè cryptocurrency nan chat.
Pou asire ke tout moun gen konfyans nan otantisite a nan moun k ap voye a ak moun k ap resevwa a, lè a nan voye a ak kontni an nan mesaj la, tranzaksyon an siyen. Yon siyati dijital pèmèt ou verifye otantisite yon tranzaksyon lè l sèvi avèk yon kle piblik - yon kle prive pa nesesè pou sa.
Men, siyati a li menm fèt ak kle prive a:
Dyagram nan montre ke nou premye hash tranzaksyon an ak SHA-256 epi apre siyen li Ed25519 EdDSA epi jwenn yon siyati signature, ak ID tranzaksyon an se yon pati nan hash SHA-256 la.
Egzanp aplikasyon:
1 — Fòme yon blòk done, ki gen ladan yon mesaj
/**
* 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)
}
Yon sistèm distribiye nan nœuds, ki baze sou konsansis, detèmine "otantisite" nan mesaj tranzaksyon an. Nan men ki moun ak ki moun, ki lè, si mesaj la te ranplase ak yon lòt, epi si lè yo te voye a te endike kòrèkteman. Sa a se yon avantaj trè enpòtan nan blockchain la - pa gen okenn estrikti santral ki responsab pou verifikasyon, ak sekans mesaj yo ak kontni yo pa ka fo.
Premyèman, yon sèl ne tcheke presizyon an, ak Lè sa a, voye li bay lòt moun - si majorite a di ke tout bagay se nan lòd, tranzaksyon an pral enkli nan pwochen blòk la nan chèn lan - sa a se konsansis.
Ou ka wè pati nan kòd ne ki responsab chèk yo sou GitHub - validator.js и verifye.js. Wi, ne la kouri sou Node.js.
Ki gen ladan yon tranzaksyon ak yon mesaj nan yon blòk
Если консенсус достигнут, транзакция с нашим сообщением попадет в следующий блок наряду с другими достоверными транзакциями.
Blòk yo gen yon sekans strik, epi chak blòk ki vin apre yo fòme ki baze sou hash yo nan blòk anvan yo.
Pwen an se ke mesaj nou an tou enkli nan sekans sa a epi yo pa ka "rearanje". Si plizyè mesaj tonbe nan yon blòk, lòd yo pral detèmine pa timestamp mesaj.
Lekti mesaj
Aplikasyon mesaje a rekipere tranzaksyon ki soti nan chèn blòk la ke yo voye bay moun k ap resevwa a. Pou sa nou te fè yon pwen final api/chatrooms.
Tout tranzaksyon yo disponib pou tout moun - ou ka resevwa mesaj chiffres. Men, sèlman moun k ap resevwa a ka dekripte lè l sèvi avèk kle prive li ak kle piblik moun k ap voye a:
Depi mesaj yo delivre nan fason sa a nan apeprè 5 segonn - sa a se tan an yon nouvo blòk rezo parèt - nou te vini ak yon koneksyon kliyan-a-nœud ak priz nœud-a-nœud. Lè yon ne resevwa yon nouvo tranzaksyon, li tcheke validite li epi voye li bay lòt nœuds. Tranzaksyon an disponib pou kliyan mesaje menm anvan konsansis rive ak enklizyon nan blòk la. Nan fason sa a nou pral delivre mesaj imedyatman, menm jan ak mesaje enstantane regilye.
Чтобы хранить адресную книгу, мы сделали KVS — Key-Value Storage — это еще один тип транзакций, в которых asset se pa NaCl-box ki chiffres, men NaCl-sekrè bwat. Men ki jan mesaje a estoke lòt done.
Fichye/transfè imaj ak gwoup chat toujou mande anpil travay. Natirèlman, nan fòma bevi-ak-bevi sa a ka "vise moute" byen vit, men nou vle kenbe menm nivo vi prive.
Wi, gen travay toujou pou fèt - depreferans, vi prive reyèl sipoze ke itilizatè yo pa pral konekte nan nœuds rezo piblik, men yo pral ogmante pwòp yo. Ki pousantaj itilizatè ou panse fè sa? Sa a dwat, 0. Nou te kapab pasyèlman rezoud pwoblèm sa a ak vèsyon an Tor nan mesaje a.
Мы доказали, что мессенджер на блокчейне может существовать. Ранее была только одна попытка в 2012 году — bitmessage, ki echwe akòz tan livrezon mesaj long, chaj CPU, ak mank de aplikasyon mobil.
Ak dout se akòz lefèt ke mesaje sou blockchain la devan tan yo - moun yo pa pare yo pran responsablite pou kont yo, posede enfòmasyon pèsonèl se poko yon tandans, ak teknoloji pa pèmèt gwo vitès sou blockchain la. Plis analogue teknolojik nan pwojè nou an ap parèt pwochen. Ou pral wè.