Najvažnije iz članka
- Hyperledger Fabric omogućuje postavljanje privatnih blockchain mreža s dozvoljenim pristupom, idealnih za poslovne primjene koje zahtijevaju kontrolu, povjerljivost i performanse.
- Prije početka instalacije, osigurajte da imate instalirane Docker, Docker Compose, cURL i Git, a preporučuje se Linux ili macOS okruženje.
- Proces postavljanja uključuje preuzimanje Fabric alata i primjera, generiranje kriptomaterijala i konfiguracijskih datoteka te pokretanje Docker kontejnera za redarsku službu i organizacije.
- Raspoređivanje pametnih ugovora (chaincode) u Fabricu 2.x+ zahtijeva odobravanje definicije od strane sudionika te naknadni commit, nakon čega se mogu pozivati transakcije i postavljati upiti.
Sadržaj članka
- Uvod u Hyperledger Fabric
- Ključne značajke Hyperledger Fabric-a:
- Preduvjeti za instalaciju
- Potrebni alati:
- Korak 1: Preuzimanje alata i primjera Hyperledger Fabric-a
- Korak 2: Postavljanje osnovne mreže (First Network)
- Generiranje kriptomaterijala
- Generiranje konfiguracijskih datoteka kanala i sustava
- Pokretanje mreže
- Korak 3: Raspoređivanje i interakcija s pametnim ugovorom (Chaincode)
- Instalacija Chaincode-a
- Pokretanje Chaincode-a (Instantiate/Approve & Commit)
- Interakcija s Chaincode-om
- Korak 4: Razumijevanje komponenti mreže
- Čvorovi (Peers)
- Redarska služba (Ordering Service)
- Certifikacijska tijela (Certificate Authorities - CAs)
- Kanali (Channels)
- Pametni ugovori (Chaincode)
- Korak 5: Čišćenje mreže
- Zaključak
U ovom detaljnom tutorialu istražit ćemo korak po korak proces postavljanja privatne blockchain mreže koristeći Hyperledger Fabric, jedan od vodećih okvira za poslovne blockchain platforme. Hyperledger Fabric nudi modularan, skalabilan i siguran pristup razvoju privatnih blockchain rješenja, idealnih za industrije koje zahtijevaju kontrolu pristupa, povjerljivost podataka i visoke performanse.
Uvod u Hyperledger Fabric
Hyperledger Fabric dio je Hyperledger projekta, inicijative Linux Foundationa za promicanje blockchain tehnologija otvorenog koda. Za razliku od javnih blockchaina poput Bitcoin ili Ethereum, Hyperledger Fabric dizajniran je za konzorcijske blockchain mreže, gdje sudionici imaju poznate identitete i gdje je potrebna kontrola pristupa podacima i transakcijama. To ga čini idealnim za poslovne primjene u lancima opskrbe, financijama, zdravstvu i drugim sektorima gdje je privatnost i dozvoljeni pristup ključan.
Ključne značajke Hyperledger Fabric-a:
- Dozvoljeni pristup (Permissioned network): Svi sudionici su poznati i autentificirani. To omogućuje implementaciju kompleksnih pravila upravljanja i privatnosti.
- Modularna arhitektura: Sastoji se od komponenti kao što su čvorovi (peers), redari (orderers), certifikacijska tijela (CAs) i pametni ugovori (chaincode), što omogućuje fleksibilnost i prilagodbu.
- Privatni kanali: Omogućuje privatne transakcije i podatke između subseta sudionika unutar iste mreže, osiguravajući povjerljivost poslovnih operacija.
- Podrška za pametne ugovore (Chaincode): Pametni ugovori, pisani u jezicima kao što su Go, Node.js ili Java, definiraju poslovnu logiku i transakcije na blockchainu.
- Konzensus mehanizam: Koristi različite mehanizme konsenzusa (npr. Raft, Kafka) koji su optimizirani za performanse i pouzdanost u poslovnim okruženjima.
Preduvjeti za instalaciju
Prije nego što započnemo s postavljanjem, osigurajmo da imamo sve potrebne alate i okruženje spremno. Preporučuje se korištenje Linux ili macOS operativnog sustava za ovaj tutorial. Iako je moguće na Windows-u uz WSL2 (Windows Subsystem for Linux 2), upute su primarno usmjerene na Unix-bazirane sustave.
Potrebni alati:
- Docker i Docker Compose: Neophodni za pokretanje Hyperledger Fabric komponenti kao kontejnera. Osigurajte da imate instaliran Docker Engine (verzija 18.03.0 ili novija) i Docker Compose (verzija 1.22.0 ili novija).
- Go programska podrška: (Opcija, ako ćete razvijati chaincode u Go-u) Verzija 1.14.x ili novija.
- Node.js i npm: (Opcija, ako ćete razvijati chaincode u Node.js-u) Verzija 10.x.x ili 12.x.x.
- cURL: Za preuzimanje skripti.
- Git: Za kloniranje repozitorija.
Instalacija Docker-a na Ubuntu/Debian:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
sudo systemctl start docker
sudo systemctl enable docker
Instalacija Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Nakon instalacije Docker-a, ponovno se prijavite (ili restartajte) kako bi se usermod promjene primijenile i kako biste mogli pokretati Docker naredbe bez sudo.
Korak 1: Preuzimanje alata i primjera Hyperledger Fabric-a
Hyperledger Fabric pruža skup skripti i primjera koji nam olakšavaju početak. Najbolji način za preuzimanje je kloniranje fabric-samples repozitorija.
mkdir -p ~/go/src/github.com/hyperledger/
cd ~/go/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
Zatim ćemo preuzeti binarne datoteke i Docker slike koristeći skripte koje dolaze uz primjere. Odaberite verziju Hyperledger Fabric-a koju želite koristiti. Za ovaj tutorial koristit ćemo stabilnu verziju, npr. 2.4.x.
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh | bash -s -- 2.4.7 1.4.12 0.5.0
Ova skripta će preuzeti i instalirati sve potrebne binarne datoteke (poput cryptogen, configtxgen, peer itd.) u direktorij fabric-samples/bin i povući odgovarajuće Docker slike.
Provjerite je li preuzimanje uspješno pokretanjem:
peer version
Trebali biste vidjeti informacije o verziji peer CLI alata.
Korak 2: Postavljanje osnovne mreže (First Network)
Hyperledger Fabric nudi primjer osnovne mreže pod nazivom first-network koji je idealan za učenje. Nalazi se u direktoriju fabric-samples/first-network.
cd ~/go/src/github.com/hyperledger/fabric-samples/first-network
Generiranje kriptomaterijala
Prvo, moramo generirati kriptomaterijale (certifikate i ključeve) za sve entitete u mreži: organizacije, redare i čvorove. Koristit ćemo alat cryptogen.
./byfn.sh generate
Ova naredba će stvoriti direktorij crypto-config unutar first-network koji sadrži sve potrebne certifikate i ključeve za Org1, Org2 i Orderer organizacije.
Generiranje konfiguracijskih datoteka kanala i sustava
Zatim, koristit ćemo alat configtxgen za stvaranje definicije sustavskog kanala za redarsku službu i aplikacijskog kanala za sudjelujuće organizacije.
# Ova naredba je uključena u ./byfn.sh generate, ali je ovdje radi objašnjenja
# ./configtxgen -profile TwoOrgsOrdererGenesis -channelID system-channel -outputBlock ./channel-artifacts/genesis.block
# ./configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
# ./configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
# ./configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
./byfn.sh generate automatski pokreće ove korake i stvara genesis.block (za redarsku službu) i channel.tx (za aplikacijski kanal mychannel), kao i Org1MSPanchors.tx i Org2MSPanchors.tx (za sidrene čvorove).
Pokretanje mreže
Sada kada smo generirali sve potrebne datoteke, možemo pokrenuti Docker kontejnere za našu mrežu.
./byfn.sh up
Ova naredba će pokrenuti Docker kontejnere za:
- Redarsku službu:
orderer.example.com - Organizacije:
peer0.org1.example.com,peer1.org1.example.com,peer0.org2.example.com,peer1.org2.example.com - Certifikacijska tijela:
ca_peerOrg1,ca_peerOrg2,ca_orderer
Nakon što se svi kontejneri pokrenu, skripta byfn.sh će automatski:
- Stvoriti kanal
mychannel. - Pridružiti čvorove
peer0.org1.example.comipeer0.org2.example.comkanalu. - Ažurirati sidrene čvorove za
Org1iOrg2.
Provjeriti status kontejnera možete s:
docker ps -a
Korak 3: Raspoređivanje i interakcija s pametnim ugovorom (Chaincode)
Sada kada je naša mreža pokrenuta, možemo rasporediti (deployati) i testirati pametni ugovor, poznat kao chaincode u Hyperledger Fabricu.
Instalacija Chaincode-a
Chaincode se prvo mora instalirati na svaki čvor gdje će biti pokrenut. Ovdje ćemo koristiti basic chaincode primjer (često ranije poznat kao fabcar).
# Primjer instalacije s byfn.sh - ova skripta to automatski radi
# Nije potrebno ručno, ali evo koraka za razumijevanje
# docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" peer0.org1.example.com peer lifecycle chaincode install basic_1.0.tar.gz
Skripta byfn.sh automatski instalira chaincode na čvorove i pokreće potrebne migracije.
Pokretanje Chaincode-a (Instantiate/Approve & Commit)
U Fabric verziji 2.x, proces pokretanja chaincode-a je složeniji i uključuje zajedničko odobravanje (endorsement) sudionika. To se radi kroz Lifecycle Chaincode proces.
- Pakiranje Chaincode-a: Chaincode se pakira u
.tar.gzdatoteku. - Instalacija Chaincode-a na čvorove: Paket se instalira na čvorove gdje će chaincode raditi.
- Odobravanje definicije Chaincode-a (Approve): Svaka organizacija koja želi koristiti chaincode mora odobriti njegovu definiciju (ime, verziju, endorsement policy). Npr.,
Org1iOrg2moraju odobriti chaincode. - Ugovaranje definicije Chaincode-a (Commit): Nakon što dovoljan broj organizacija odobri definiciju, jedna od njih može poslati transakciju za
commitdefinicije na kanal. Tek tada chaincode postaje aktivan.
./byfn.sh up automatizira ove korake za basic chaincode. Ako želite ručno, to su kompleksne CLI naredbe koje uključuju peer lifecycle chaincode approveformyorg i peer lifecycle chaincode commit.
Interakcija s Chaincode-om
Sada možemo pozivati transakcije na našem raspoređenom chaincodeu.
Inicijalizacija Chaincode-a: Prvi poziv nakon commita je obično Init funkcija (ako postoji) ili prva transakcijska funkcija koja inicijalizira početno stanje.
./byfn.sh init
(Ovo je demonstrativna naredba, byfn.sh up obično uključuje inicijalizaciju.)
Pozivanje Chaincode-a (Invoke): Izvršavanje transakcije koja mijenja stanje blockchaina.
# Npr. stvaranje novog 'automobila'
docker exec cli peer chaincode invoke -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic -c '{"function":"CreateAsset","Args":["asset1","blue","35","Tom","100"]}'
Upit Chaincode-a (Query): Čitanje stanja blockchaina bez promjene.
# Npr. upit za 'asset1'
docker exec cli peer chaincode query -C mychannel -n basic -c '{"function":"ReadAsset","Args":["asset1"]}'
Ove naredbe će poslati transakcije na mrežu, koje će obraditi čvorovi peer0.org1, verificirati endorsement policy, proslijediti redarskoj službi, a zatim distribuirati i dodati u blokove.
Korak 4: Razumijevanje komponenti mreže
Da bismo dublje razumjeli našu mrežu, pogledajmo ključne komponente koje smo pokrenuli:
Čvorovi (Peers)
Čvorovi su temeljni elementi koji održavaju kopiju ledger-a (distribuirane knjige) i izvršavaju pametne ugovore. Imamo dva tipa čvorova:
- Endorsing Peers: Sim-iliraju transakcije i stvaraju potpisanu potvrdu (endorsement) koja dokazuje da su transakciju izveli i da su rezultati valjani prema pravilima pametnog ugovora i politici odobravanja (endorsement policy).
- Committing Peers: Validiraju transakcije, dodaju ih u lokalnu kopiju ledger-a i objavljuju transakcije kao blokove.
U first-network primjeru, peer0.org1.example.com i peer0.org2.example.com su i endorsing i committing peers.
Redarska služba (Ordering Service)
Redarska služba (često poznata kao Orderer) odgovorna je za kolekcioniranje transakcija, njihovo redanje i pakiranje u blokove. Ona ne izvršava chaincode niti održava kopiju ledger-a, već osigurava konzistentan poredak transakcija. Hyperledger Fabric podržava različite konsenzus mehanizme za redarsku službu, uključujući Solo (za razvoj) i Raft (za produkciju).
Certifikacijska tijela (Certificate Authorities - CAs)
CAs su odgovorni za izdavanje digitalnih certifikata koji identificiraju sudionike unutar mreže. Svaka organizacija ima svoje vlastito CA za upravljanje identitetima. Certifikati osiguravaju da su svi sudionici autentificirani i ovlašteni.
Kanali (Channels)
Kanali su privatni "pod-blockchaini" ili "privatne veze" unutar veće Hyperledger Fabric mreže. Oni omogućuju privatnost transakcija i podataka između odabranih sudionika. Samo sudionici koji su dio određenog kanala mogu vidjeti transakcije i podatke na tom kanalu.
Pametni ugovori (Chaincode)
Chaincodei su programi koji implementiraju poslovnu logiku na blockchainu. Oni definiraju pravila za stvaranje, čitanje, ažuriranje i brisanje podataka (assets) na ledgeru. Chaincodei se izvršavaju na endorsing čvorovima i osiguravaju da sve transakcije slijede unaprijed definirana pravila.
Korak 5: Čišćenje mreže
Nakon što ste završili s eksperimentiranjem, preporučuje se očistiti sve Docker kontejnere, slike i generirane datoteke kako biste započeli iznova, ako je potrebno.
cd ~/go/src/github.com/hyperledger/fabric-samples/first-network
./byfn.sh down
Ova naredba će zaustaviti i ukloniti sve Docker kontejnere pokrenute u first-network primjeru, ukloniti Docker slike i obrisati generirane kriptomaterijale i konfiguracijske datoteke.
Zaključak
Postavljanje privatne blockchain mreže s Hyperledger Fabricom pruža robustnu i fleksibilnu platformu za poslovne aplikacije koje zahtijevaju povjerljivost, skalabilnost i kontrolu pristupa. Ovaj tutorial vas je proveo kroz osnovne korake postavljanja, konfiguracije i interakcije s mrežom. Razumijevanje modularne arhitekture i ključnih komponenti Hyperledger Fabric-a ključno je za uspješno implementiranje složenih blockchain rješenja u produkcijskom okruženju. Daljnje istraživanje uključuje razvoj vlastitih chaincodea, integraciju s vanjskim aplikacijama putem SDK-a te implementaciju naprednijih scenarija privatnosti koristeći privatne podatkovne kolekcije (private data collections).
Komentari