He pehea te mahi a te kaikawe korero i runga i te poraka?
I te timatanga o te tau 2017, i timata matou ki te hanga i tetahi karere i runga i te poraka [kei roto te ingoa me te hononga hono i roto i te kōtaha] ma te matapaki i nga painga mo nga karere P2P matarohia.
Paahi 2.5 tau, a i taea e matou te whakau i to maatau whakaaro: kei te waatea nga tono karere mo iOS, Tukutuku PWA, Windows, GNU/Linux, Mac OS me Android.
I tenei ra ka korero matou ki a koe me pehea te mahi a te karere poraka me pehea te mahi a nga tono a nga kaihoko me tana API.
I hiahia matou ki te poraka ki te whakaoti i nga take haumarutanga me nga take tūmataiti o nga karere P2P matarohia:
Kotahi te paato ki te hanga i tetahi kaute - kaore he waea, he imeera ranei, kaore he urunga ki nga pukapuka korero, ki nga waahi whenua ranei.
Kare nga kaikorero e whakarite hononga tika; ka puta nga korero katoa ma te punaha tohatoha o nga pona. Ko nga wahitau IP a nga kaiwhakamahi kaore e uru atu ki a raatau ano.
Ko nga karere katoa kua whakamunatia te Anau Whakamutunga-ki-Mutunga25519xsalsa20poly1305. Te ahua nei kaore tenei e miharo ki tetahi, engari kei te tuwhera to tatou waehere puna.
Ka whakakorehia te whakaeke MITM - he tauwhitinga ia karere, ka hainatia e Ed25519 EdDSA.
Ka mutu te karere ki tona ake poraka. Te riterite me te timestamp Kaore e taea e koe te whakatika i nga poraka, na reira ko te raupapa o nga karere.
"Kaore au i kii" kaore e mahi me nga karere i runga i te poraka.
Karekau he hanganga matua e arowhai ana i te "pono" o te karere. Ka mahia tenei e te punaha tohatoha o nga pona i runga i te whakaaetanga, a na nga kaiwhakamahi.
Kaore e taea te aukati - kaore e taea te aukati i nga kaute, kaore e taea te whakakore i nga karere.
Ko te kaha ki te tango i o korero katoa mai i tetahi taputapu i nga wa katoa karekau koe e pupuri i nga korero i te rohe katoa.
Te whakapumautanga o te tuku karere. Kaua ki te taputapu a te kaiwhakamahi, engari ki te whatunga. Ko te tikanga, he whakapumautanga tenei mo te kaha o te kaiwhiwhi ki te panui i to karere. He waahanga whai hua tenei mo te tuku whakamohiotanga whakahirahira.
Ko nga painga o te Poraka he whakauru tata ki nga moni crypto Ethereum, Dogecoin, Lisk, Dash, Bitcoin (kei te haere tonu tenei) me te kaha ki te tuku tohu i roto i nga korerorero. I hanga ano e matou he whakawhitiwhiti crypto-i roto.
Na ka - pehea te mahi katoa.
Ko te karere he tauwhitinga
Kua taunga kee te katoa ki te meka ko nga whakawhitinga i roto i te poraka e whakawhiti ana i nga tohu (moni) mai i tetahi kaiwhakamahi ki tetahi atu. Ka rite ki te Bitcoin. I hangaia e matou he momo tauwhitinga motuhake mo te tuku karere.
Ki te tuku karere i roto i te karere i runga i te poraka, me whai koe i etahi waahanga:
Whakamuna kupu karere
Hoatu kuputuhituhi ki roto i te tauwhitinga
Waitohu te tauwhitinga
Tukuna he tauwhitinga ki tetahi node whatunga
Ko te punaha tohatoha o nga pona ka whakatau i te "pono" o te karere
Mena he pai nga mea katoa, ko te whakawhitinga me te karere kei roto i te poraka e whai ake nei
Ka tikina e te kaiwhiwhi te tauwhitinga karere me te wetemuna
Ko nga taahiraa 1–3 me te 7 ka mahia i te rohe ki runga i te kiritaki, ka mahia nga hikoinga 5-6 ki nga kaihautu.
Whakamunatanga karere
Kua whakamunatia te karere ki te taviri tūmataiti a te kaituku me te kī tūmatanui a te kaiwhiwhi. Ka tangohia e matou te taviri a te iwi mai i te whatunga, engari mo tenei, me arawhiti te kaute a te kaiwhiwhi, ara, kia kotahi te tauwhitinga. Ka taea e koe te whakamahi i te tono REST GET /api/accounts/getPublicKey?address={ADAMANT address}, a i te wa e utaina ana nga korerorero, ka watea kee nga taviri a te hunga korero.
Ka whakamuna te karere i nga karere ma te whakamahi i te curve25519xsalsa20poly1305 algorithm (Pouaka NaCl). I te mea kei roto i te kaute nga taviri Ed25519, hei hanga pouaka, me tahuri nga ki ki te Curve25519 Diffie-Hellman i te tuatahi.
Mo te whakawhitiwhiti korero, ko te mea nui asset - me whakatakoto he karere ki roto i te ahanoa chat me te hanganga:
message - tiakina te karere whakamunatia
own_message - karekau
type — momo karere
Ka wehewehea ano nga karere ki nga momo. Ko te tikanga, ko te tawhā type ka korero ki a koe me pehea te mohio message. Ka taea e koe te tuku korero noa, ka taea ranei e koe te tuku i tetahi mea me nga mea whakamere i roto - hei tauira, koinei te mahi a te karere i nga whakawhitinga moni crypto i roto i nga korerorero.
Hei whakarite kia maia te katoa ki te pono o te kaituku me te kaiwhiwhi, te wa tuku me nga korero o te karere, ka hainatia te tauwhitinga. Ma te hainatanga mamati ka taea e koe te manatoko i te pono o tetahi tauwhitinga ma te whakamahi i te taviri a te iwi - kaore e hiahiatia he ki motuhake mo tenei.
Engari ko te hainatanga ka mahia ma te whakamahi i te taviri tūmataiti:
Ko te hoahoa e whakaatu ana i te tuatahi ka hainatia te tauwhitinga me SHA-256 ka haina Ed25519 EdDSA ka whiwhi hainatanga signature, a ko te ID tauwhitinga he waahanga o te SHA-256 hash.
Tauira whakatinanatanga:
1 — Hangaia he poraka raraunga, tae atu ki te karere
/**
* 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)
}
Ko te punaha tohatoha o nga pona, i runga i te whakaaetanga, ka whakatau i te "pono" o te karere tauwhitinga. Mai i a wai, ki a wai, ahea, mena i whakakapihia te karere ki tetahi atu, me te tika te tohu o te wa tuku. He painga tino nui tenei mo te poraka - kaore he hanganga pokapū e whai mana ana mo te manatoko, a, ko te raupapa o nga karere me o raatau ihirangi kaore e taea te tinihanga.
Tuatahi, ka tirotirohia e tetahi pona te tika, ka tukuna atu ki etahi atu - mena ka kii te nuinga kei te pai nga mea katoa, ka uru te tauwhitinga ki te poraka o muri mai o te mekameka - koinei te whakaaro.
Ko te wahanga o te waehere node kei te haepapa mo nga arowhai ka taea te tiro i runga i GitHub - validator.js и manatoko.js. Ae, ka rere te node i runga i te Node.js.
Me te tauwhitinga me te karere i roto i te poraka
Mena ka tutuki te whakaaetanga, ko te whakawhitinga me ta maatau korero ka uru ki te poraka e whai ake nei me etahi atu whakawhitinga whaimana.
Ko nga poraka he raupapa tino kaha, a ko ia poraka ka whai ake ka hangaia i runga i nga tohu o nga poraka o mua.
Ko te kaupapa ko ta tatou karere kei roto ano i tenei raupapa, kaore e taea te "whakahou". Mena he maha nga karere ka taka ki roto i tetahi poraka, ka whakatauhia to raatau ota timestamp karere.
Pānui karere
Ko te tono karere ka tango i nga whakawhitinga mai i te poraka ka tukuna ki te kaiwhiwhi. Mo tenei i hanga e matou he mutunga api/chatrooms.
E waatea ana nga whakawhitinga katoa ki te katoa - ka taea e koe te whiwhi karere whakamunatia. Engari ko te kaiwhiwhi anake ka taea te wetewete ma te whakamahi i tana taviri tūmataiti me te kī tūmatanui a te kaituku:
I te mea ka tukuna nga karere penei i roto i te 5 hēkona - koinei te wa ka puta mai he paraka whatunga hou - i puta mai he hononga turanga kiritaki-ki-node me te node-ki-node. Ina whiwhi tauwhitinga hou tetahi node, ka tirohia e ia tona mana me te tuku atu ki etahi atu pona. Kei te waatea te tauwhitinga ki nga kaihoko karere ahakoa i mua i te puta o te whakaaetanga me te whakauru ki roto i te poraka. Ma tenei ka tukuna e matou nga karere inamata, pera i nga karere tere.
Hei rokiroki i te pukapuka wahitau, i hanga e matou he KVS - Rokiroki Uara-Kua - he momo tauwhitinga ano tenei asset ehara i te pouaka-NaCl i whakamunatia, engari NaCl-secretbox. Koinei te huarahi e penapena ai te karere i etahi atu raraunga.
Ko nga whakawhitinga kōnae/whakaahua me nga korerorero a-rōpū me mahi tonu. Ae ra, i roto i te whakatakotoranga blunder-and-blunder ka taea e tenei te "hurihia" tere, engari e hiahia ana matou ki te pupuri i te taumata o te noho muna.
Ae, he mahi tonu hei mahi - ko te tikanga, ko te whakaaro mo te noho tūmataitinga e kore nga kaiwhakamahi e hono atu ki nga pona whatunga whanui, engari ka whakaara ake i a raatau ake. He aha te ōrau o ngā kaiwhakamahi ki ō whakaaro e mahi ana i tēnei? E tika ana, 0. I taea e matou te whakaoti i tenei take me te putanga Tor o te karere.
Kua whakamatauhia e matou ka taea e tetahi karere i runga i te poraka te noho. I mua, kotahi noa te nganatanga i te tau 2012 - karere bit, i rahua na te roa o nga wa tuku karere, te uta CPU, me te kore o nga tono waea.
A ko te pohehe na te mea ko nga karere i runga i te poraka kei mua i to ratau wa - kaore nga tangata i te rite ki te kawe kawenga mo a raatau putea, ko te pupuri i nga korero whaiaro kaore ano i te ahua, kaore ano te hangarau e tuku i nga tere tere i runga i te poraka. Ka puta mai etahi atu oritenga hangarau o ta maatau kaupapa. Ka kite koe.