[Romanian] Layers - whilei/ethereumproject-wiki GitHub Wiki
name: Layers category:
###Layers
Networking daemon
Scop:networking daemon trebuie sa se poata conecta la alte noduri Ethereum, si sa accepte si sa imparta datele, pentru a servi drept coloana de sprijin pentru reteaua Ethereum. Daemon-ul in sine trebuie sa fie cat mai neutru posibil; ideal ar trebui sa fie util ca parte a oricarei valute sau protocol cryptographic fara modificari. Trebuie sa includa trasaturi anti DDoS, si poate sa mentina un running score care sa previna orice IP singur de a face mai mult de un request pe secunda. Interfata:
- De fiecare data cand Daemon-ul primeste un nou mesaj (i.e. H(M) nu este egal cu H(Mprev) pentru orice Mprev primit anterior), ar trebui sa trimita o cerere POST la http://localhost: containing the data, unde outputport poate fi setat in fisierul ~/.ethereum/ethereum.conf (1242 implicit, in cazul in care nu este setat)
- the daemon should listen on port, unde inputport poate fi setat in fisierul ~/.ethereum/ethereum.conf (1243 implicit, daca nu este setat), si daca primeste un mesaj intr-un post care il solicita ar trebui sa impinga datele spre toate nodurile conectate ale retelei. Dependente: internet, noduri bootstrapping
Ethereum Core
Layer de comunicare (Communication Layer)
1.Process_network_message(sir) -> msg sau tranzactie sau block 2.Create_network_message
IO Layer (ie. De obicei baza de date)
- Insert object(value) (key = sha256(value))
- Get object (key) -> value Data layer
- get_transaction
- get_block
- get_address_balance / nonce
- get_contract_memory_at_index
- get_contract_root
- get_object (Merkle trie nodes, etc)
- block class
- transaction class Manager
- get_latest_block
- add_block (including validation and total difficulty calculation)
- apply_transactions_to_block (for miners) Application Layer
- Wallet
- Full
- SPV
- Graphical block explorer
- Miner Clase Clasa Block Scop: clasa block trebuia sa poata analiza block-uri, sa le serializeze si sa poata manipula anumite operatiuni de actualizare la block-uri. Interfata: Interface:
- deserialize: string -> void (constructor)
- get_balance: number address -> number
- get_contract_state: number address, number index -> number
- update_balance: number address, number newbalance -> void
- update_contract_state: number address, number index, number newvalue -> void
- get_contract_size: number address -> number
- serialize: void -> string Clasa Tranzactii Scop: clasa tranzactii trebuie sa poata analiza tranzactiile, sa le semneze si sa le serializeze. Retineti ca metoda de serializare poate esua pentru tranzactii fara semnatura, tranzactiile care sunt create intr-un block si nu sunt deserializate nu ar trebui sa fie, de fapt, serializate sau stocate, in nici o forma. Interfata:
- deserialize: string -> void (constructor)
- sign: privkey -> void
- serialize: void -> string
- create: number address, number value, number fee, array[number] data -> void (constructor)
- hash: void -> number
- to, from, value, fee, data (accessible and settable member variables)