פרטי הקורס
פרק 1: מבוא למטבעות קריפטוגרפיים ובלוקצ'יין
0/1
פרק 2: תכנון המטבע הקריפטוגרפי שלך
0/1
פרק 3: הגדרת סביבת הפיתוח שלך
0/1
פרק 4: בניית ליבת הבלוקצ'יין
0/1
פרק 5: פיתוח חוזים חכמים
0/1
פרק 6: הקמת נוד מלא
0/1
פרק 7: בניית סייר בלוקים
0/1
פרק 8: פיתוח ארנק
0/1
פרק 9: ולידטורים וסטייקינג
0/1
פרק 10: הגדרת עמלות עסקה
0/1
פרק 11: אבטחה ונהלים מומלצים
0/1
פרק 12: השקת המטבע הקריפטוגרפי שלך
0/1
פרק 13: פיתוח מתמשך ושדרוגים
0/1
קורס: בניית מטבע קריפטוגרפי מבוסס PoS כמו את'ריום
פרטי השיעור

פרק 3: הגדרת סביבת הפיתוח שלך

מבוא

בפרק זה נלמד כיצד להגדיר את סביבת הפיתוח שלך כדי שתוכל להתחיל לפתח את המטבע הקריפטוגרפי שלך ואת החוזים החכמים שלך. נתקין את התוכנות והכלים הנדרשים, נבחר שפת תכנות ונבצע את ההגדרות הראשוניות.

שלב 1: התקנת תוכנות וכלים

נדרשות מספר תוכנות וכלים לצורך פיתוח בלוקצ'יין וחוזים חכמים. נתקין את Node.js, Python, Git ו-Docker.

התקנת Node.js

Node.js הוא סביבת ריצה ל-JavaScript המאפשרת לך להריץ קוד JavaScript בצד השרת.

  1. פתח את הטרמינל שלך.
  2. התקן את Node.js באמצעות הפקודות הבאות:

sudo apt update

sudo apt install nodejs

sudo apt install npm

התקנת Python

Python היא שפת תכנות רב-שימושית הנדרשת לכלים רבים הקשורים לבלוקצ'יין.

  1. פתח את הטרמינל שלך.
  2. התקן את Python באמצעות הפקודות הבאות:

sudo apt update

sudo apt install python3

sudo apt install python3-pip

התקנת Git

Git הוא מערכת ניהול גרסאות מבוזרת המאפשרת לך לעקוב אחרי שינויים בקוד שלך.

  1. פתח את הטרמינל שלך.
  2. התקן את Git באמצעות הפקודה הבאה:

sudo apt update

sudo apt install git

התקנת Docker

Docker הוא פלטפורמה להרצת קונטיינרים המאפשרת לך להריץ יישומים בסביבות מבודדות.

  1. פתח את הטרמינל שלך.
  2. התקן את Docker באמצעות הפקודות הבאות:

sudo apt update

sudo apt install docker.io

sudo systemctl start docker

sudo systemctl enable docker

שלב 2: בחירת שפת תכנות

נבחר שפת תכנות לפיתוח החוזים החכמים וליבת הבלוקצ'יין שלנו.

Solidity לחוזים חכמים

Solidity היא השפה הנפוצה ביותר לפיתוח חוזים חכמים על גבי את'ריום. נלמד כיצד להגדיר סביבת פיתוח ל-Solidity.

  1. התקן את Truffle, מסגרת עבודה ל-Solidity, באמצעות הפקודה הבאה:

התקן את Ganache, רשת בלוקצ'יין מקומית לבדיקת חוזים חכמים:

npm install -g ganache-cli

צור פרויקט Truffle חדש:

mkdir my-smart-contract
cd my-smart-contract
truffle init

Go או Rust לפיתוח ליבת הבלוקצ'יין

Go ו-Rust הן שפות תכנות חזקות המתאימות לפיתוח ליבת הבלוקצ'יין. נבחר ב-Go לדוגמה זו.

  1. התקן את Go באמצעות הפקודות הבאות:

sudo apt update
sudo apt install golang

צור פרויקט Go חדש:

mkdir my-blockchain
cd my-blockchain
go mod init my-blockchain

שלב 3: הגדרת פרויקט Solidity

יצירת חוזה חכם ב-Solidity

ניצור חוזה חכם פשוט לאחסון ושליפת נתונים.

  1. בתוך תיקיית הפרויקט my-smart-contract, ניצור קובץ חדש בשם SimpleStorage.sol בתיקיית contracts:

// contracts/SimpleStorage.sol
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 storedData;

    function set(uint256 x) public {
        storedData = x;
    }

    function get() public view returns (uint256) {
        return storedData;
    }
}

נעדכן את קובץ ה-Migration כדי לפרוס את החוזה:

// migrations/2_deploy_contracts.js
const SimpleStorage = artifacts.require("SimpleStorage");

module.exports = function(deployer) {
  deployer.deploy(SimpleStorage);
};

 

נריץ את Ganache כדי להקים רשת בלוקצ'יין מקומית:

 

נפרוס את החוזה החכם על הרשת המקומית:

בדיקת החוזה החכם

נכתוב מבחנים לחוזה החכם כדי לוודא שהוא פועל כראוי.

  1. צור קובץ חדש בשם testSimpleStorage.js בתיקיית test:

// test/testSimpleStorage.js
const SimpleStorage = artifacts.require("SimpleStorage");

contract('SimpleStorage', (accounts) => {
  it('should store the value 89.', async () => {
    const simpleStorageInstance = await SimpleStorage.deployed();

    // Set value of 89
    await simpleStorageInstance.set(89, { from: accounts[0] });

    // Get stored value
    const storedData = await simpleStorageInstance.get.call();

    assert.equal(storedData, 89, "The value 89 was not stored.");
  });
});

נריץ את המבחנים:

שלב 4: הגדרת פרויקט Go

יצירת פרויקט בלוקצ'יין בסיסי ב-Go

ניצור תוכנית Go פשוטה שמדפיסה הודעה.

צור קובץ בשם main.go בתיקיית הפרויקט:

// main.go
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello, Blockchain!")
}

 

נריץ את התוכנית:

שלב 5: שימוש ב-Docker לניהול סביבות פיתוח

נשתמש ב-Docker כדי ליצור סביבות מבודדות לפרויקטים שלנו.

  1. צור קובץ Dockerfile לפרויקט Go:

# Dockerfile
FROM golang:1.16

WORKDIR /app

COPY . .

RUN go build -o main .

CMD ["./main"]

יצירת תמונת Docker לפרויקט Go

  1. צור תמונת Docker לפרויקט שלך באמצעות הפקודות הבאות:

docker build -t my-blockchain .

הרץ את המיכל:

docker run -it --rm my-blockchain

שימוש ב-Docker Compose לפרויקטים מורכבים

Docker Compose מאפשר לך להגדיר ולהריץ יישומים המורכבים ממספר מיכלים (Containers).

  1. צור קובץ docker-compose.yml בתיקיית הפרויקט שלך:

version: '3'
services:
  blockchain:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - .:/app
    command: ["./main"]

הרץ את הפרויקט עם Docker Compose:

שלב 6: ניהול תלותים וניהול גרסאות

ניהול תלותים ב-Go עם go mod

כדי לנהל תלותים בצורה נכונה בפרויקט Go שלך, נשתמש ב-Go Modules.

  1. אתחל את מודול ה-Go בפרויקט שלך:

הוסף תלותים לקובץ go.mod:

module my-blockchain

go 1.16

require (
    github.com/gorilla/mux v1.8.0
    github.com/sirupsen/logrus v1.8.1
)

 

התקן את התלותים:

שלב 7: תיעוד קוד ושיטות עבודה מומלצות

תיעוד קוד עם הערות

כדי להבטיח שהקוד שלך קריא ומובן לאחרים (ולעצמך בעתיד), חשוב להוסיף הערות והסברים לקוד.

  1. דוגמה לתיעוד קוד ב-Go:

    // Package main provides a simple blockchain application.
    package main
    
    import (
        "fmt"
        "net/http"
        "github.com/gorilla/mux"
    )
    
    // main is the entry point for the application.
    func main() {
        // Initialize the router
        router := mux.NewRouter()
    
        // Define a simple route
        router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
            fmt.Fprintln(w, "Hello, Blockchain!")
        }).Methods("GET")
    
        // Start the server
        http.ListenAndServe(":8080", router)
    }
    

    שימוש בשיטות עבודה מומלצות

    שימוש בשיטות עבודה מומלצות מסייע בהבטחת איכות הקוד ותחזוקתו.

    1. ניהול גרסאות:

      • השתמש ב-Git לניהול גרסאות.
      • צור סניפים (Branches) עבור תכונות חדשות ותיקוני באגים.
      • בצע מיזוג (Merge) של שינויים לאחר בדיקה ואישור.
    2. כתיבת מבחנים:

      • כתוב מבחנים יחידתיים (Unit Tests) כדי לבדוק את הפונקציות בקוד שלך.
      • השתמש בכלי בדיקות כמו go test לבדיקת קוד Go.

      דוגמה למבחן יחידתי ב-Go:

    // main_test.go
    package main
    
    import (
        "testing"
    )
    
    func TestMain(t *testing.T) {
        result := "Hello, Blockchain!"
        expected := "Hello, Blockchain!"
    
        if result != expected {
            t.Errorf("Expected %s but got %s", expected, result)
        }
    }
    

    בדיקות אוטומטיות ושילוב מתמשך (CI):

    • השתמש בכלים כמו GitHub Actions, Travis CI או Jenkins לביצוע בדיקות אוטומטיות ושילוב מתמשך.
    • הגדר בדיקות אוטומטיות שירוצו בכל פעם שמתבצע שינוי בקוד.

    דוגמה להגדרת GitHub Actions:

    # .github/workflows/go.yml
    name: Go
    
    on:
      push:
        branches: [ main ]
      pull_request:
        branches: [ main ]
    
    jobs:
      build:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v2
        - name: Set up Go
          uses: actions/setup-go@v2
          with:
            go-version: 1.16
        - name: Build
          run: go build -v ./...
        - name: Test
          run: go test -v ./...
    

    סיכום

    בפרק זה למדנו כיצד להגדיר את סביבת הפיתוח שלך לפיתוח בלוקצ'יין וחוזים חכמים. התקנו את התוכנות והכלים הנדרשים, בחרנו שפת תכנות, יצרנו פרויקט Solidity ופיתחנו פרויקט Go בסיסי. בנוסף, למדנו על ניהול תלותים, תיעוד קוד ושיטות עבודה מומלצות לניהול גרסאות ובדיקות אוטומטיות.

צפיות מבקרים: 15