ProHoster > Блог > Isakoso > Bawo ni ojiṣẹ ti a ti sọ di mimọ ṣiṣẹ lori blockchain?
Bawo ni ojiṣẹ ti a ti sọ di mimọ ṣiṣẹ lori blockchain?
Ni ibẹrẹ ọdun 2017, a bẹrẹ ṣiṣẹda ojiṣẹ lori blockchain [orukọ ati ọna asopọ wa ninu profaili] nipa sisọ awọn anfani lori awọn ojiṣẹ P2P Ayebaye.
Ti kọja 2.5 ọdun, ati pe a ni anfani lati jẹrisi ero wa: awọn ohun elo ojiṣẹ wa bayi fun iOS, PWA wẹẹbu, Windows, GNU/Linux, Mac OS ati Android.
Loni a yoo sọ fun ọ bi ojiṣẹ blockchain ṣe n ṣiṣẹ ati bii awọn ohun elo alabara ṣe le ṣiṣẹ pẹlu API rẹ.
A fẹ blockchain lati yanju aabo ati awọn ọran aṣiri ti awọn ojiṣẹ P2P Ayebaye:
Ọkan tẹ lati ṣẹda iroyin - ko si awọn foonu tabi imeeli, ko si wiwọle si awọn iwe adirẹsi tabi geolocations.
Awọn interlocutors ko fi idi awọn asopọ taara mulẹ; gbogbo ibaraẹnisọrọ waye nipasẹ eto pinpin ti awọn apa. Awọn adirẹsi IP awọn olumulo ko ni iraye si ara wọn.
Gbogbo awọn ifiranṣẹ ti wa ni ìpàrokò Ipari-si-opin curve25519xsalsa20poly1305. O dabi pe eyi kii yoo ṣe ohun iyanu fun ẹnikẹni, ṣugbọn koodu orisun wa ṣii.
Kolu MITM ko kuro - ifiranṣẹ kọọkan jẹ idunadura kan ati pe Ed25519 EdDSA fowo si.
Ifiranṣẹ naa pari ni bulọọki tirẹ. Aitasera ati timestamp O ko le ṣatunṣe awọn bulọọki, ati nitorina aṣẹ ti awọn ifiranṣẹ.
"Emi ko sọ bẹ" kii yoo ṣiṣẹ pẹlu awọn ifiranṣẹ lori blockchain.
Ko si eto aarin ti o ṣe awọn sọwedowo lori “otitọ” ti ifiranṣẹ kan. Eyi ni a ṣe nipasẹ eto pinpin ti awọn apa ti o da lori ipohunpo, ati pe o jẹ ohun ini nipasẹ awọn olumulo.
Ko ṣeeṣe ti ihamon - awọn akọọlẹ ko le dina ati awọn ifiranṣẹ ko le paarẹ.
Agbara lati gba gbogbo awọn ibaraẹnisọrọ rẹ lati ẹrọ eyikeyi nigbakugba tumọ si pe o ko ni lati tọju awọn ibaraẹnisọrọ ni agbegbe rara.
Ìmúdájú ti ifijiṣẹ ifiranṣẹ. Ko si ẹrọ olumulo, ṣugbọn si nẹtiwọki. Ni pataki, eyi jẹ ijẹrisi agbara olugba lati ka ifiranṣẹ rẹ. Eyi jẹ ẹya ti o wulo fun fifiranṣẹ awọn iwifunni to ṣe pataki.
Awọn anfani Blockchain tun pẹlu isọpọ isunmọ pẹlu awọn owo-iwo-owo crypto Ethereum, Dogecoin, Lisk, Dash, Bitcoin (eyi tun wa ni ilọsiwaju) ati agbara lati firanṣẹ awọn ami ni awọn ibaraẹnisọrọ. A paapaa ṣe paṣipaarọ crypto ti a ṣe sinu.
Ati lẹhinna - bawo ni gbogbo rẹ ṣe n ṣiṣẹ.
Ifiranṣẹ jẹ idunadura kan
Gbogbo eniyan ti mọ tẹlẹ si otitọ pe awọn iṣowo ni awọn ami gbigbe blockchain (awọn owó) lati ọdọ olumulo kan si ekeji. Bi Bitcoin. A ṣẹda pataki iru idunadura fun gbigbe awọn ifiranṣẹ.
Lati fi ifiranṣẹ ranṣẹ si ojiṣẹ lori blockchain, o nilo lati lọ nipasẹ ọpọlọpọ awọn igbesẹ:
Encrypt ọrọ ifiranṣẹ
Fi ciphertext sinu idunadura kan
Wole idunadura naa
Firanṣẹ idunadura kan si eyikeyi ipade nẹtiwọki
Eto ti a pin kaakiri ti npinnu “otitọ” ti ifiranṣẹ kan
Ti ohun gbogbo ba dara, idunadura pẹlu ifiranṣẹ naa wa ninu bulọọki atẹle
Olugba gba idunadura ifiranṣẹ ati decrypts
Awọn igbesẹ 1–3 ati 7 ni a ṣe ni agbegbe lori alabara, ati awọn igbesẹ 5–6 ni a ṣe lori awọn agbalejo.
Ifiranṣẹ ìsekóòdù
Ifiranṣẹ naa jẹ fifipamọ pẹlu bọtini ikọkọ ti olufiranṣẹ ati bọtini gbogbo eniyan ti olugba. A yoo gba bọtini ti gbogbo eniyan lati nẹtiwọọki, ṣugbọn fun eyi, akọọlẹ olugba gbọdọ wa ni ipilẹṣẹ, iyẹn ni, ni o kere ju idunadura kan. O le lo ibeere REST kan GET /api/accounts/getPublicKey?address={ADAMANT address}, ati nigba ikojọpọ awọn iwiregbe, awọn bọtini gbangba ti awọn interlocutors yoo ti wa tẹlẹ.
Ojiṣẹ naa ṣe ifipamọ awọn ifiranṣẹ ni lilo curve25519xsalsa20poly1305 algorithm (NaCl apoti). Niwọn bi akọọlẹ naa ṣe ni awọn bọtini Ed25519, lati ṣe apoti kan, awọn bọtini gbọdọ kọkọ yipada si Curve25519 Diffie-Hellman.
Fun idunadura ifiranṣẹ, ohun pataki julọ ni asset - o nilo lati gbe ifiranṣẹ kan sinu nkan naa chat pẹlu ilana:
message - fi awọn ti paroko ifiranṣẹ
own_message - rara
type - iru ifiranṣẹ
Awọn ifiranṣẹ ti wa ni tun pin si orisi. Ni pataki, paramita naa type sọ fun ọ bi o ṣe le ni oye message. O le fi ọrọ ranṣẹ, tabi o le fi ohun kan ranṣẹ pẹlu awọn nkan ti o nifẹ si inu - fun apẹẹrẹ, eyi ni bi ojiṣẹ ṣe ṣe awọn gbigbe cryptocurrency ni awọn iwiregbe.
Lati rii daju pe gbogbo eniyan ni idaniloju ni otitọ ti olufiranṣẹ ati olugba, akoko fifiranṣẹ ati akoonu ti ifiranṣẹ naa, iṣowo naa ti wole. Ibuwọlu oni-nọmba gba ọ laaye lati rii daju otitọ ti idunadura kan nipa lilo bọtini gbogbogbo - bọtini ikọkọ ko nilo fun eyi.
Ṣugbọn ibuwọlu funrararẹ ni a ṣe ni lilo bọtini ikọkọ:
Aworan naa fihan pe a kọkọ hash idunadura naa pẹlu SHA-256 ati lẹhinna fowo si Ed25519 EdDSA ati ki o gba a Ibuwọlu signature, ati ID idunadura jẹ apakan ti SHA-256 hash.
Apẹẹrẹ imuse:
1 - Fọọmu bulọọki data, pẹlu ifiranṣẹ kan
/**
* 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)
}
Eto pinpin ti awọn apa, ti o da lori ipohunpo, pinnu “otitọ” ti ifiranṣẹ idunadura naa. Lati ọdọ tani ati si tani, nigbawo, boya ifiranṣẹ ti rọpo pẹlu omiiran, ati boya akoko fifiranṣẹ ni itọkasi ni deede. Eyi jẹ anfani pataki pupọ ti blockchain - ko si eto aarin ti o ni iduro fun ijẹrisi, ati pe ọna ti awọn ifiranṣẹ ati akoonu wọn ko le ṣe iro.
Ni akọkọ, oju ipade kan ṣayẹwo deede, lẹhinna firanṣẹ si awọn miiran - ti ọpọlọpọ ba sọ pe ohun gbogbo wa ni ibere, idunadura naa yoo wa ninu bulọọki atẹle ti pq - eyi jẹ isokan.
Apa ti koodu ipade ti o jẹ iduro fun awọn sọwedowo ni a le wo lori GitHub - afọwọsi.js и daju.js. Bẹẹni, ipade naa nṣiṣẹ lori Node.js.
Pẹlu idunadura kan pẹlu ifiranṣẹ kan ninu bulọki
Ti o ba ti gba ipohunpo, idunadura pẹlu ifiranṣẹ wa yoo wa ninu bulọki atẹle pẹlu awọn iṣowo to wulo miiran.
Awọn bulọọki ni ọna ti o muna, ati pe bulọọki kọọkan ti o tẹle ni a ṣẹda da lori awọn hashes ti awọn bulọọki iṣaaju.
Koko ni pe ifiranṣẹ wa tun wa ninu ọkọọkan yii ati pe ko le ṣe “tunto”. Ti ọpọlọpọ awọn ifiranṣẹ ba ṣubu sinu bulọki, aṣẹ wọn yoo pinnu nipasẹ timestamp awọn ifiranṣẹ.
Awọn ifiranṣẹ kika
Ohun elo ojiṣẹ n gba awọn iṣowo pada lati blockchain ti o firanṣẹ si olugba. Fun eyi a ṣe aaye ipari kan api/chatrooms.
Gbogbo awọn iṣowo wa fun gbogbo eniyan - o le gba awọn ifiranṣẹ ti paroko. Ṣugbọn olugba nikan ni o le dinku nipa lilo bọtini ikọkọ rẹ ati bọtini gbangba ti olufiranṣẹ:
Niwọn igba ti a ti firanṣẹ awọn ifiranṣẹ ni ọna yii ni bii iṣẹju-aaya 5 - eyi ni akoko ti bulọọki nẹtiwọọki tuntun yoo han - a wa pẹlu asopọ-si-node kan ti alabara ati ipade iho-si-node. Nigbati ipade kan ba gba idunadura tuntun kan, o ṣayẹwo iwulo rẹ ati firanṣẹ siwaju si awọn apa miiran. Idunadura naa wa fun awọn alabara ojiṣẹ paapaa ṣaaju ki ifọkanbalẹ waye ati ifisi ninu bulọki naa. Ni ọna yii a yoo fi awọn ifiranṣẹ ranṣẹ lesekese, gẹgẹ bi awọn ojiṣẹ lojukanna deede.
Lati tọju iwe adirẹsi, a ṣe KVS - Ibi ipamọ-Iye-iye - eyi jẹ iru iṣowo miiran ninu eyiti asset o jẹ ko NaCl-apoti ti wa ni ìpàrokò, ṣugbọn NaCl-apoti asiri. Eyi ni bii ojiṣẹ naa ṣe tọju data miiran.
Gbigbe faili/aworan ati awọn ibaraẹnisọrọ ẹgbẹ ṣi nilo iṣẹ pupọ. Nitoribẹẹ, ni ọna kika blunder-ati-blunder eyi le jẹ “ti bajẹ” ni kiakia, ṣugbọn a fẹ lati ṣetọju ipele ikọkọ kanna.
Bẹẹni, iṣẹ ṣi wa lati ṣee ṣe - ni pipe, aṣiri gidi dawọle pe awọn olumulo kii yoo sopọ si awọn apa nẹtiwọọki gbogbogbo, ṣugbọn yoo gbe tiwọn ga. Iwọn ogorun awọn olumulo wo ni o ro pe o ṣe eyi? Iyẹn tọ, 0. A ni anfani lati yanju ọran yii ni apakan pẹlu ẹya Tor ti ojiṣẹ naa.
A ti fihan pe ojiṣẹ lori blockchain le wa. Ni iṣaaju, igbiyanju kan nikan wa ni ọdun 2012 - bitmessage, eyiti o kuna nitori awọn akoko ifijiṣẹ ifiranṣẹ gigun, fifuye Sipiyu, ati aini awọn ohun elo alagbeka.
Ati ṣiyemeji jẹ nitori otitọ pe awọn ojiṣẹ lori blockchain wa niwaju akoko wọn - awọn eniyan ko ṣetan lati gba ojuse fun akọọlẹ wọn, nini alaye ti ara ẹni ko tun jẹ aṣa, ati imọ-ẹrọ ko gba laaye awọn iyara to gaju lori blockchain. Awọn analogues imọ-ẹrọ diẹ sii ti iṣẹ akanṣe wa yoo han ni atẹle. Iwọ yoo rii.