ProHoster > Blog > Pulega > E faʻafefea ona galue se avefeau faʻasalalau i luga o le poloka poloka?
E faʻafefea ona galue se avefeau faʻasalalau i luga o le poloka poloka?
I le amataga o le 2017, na amata ai ona matou fatuina se avefeau i luga o le poloka poloka [igoa ma fesoʻotaʻiga o loʻo i totonu o le talaaga] e ala i le talanoaina o le lelei i luga o le P2P avefeʻau masani.
pasi 2.5 tausaga, ma na mafai ona matou faʻamaonia la matou manatu: o loʻo avanoa nei talosaga avefeʻau mo iOS, Web PWA, Windows, GNU/Linux, Mac OS ma le Android.
O le asō o le a matou taʻuina atu ia te oe pe faʻafefea ona galue le avefeʻau poloka ma pe faʻafefea ona faʻaogaina talosaga a tagata faʻatau ma lana API.
Matou te mananaʻo i le poloka poloka e foia ai le saogalemu ma le le faalauaiteleina o mataupu masani a P2P avefeau:
Tasi le kiliki e fatu ai se tala - leai ni telefoni po'o ni imeli, leai se avanoa i tusi tuatusi po'o geolocations.
E le mafai lava ona fa'atūina feso'ota'iga tu'usa'o tagata fa'afeso'ota'i; o feso'ota'iga uma e faia e ala i se fa'asoa fa'asoa o nodes. O tuatusi IP a tagata fa'aoga e le mafai ona maua e le tasi le isi.
O fe'au uma o lo'o fa'aigoaina Fa'ai'u i le fa'ai'uga curve25519xsalsa20poly1305. E foliga mai o le a le faateia ai se tasi, ae o loʻo tatala le matou code source.
O osofaʻiga a le MITM e le aofia - o feʻau taʻitasi o se fefaʻatauaiga ma ua sainia e Ed25519 EdDSA.
E i'u le fe'au i lana lava poloka. Fa'atasi ma timestamp E le mafai ona e faʻaleleia poloka, ma o le mea lea o le faasologa o feʻau.
"Ou te leʻi fai atu lena mea" o le a le aoga i feʻau i luga o le poloka poloka.
E leai se fausaga tutotonu e siaki ai le "faʻamaoni" o se feʻau. E faia lenei mea e ala i le tufatufaina atu o nodes e faʻavae i luga o le maliega, ma o loʻo umia e tagata faʻaoga.
Le mafai ona fa'asala - e le mafai ona poloka fa'amatalaga ma e le mafai ona tape fe'au.
O le mafai ona maua uma au talanoaga mai so'o se masini i soo se taimi o lona uiga e te le tau teuina ni talanoaga i le lotoifale.
Fa'amaoniga o le tu'uina atu o fe'au. E le o le masini a le tagata faʻaoga, ae o le fesoʻotaʻiga. O le mea moni, o le fa'amaoniga lea o le mafai e le tagata e mauaina ona faitau lau fe'au. O se vaega aoga lea mo le lafoina o faʻamatalaga taua.
O faʻamanuiaga Blockchain e aofia ai foʻi le vavalalata vavalalata ma le cryptocurrencies Ethereum, Dogecoin, Lisk, Dash, Bitcoin (o loʻo faʻaauau pea lenei mea) ma le mafai ona lafo faʻailoga i talatalanoaga. Na matou faia foʻi se faʻatau crypto faʻapipiʻiina.
Ona sosoo ai lea - pe faapefea ona aoga uma.
O se savali o se fefaʻatauaiga
Ua uma ona masani tagata uma i le mea moni o fefaʻatauaiga i totonu o le poloka poloka faʻafeiloaʻi faʻailoga (tupe) mai le tasi tagata faʻaoga i le isi. E pei o Bitcoin. Na matou faia se ituaiga faʻapitoa o fefaʻatauaiga mo le lafoina o feʻau.
Ina ia auina atu se savali i se avefeau i luga o le poloka poloka, e tatau ona e uia ni laasaga:
Fa'ailoga tusi fe'au
Tu'u sifitusi i totonu o se fefa'atauaiga
Saini le fefaʻatauaiga
Auina atu se fefaʻatauaiga i soʻo se node fesoʻotaʻiga
O se fa'asoa fa'asoa o nodes e iloa ai le "fa'amaoni" o se fe'au
Afai e lelei mea uma, o le fefaʻatauaiga ma le feʻau o loʻo aofia i le isi poloka
E toe maua mai e le tagata e mauaina le fe'au fe'au ma fa'asese
Laasaga 1–3 ma le 7 e faia i le lotoifale i luga o le kalani, ma Laasaga 5-6 e faia i luga o le au talimalo.
Fa'ailoga fe'au
O le fe'au o lo'o fa'ailogaina i le ki fa'apitoa a le tagata e auina atu ma le ki fa'alaua'itele a le tagata e mauaina. O le a matou ave le ki a le lautele mai le fesoʻotaʻiga, ae mo lenei mea, e tatau ona amataina le tala a le tagata e mauaina, o lona uiga, ia le itiiti ifo ma le tasi le fefaʻatauaiga. E mafai ona e fa'aogaina se talosaga REST GET /api/accounts/getPublicKey?address={ADAMANT address}, ma pe a faʻapipiʻi talatalanoaga, o ki faʻalauaʻitele a tagata faʻafesoʻotaʻi o le a maua uma.
E fa'ailogaina e le avefe'au fe'au e fa'aaoga ai le curve25519xsalsa20poly1305 algorithm (Pusa NaCl). Talu ai o le tala o loʻo i ai ki Ed25519, e fai ai se atigipusa, e tatau ona liliu muamua ki i Curve25519 Diffie-Hellman.
Mo se fefaʻatauaʻiga feʻau, o le mea sili ona taua asset - e tatau ona e tuʻuina se feʻau i totonu o le mea chat ma fausaga:
message - fa'asaoina le fe'au fa'ailoga
own_message - leai
type — ituaiga savali
Ua vaevaeina foi savali i ituaiga. O le mea moni, o le parakalafa type ta'u atu ia te oe le ala e te malamalama ai message. E mafai ona e lafoina naʻo se tusitusiga, pe mafai foʻi ona e lafoina se mea ma mea manaia i totonu - mo se faʻataʻitaʻiga, o le auala lea e faia ai e le avefeau le faʻaliliuina o le cryptocurrency i talatalanoaga.
Ina ia mautinoa o loʻo talitonu tagata uma i le moni aʻiaʻi o le tagata na auina atu ma le tagata e mauaina, o le taimi o le lafoina ma le anotusi o le feʻau, ua sainia le fefaʻatauaiga. O se saini numera e mafai ai ona e faʻamaonia le moni o se fefaʻatauaiga e faʻaaoga ai se ki faʻapitoa - e le manaʻomia se ki faʻapitoa mo lenei mea.
Ae o le saini lava ia e faia e faʻaaoga ai le ki faʻapitoa:
O le ata o loʻo faʻaalia ai e muamua ona tatou faʻaogaina le fefaʻatauaiga ma SHA-256 ona sainia lea Ed25519 EdDSA ma maua se saini signature, ma o le ID fefaʻatauaiga o se vaega o le SHA-256 hash.
Fa'ata'ita'iga fa'atinoga:
1 - Fausia se poloka faʻamatalaga, e aofia ai se feʻau
/**
* 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)
}
adamant.transactionSign = function (trs, keypair) {
var hash = this.getHash(trs)
return this.sign(hash, keypair).toString('hex')
}
/**
* Creates a signature based on a hash and a keypair.
* @implements {sodium}
* @param {hash} hash
* @param {keypair} keypair
* @return {signature} signature
*/
adamant.sign = function (hash, keypair) {
return sodium.crypto_sign_detached(hash, Buffer.from(keypair.privateKey, 'hex'))
}
Tuuina atu o se fefaʻatauaiga ma se feʻau i se node fesoʻotaʻiga
Talu ai ona o le fesoʻotaʻiga e faʻasalalau, o soʻo se nodes e iai se API tatala o le a faia. Faia se talosaga POST i le mea e gata ai api/transactions:
curl 'api/transactions' -X POST
-d 'TX_DATA'
I le tali atu o le a matou mauaina se ID fefaʻatauaiga o le ituaiga
O se faʻasalalauga faʻapipiʻi o nodes, e faʻavae i luga o le maliega, e fuafua ai le "faʻamaoni" o le feʻau fefaʻatauaiga. Mai ai ma o ai, o anafea, pe na suia le feʻau i se isi, ma pe na faʻaalia saʻo le taimi na auina atu ai. O se tulaga taua tele lea o le poloka poloka - e leai se fausaga tutotonu e nafa ma le faʻamaonia, ma o le faasologa o feʻau ma a latou mea e le mafai ona faʻamaonia.
Muamua, o le tasi node e siaki le saʻo, ona tuʻuina atu lea i isi - afai e fai mai le toʻatele o loʻo faʻatonu mea uma, o le fefaʻatauaiga o le a aofia i le isi poloka o le filifili - o le maliega lea.
O le vaega o le node code e nafa ma siaki e mafai ona vaʻaia i GitHub - validator.js и verify.js. Ioe, o le node e tamo'e ile Node.js.
E aofia ai se fefaʻatauaiga ma se feʻau i totonu o se poloka
Afai e maua le maliega, o le fefaʻatauaiga ma la matou savali o le a aofia ai i le isi poloka faʻatasi ai ma isi fefaʻatauaiga aoga.
O poloka o loʻo i ai se faʻasologa saʻo, ma o poloka taʻitasi mulimuli ane e faʻavae i luga o faʻamau o poloka muamua.
O le manatu o la tatou savali o loʻo aofia ai foi i lenei faasologa ma e le mafai ona "toe faʻatulagaina". Afai e tele fe'au e pa'u i totonu o se poloka, o la latou fa'atonuga o le a fuafuaina e timestamp feau
Faitau savali
O le talosaga a le avefeau e toe maua mai fefaʻatauaiga mai le poloka poloka e auina atu i le tagata e mauaina. Mo lenei mea na matou faia ai se fa'ai'uga api/chatrooms.
O fefa'atauaiga uma e avanoa mo tagata uma - e mafai ona e mauaina fe'au fa'ailoga. Ae na'o le tagata na te mauaina e mafai ona fa'amama le fa'aogaina o lana ki fa'apitoa ma le ki fa'alaua'itele a le tagata e auina atu:
Talu ai ona o fe'au e momoli atu i lenei auala pe a ma le 5 sekone - o le taimi lea e aliali mai ai se poloka feso'ota'iga fou - na matou o mai ai ma se socket socket client-to-node ma node-to-node. A maua e se node se fefaʻatauaiga fou, e siaki lona aoga ma tuʻuina atu i isi nodes. O lo'o avanoa le fefa'ataua'iga i tagata fa'atau avefe'au a'o le'i faia se maliega ma fa'aaofia i totonu ole poloka. O le auala lea o le a matou momoli vave atu ai feʻau, e pei lava o avefeʻau masani masani.
Ina ia teuina le tusi tuatusi, na matou faia KVS - Key-Value Storage - o le isi lea ituaiga o fefaʻatauaiga lea asset e le o le NaCl-pusa e fa'ailoga, ae NaCl-pusa faalilolilo. O le auala lea e teu ai e le avefeau isi faʻamatalaga.
Fa'aliliuga faila/ata ma talatalanoaga fa'avae e mana'omia pea le tele o galuega. O le mea moni, i le faiga fa'asese-ma-fa'aseseina e mafai ona vave "fa'aleaga", ae matou te manana'o e fa'atumauina le tulaga tutusa o le le faalauaiteleina.
Ioe, o loʻo i ai pea galuega e tatau ona fai - o le mea sili, o le tagata faalilolilo e manatu e le faʻafesoʻotaʻi tagata faʻaoga i nodes fesoʻotaʻiga lautele, ae o le a latou faʻatupuina a latou lava. O le a le pasene o tagata fa'aoga e te manatu e faia lenei mea? E sa'o, 0. Na mafai ona matou foia se vaega o lenei mataupu i le Tor version a le avefeau.
Ua matou faʻamaonia e mafai ona i ai se avefeau i luga o le poloka poloka. I le taimi muamua, na o le tasi le taumafaiga i le 2012 - bitmessage, lea na le manuia ona o le umi o taimi e tuʻuina atu ai feʻau, uta CPU, ma le leai o ni talosaga feaveaʻi.
Ma o le masalosalo e mafua mai i le mea moni e faapea o avefeau i luga o le poloka poloka e muamua atu i lo latou taimi - e le o sauni tagata e ave le matafaioi mo a latou tala, o le umiaina o faamatalaga patino e le o se tulaga masani, ma e le faatagaina e tekinolosi le saoasaoa maualuga i luga o le poloka poloka. O isi fa'atekonolosi fa'atusa o la matou poloketi o le a fa'aalia i le isi. O le ae vaai.