🛠️ Λειτουργία του Bluechain SSI

Βήμα 1: Έναρξη Ganache

Το Bluechain SSI χρειάζεται να συνδεθεί σε ένα "ζωντανό" Ethereum blockchain network, αφού πάνω σε αυτό λειτουργεί.

Η πιο εύκολη λύση για αυτό είναι ένα local Ethereum network μέσω Ganache (το εγκαταστήσαμε στο προηγούμενο βήμα - Εγκατάσταση και Xρήση του Bluechain SSI). Το Ganache μπορεί να ρυθμιστεί ώστε να κοιτάει σε local ETH network (φτιαγμένο ως ειδικό instance αποκλειστικά και μόνο στο μηχάνημά σας), ή σε live ETH networks (Ethereum Mainnet, Testnets Ropsten, Koeva, Rinkeby, Goerli) ή ακόμα και το Binance Smart Network (αφού αυτό είναι 1:1 clone του Ethereum).

Συστήνουμε: Local Ethereum instance ή Ropsten testnet. Το σύστημα Bluechain Identity ΔΕΝ έχει βελτιστοποιηθεί ως προς την οικονομική του λειτουργία ώστε να μπορούμε να προτείνουμε την χρήση σε mainnet.

Έχοντας λοιπόν το .AppImage του Ganache κατεβασμένο:

$ chmod +x ganache-2.5.4-linux-x86_64.AppImage

Έπειτα εκκινήστε το Ganache απλά με:

$ ./ganache-2.5.4-linux-x86_64.AppImage

Το ξεκίνημα του Ganache πριν από οποιαδήποτε χρήση του Bluechain SSI είναι απαραίτητο, εκτός αν διαδράτε με το σύστημα τελείως εξωτερικά, μέσω του ίδιου του Ethereum blockchain και των RPC APIs του. Μπορείτε επίσης να ρυθμίσετε το truffle να κοιτάει απευθείας πάνω στο blockchain, μέσω του truffle-config.js που περιλαμβάνεται στο πακέτο του κώδικα!

Δημιουργήστε ένα νέο blockchain workspace τύπου Ethereum μέσω του δεξιού βέλους (το Bluechain SSI δεν είναι ακόμη συμβατό με R3 Corda, κατά την τωρινή του υλοποίηση (v0.2):

2. Έναρξη και χρήση Bluechain SSI μέσω Truffle

To Truffle αποτελεί το development environment του Bluechain SSI. Παρέχει συγκεντρωτικά: compiler, debugger, logging console και εύκολα/γρήγορα configs, όλα μαζί. Επίσης παρέχει ένα βασικό virtual blockchain πάνω στο οποίο μπορούμε να τρέξουμε tests και migrations (deployments, αλλά το truffle επιλέγει να τα ονομάζει έτσι). ΔΕΝ χρησιμοποιούμε το virtual development blockchain που εμπεριέχει το truffle, αφού έχουμε το Ganache το οποίο προσφέρει ένα καλύτερο και ρεαλιστικότερο περιβάλλον μετρήσεων και performance testing.

Αρχικά, πρέπει να σιγουρέψουμε ότι το Truffle κοιτάει προς το Ganache local blockchain μας. Σε ενεργό Ganache, για να δούμε από που "ακούει" ο server: ⚙️ Config → SERVER tab, και βλέπουμε το configuration.

Έπειτα, στο home directory του κατεβασμένου (cloned) Bluechain SSI, σετάρουμε το truffle-config.js:

truffle-config.js
module.exports = {
  
  /* 
  * Εφιστούμε την προσοχή μας εδώ!
  */
  networks: {
    development: {
      host: "127.0.0.1",     // Localhost (default: none)
      port: 7545,            // Standard Ethereum port (default: none)
      network_id: "5777",       // Any network (default: none)
    },
  },

  mocha: {
  },

  compilers: {
    solc: {
      version: "0.8.2",    // Fetch exact version from solc-bin (default: truffle's version)
    }
  }
}

Όλο αυτό αποτελεί ένα πολύ bare bones setup, αλλά μας είναι αρκετό προς το παρόν.

Στη συνέχεια, πάλι στο home directory του project και με ανοικτό το Ganache, τρέχουμε:

$ truffle compile --all
$ truffle migrate --reset

Όλα έτοιμα! Αν όλα πήγαν καλά, το Truffle έκανε deploy το Smart Contract σύστημα του Bluechain SSI, και είναι έτοιμο προς χρήση: Να δεχθεί requests, να δεχθεί διαβατήρια και έγγραφα χρηστών, να επαληθεύσει την εγκυρότητα υπαρχόντων εγγράφων και Ισχυρισμών (Claims).

$ truffle compile --all

Compiling your contracts...
===========================
> Compiling ./contracts/Migrations.sol
> Compiling ./contracts/PassportManager.sol
> Artifacts written to /home/dimitris/Documents/Code/Bluechain_SSI_Truffle/bluechain_ssi/build/contracts
> Compiled successfully using:
   - solc: 0.8.2+commit.661d1103.Emscripten.clang

$ truffle migrate --reset

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.



Starting migrations...
======================
> Network name:    'development'
> Network id:      5777
> Block gas limit: 6721975 (0x6691b7)


1_initial_migration.js
======================

   Replacing 'Migrations'
   ----------------------
   > transaction hash:    0x4c95c2ef66121f10b67aed6429f8124527f6cba7fa99a321c7f00a6f5da0f605
   > Blocks: 0            Seconds: 0
   > contract address:    0x4dEcd29fc37dd3124b30f7412e9a16B910cfd79f
   > block number:        995
   > block timestamp:     1620854844
   > account:             0x4c8C46E0269C7882A2427eF282a426eBb9716767
   > balance:             95.11712696
   > gas used:            246904 (0x3c478)
   > gas price:           20 gwei
   > value sent:          0 ETH
   > total cost:          0.00493808 ETH


   > Saving migration to chain.
   > Saving artifacts
   -------------------------------------
   > Total cost:          0.00493808 ETH


2_deploy_contracts.js
=====================

   Replacing 'PassportManager'
   ---------------------------
   > transaction hash:    0x48f73ad6d3ea9537dcdaaaeeaa6aec4d17b068056340bf75c5009ba5d4838a92
   > Blocks: 0            Seconds: 0
   > contract address:    0xCcd04bB0b4beb0A544311c6ce1cE324Ff6c049EE
   > block number:        997
   > block timestamp:     1620854845
   > account:             0x4c8C46E0269C7882A2427eF282a426eBb9716767
   > balance:             95.09212666
   > gas used:            1207502 (0x126cce)
   > gas price:           20 gwei
   > value sent:          0 ETH
   > total cost:          0.02415004 ETH

PassportManager contract deployed at address: 0xCcd04bB0b4beb0A544311c6ce1cE324Ff6c049EE

   > Saving migration to chain.
   > Saving artifacts
   -------------------------------------
   > Total cost:          0.02415004 ETH


Summary
=======
> Total deployments:   2
> Final cost:          0.02908812 ETH


Δώστε ιδιαίτερη σημασία στο logging του Truffle, ιδιαίτερα στο δικό μας custom πεδίο: PassportManager contract deployed at address: ... — είναι η διεύθυνση στην οποία κατοικεί το Smart Contract μας, και μέσω της οποίας θα διαδρούμε με το σύστημα του Bluechain SSI.

Παρατηρήστε επίσης ότι ένα μικροποσό Ethereum αφαιρέθηκε από ένα από τα πορτοφόλια-διευθύνσεις σας (wallet addresses) στο Ganache. Αυτό αποτυπώνει το deployment cost του συστήματος, και παραμένει ακριβώς το ίδιο και στα live Ethereum chains.

Last updated