פרק 3: הגדרת סביבת הפיתוח שלך
מבוא
בפרק זה נלמד כיצד להגדיר את סביבת הפיתוח שלך כדי שתוכל להתחיל לפתח את המטבע הקריפטוגרפי שלך ואת החוזים החכמים שלך. נתקין את התוכנות והכלים הנדרשים, נבחר שפת תכנות ונבצע את ההגדרות הראשוניות.
שלב 1: התקנת תוכנות וכלים
נדרשות מספר תוכנות וכלים לצורך פיתוח בלוקצ'יין וחוזים חכמים. נתקין את Node.js, Python, Git ו-Docker.
התקנת Node.js
Node.js הוא סביבת ריצה ל-JavaScript המאפשרת לך להריץ קוד JavaScript בצד השרת.
- פתח את הטרמינל שלך.
- התקן את Node.js באמצעות הפקודות הבאות:
sudo apt update
sudo apt install nodejs
sudo apt install npm
התקנת Python
Python היא שפת תכנות רב-שימושית הנדרשת לכלים רבים הקשורים לבלוקצ'יין.
- פתח את הטרמינל שלך.
- התקן את Python באמצעות הפקודות הבאות:
sudo apt update
sudo apt install python3
sudo apt install python3-pip
התקנת Git
Git הוא מערכת ניהול גרסאות מבוזרת המאפשרת לך לעקוב אחרי שינויים בקוד שלך.
- פתח את הטרמינל שלך.
- התקן את Git באמצעות הפקודה הבאה:
sudo apt update
sudo apt install git
התקנת Docker
Docker הוא פלטפורמה להרצת קונטיינרים המאפשרת לך להריץ יישומים בסביבות מבודדות.
- פתח את הטרמינל שלך.
- התקן את Docker באמצעות הפקודות הבאות:
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
שלב 2: בחירת שפת תכנות
נבחר שפת תכנות לפיתוח החוזים החכמים וליבת הבלוקצ'יין שלנו.
Solidity לחוזים חכמים
Solidity היא השפה הנפוצה ביותר לפיתוח חוזים חכמים על גבי את'ריום. נלמד כיצד להגדיר סביבת פיתוח ל-Solidity.
-
התקן את Truffle, מסגרת עבודה ל-Solidity, באמצעות הפקודה הבאה:
npm install -g truffle
התקן את Ganache, רשת בלוקצ'יין מקומית לבדיקת חוזים חכמים:
npm install -g ganache-cli
צור פרויקט Truffle חדש:
mkdir my-smart-contract
cd my-smart-contract
truffle init
Go או Rust לפיתוח ליבת הבלוקצ'יין
Go ו-Rust הן שפות תכנות חזקות המתאימות לפיתוח ליבת הבלוקצ'יין. נבחר ב-Go לדוגמה זו.
-
התקן את Go באמצעות הפקודות הבאות:
sudo apt update
sudo apt install golang
צור פרויקט Go חדש:
mkdir my-blockchain
cd my-blockchain
go mod init my-blockchain
שלב 3: הגדרת פרויקט Solidity
יצירת חוזה חכם ב-Solidity
ניצור חוזה חכם פשוט לאחסון ושליפת נתונים.
-
בתוך תיקיית הפרויקט
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 כדי להקים רשת בלוקצ'יין מקומית:
ganache-cli
נפרוס את החוזה החכם על הרשת המקומית:
truffle migrate
בדיקת החוזה החכם
נכתוב מבחנים לחוזה החכם כדי לוודא שהוא פועל כראוי.
-
צור קובץ חדש בשם
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.");
});
});
נריץ את המבחנים:
truffle test
שלב 4: הגדרת פרויקט Go
יצירת פרויקט בלוקצ'יין בסיסי ב-Go
ניצור תוכנית Go פשוטה שמדפיסה הודעה.
צור קובץ בשם main.go
בתיקיית הפרויקט:
// main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, Blockchain!")
}
נריץ את התוכנית:
go run main.go
שלב 5: שימוש ב-Docker לניהול סביבות פיתוח
נשתמש ב-Docker כדי ליצור סביבות מבודדות לפרויקטים שלנו.
-
צור קובץ Dockerfile לפרויקט Go:
# Dockerfile
FROM golang:1.16
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]
יצירת תמונת Docker לפרויקט Go
-
צור תמונת Docker לפרויקט שלך באמצעות הפקודות הבאות:
docker build -t my-blockchain .
הרץ את המיכל:
docker run -it --rm my-blockchain
שימוש ב-Docker Compose לפרויקטים מורכבים
Docker Compose מאפשר לך להגדיר ולהריץ יישומים המורכבים ממספר מיכלים (Containers).
-
צור קובץ
docker-compose.yml
בתיקיית הפרויקט שלך:
version: '3'
services:
blockchain:
build: .
ports:
- "8080:8080"
volumes:
- .:/app
command: ["./main"]
הרץ את הפרויקט עם Docker Compose:
docker-compose up
שלב 6: ניהול תלותים וניהול גרסאות
ניהול תלותים ב-Go עם go mod
כדי לנהל תלותים בצורה נכונה בפרויקט Go שלך, נשתמש ב-Go Modules.
-
אתחל את מודול ה-Go בפרויקט שלך:
go mod init my-blockchain
הוסף תלותים לקובץ go.mod
:
module my-blockchain
go 1.16
require (
github.com/gorilla/mux v1.8.0
github.com/sirupsen/logrus v1.8.1
)
התקן את התלותים:
go mod tidy
שלב 7: תיעוד קוד ושיטות עבודה מומלצות
תיעוד קוד עם הערות
כדי להבטיח שהקוד שלך קריא ומובן לאחרים (ולעצמך בעתיד), חשוב להוסיף הערות והסברים לקוד.
- דוגמה לתיעוד קוד ב-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) }
שימוש בשיטות עבודה מומלצות
שימוש בשיטות עבודה מומלצות מסייע בהבטחת איכות הקוד ותחזוקתו.
-
ניהול גרסאות:
- השתמש ב-Git לניהול גרסאות.
- צור סניפים (Branches) עבור תכונות חדשות ותיקוני באגים.
- בצע מיזוג (Merge) של שינויים לאחר בדיקה ואישור.
-
כתיבת מבחנים:
- כתוב מבחנים יחידתיים (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 בסיסי. בנוסף, למדנו על ניהול תלותים, תיעוד קוד ושיטות עבודה מומלצות לניהול גרסאות ובדיקות אוטומטיות.
-