Läs på engelska

Dela via


Skapa, testa och distribuera ett TypeScript- och JavaScript-program

Den här guiden visar stegen för att utveckla ett TypeScript- och JavaScript-program som riktar sig till CCF, felsöka det lokalt och distribuera det till en hanterad CCF-resurs i molnet.

Förutsättningar

Den här guiden använder Visual Studio Code som IDE. Men alla IDE med stöd för Node.js, JavaScript och TypeScript-programutveckling kan användas.

Projektuppsättning

  1. Följ anvisningarna i CCF-dokumentationen för att starta projektet och konfigurera den mappstruktur som krävs.

Utveckla programmet

  1. Utveckla TypeScript-programmet genom att följa dokumentationen här. Mer information om namngivningsstandarder och transaktionssemantik som ska användas i koden finns i dokumentationen för CCF Key-Value Store . Exempel och metodtips finns i exempelprogrammen som publicerats i GitHub.

Skapa programpaketet

  1. Det interna formatet för JavaScript-program i CCF är ett JavaScript-programpaket eller ett kort apppaket. Ett paket kan omslutas direkt i ett styrningsförslag för distribution. Följ anvisningarna i skapa ett programpaket i CCF-dokumentationen för att skapa ett apppaket och förbereda för distribution.

  2. Skapa programmet. Programpaketet skapas i mappen dist. Programpaketet placeras i en fil med namnet set_js_app.json.

npm run build

> build
> del-cli -f dist/ && rollup --config && cp app.json dist/ && node build_bundle.js dist/


src/endpoints/all.ts → dist/src...
created dist/src in 1.3s
Writing bundle containing 8 modules to dist/bundle.json
ls -ltr dist
total 40
drwxr-xr-x 4 settiy settiy  4096 Sep 11 10:20 src
-rw-r--r-- 1 settiy settiy  3393 Sep 11 10:20 app.json
-rw-r--r-- 1 settiy settiy 16146 Sep 11 10:20 set_js_app.json
-rw-r--r-- 1 settiy settiy 16061 Sep 11 10:20 bundle.json

Loggning

  1. CCF tillhandahåller makron för att lägga till egna rader i nodens utdata. Följ anvisningarna som är tillgängliga när du lägger till loggning i ett program i CCF-dokumentationen.

Distribuera ett 1-nods CCF-nätverk

  1. Kör skriptet /opt/ccf_virtual/bin/sandbox.sh för att starta ett 1-nods CCF-nätverk och distribuera programpaketet.
sudo /opt/ccf_virtual/bin/sandbox.sh --js-app-bundle ~/ccf-app-samples/banking-app/dist/
Setting up Python environment...
Python environment successfully setup
[10:40:37.516] Virtual mode enabled
[10:40:37.517] Starting 1 CCF node...
[10:40:41.488] Started CCF network with the following nodes:
[10:40:41.488]   Node [0] = https://127.0.0.1:8000
[10:40:41.489] You can now issue business transactions to the libjs_generic application
[10:40:41.489] Loaded JS application: /home/demouser/ccf-app-samples/banking-app/dist/
[10:40:41.489] Keys and certificates have been copied to the common folder: /home/demouser/ccf-app-samples/banking-app/workspace/sandbox_common
[10:40:41.489] See https://microsoft.github.io/CCF/main/use_apps/issue_commands.html for more information
[10:40:41.490] Press Ctrl+C to shutdown the network
  1. Medlemscertifikatet och den privata nyckeln finns på /workspace/sandbox_0. Programloggen är tillgänglig på /workspace/sandbox_0/out.

A picture showing the out file where the CCF node and application logs are written to.

  1. Nu har vi skapat ett lokalt CCF-nätverk med en medlem och distribuerat programmet. Nätverksslutpunkten är https://127.0.0.1:8000. Medlemmen kan delta i styrningsåtgärder som att uppdatera programmet eller lägga till fler medlemmar genom att skicka ett förslag.
curl -k --silent https://127.0.0.1:8000/node/version | jq
{
  "ccf_version": "ccf-4.0.7",
  "quickjs_version": "2021-03-27",
  "unsafe": false
}
  1. Ladda ned tjänstcertifikatet från nätverket.
curl -k https://127.0.0.1:8000/node/network | jq -r .service_certificate > service_certificate.pem

Uppdatera programmet

  1. Programutveckling är en iterativ process. När nya funktioner läggs till eller buggar har åtgärdats måste programmet distribueras om till 1-nodnätverket, vilket kan göras med ett set_js_app förslag.

  2. Återskapa programmet för att skapa en ny set_js_app.json-fil i dist-mappen.

  3. Skapa ett förslag för att skicka programmet. När förslaget har godkänts distribueras det nya programmet till nätverket med 1 noder.

Anteckning

I ett lokalt 1-nodnätverk godkänns ett förslag omedelbart efter att det har skickats. Det finns inget behov av att skicka in en omröstning för att godkänna eller avvisa förslaget. Grunden bakom det görs för att göra utvecklingsprocessen snabb. Detta skiljer sig dock från hur styrningen fungerar i Azure Managed CCF där medlemmar måste skicka in en röst för att godkänna eller avvisa ett förslag.

$ ccf_cose_sign1 --content dist/set_js_app.json --signing-cert workspace/sandbox_common/member0_cert.pem --signing-key workspace/sandbox_common/member0_privk.pem --ccf-gov-msg-type proposal --ccf-gov-msg-created_at `date -Is` | curl https://127.0.0.1:8000/gov/proposals -H 'Content-Type: application/cose' --data-binary @- --cacert service_cert.pem

Distribuera programmet till en hanterad CCF-resurs

Nästa steg är att skapa en hanterad CCF-resurs och distribuera programmet genom att följa anvisningarna i distribuera ett JavaScript-program.

Nästa steg