Sealos がブロックチェーンと出会うとき

Sealos がブロックチェーンと出会うとき

ブロックチェーン技術の利用は、必ずしもコインの発行を意味するものではなく、統一決済システムやポイントシステムなど、企業の財務インフラや決済センターとして利用できるビジネスシステムも多くあります。チェーン テクノロジーを使用すると、次のような多くの利点があります。

  • 高可用性、組み込みのマルチリージョン高一貫性機能、組み込みの高可用性機能、および検証機能。
  • 安全であり、ハッカーやユーザーによるファンドアカウントの改ざんを大幅に防止し、完全な非対称暗号化機能を備えています。
  • 成熟した支払いおよび送金機能を備えており、いくつかの単純なインターフェイスを呼び出すだけで金額の変換を完了できます。
  • 高い堅牢性により、新しいリージョンごとにマイナー ノードをローカルで実行でき、ローカル ノードは他のノードとの p2p 通信を確立します。
  • 複数のデータセンターのデータは強い一貫性を持っており、ネットワークの問題によるデータの分割は発生しません。
  • スマート コントラクトは、より多くのビジネスの可能性を探ることができ、優れた拡張性を備えています。

たとえば、これはブロックチェーン技術に基づく統合決済システムのアーキテクチャ図であり、主にブロックチェーンを使用してデータ インフラストラクチャを作成します。

この記事では主に、そのようなソリューションを構築する方法の実装の詳細について説明します。主なコア テクノロジは次のとおりです。

  • 基板フレームワークは、ブロックチェーンの最下層である polkadot-sdk に統合されました。
  • sealos は、コンテナ化された方法でブロックチェーンを開始するために使用されます。
  • laf は、ユーザー アカウントの作成、転送、その他の操作を実装するコードを記述するために使用されます。

ブロックチェーンを開始する

打开 https://cloud.sealos.io 应用管理

画像

画像

コマンドラインパラメータの詳細:

["--name","sealchain","--chain","/etc/customSpec.json","--rpc-external","--rpc-cors","all"]

ここの構成ファイルは少し不快です。テストを開始するときに追加することはできません。--chain /etc/customSpec.json パラメータを削除するだけです。

この構成は次のコマンドで生成されます。

$ substrate build-spec > myCustomSpec.json

この構成には、非常に不快で非常に長いシステム コードがあります。これは wasm コードにコンパイルされ、削除できません。したがって、この構成は最初に生成することしかできず、その後、構成ファイルを変更できます。基板のこのアプローチに同意すると、構成の編集が必要になりますが、文書化にかかるコストは非常に高くなります。

接続性をテストする

入力https://laf.dev/ アプリケーションを起動して関数を作成します。これについては教える必要はありません。あなたの IQ と LAF を活用してください。使いやすさは間違いなくわかります。もちろん、時間が貴重でない場合は、自分で node.js 環境を構築することもできます。私が構築する環境は、あなたが死ぬほど嫌になることを保証します。

画像

ログが正常に出力されていれば、チェーンは正常に動作していることになります。

import cloud from '@lafjs/cloud'
const { ApiPromise, WsProvider } = require('@polkadot/api');

export default async function (ctx: FunctionContext) {
  const provider = new WsProvider('wss://mlnqtutcpqcy.cloud.sealos.io');
  const api = await ApiPromise.create({ provider });

  const chain = await api.rpc.system.chain();
  const lastHeader = await api.rpc.chain.getHeader();

  console.log(`Connected to chain ${chain} and block number ${lastHeader.number}`);
}

アカウントの作成 (キーリング)

import cloud from '@lafjs/cloud'
import { Keyring } from '@polkadot/keyring';
import { mnemonicGenerate } from '@polkadot/util-crypto';

export default async function (ctx: FunctionContext) {
  // 生成一个新的 12 个单词的助记词
  const mnemonic: string = mnemonicGenerate(12);
  console.log(`Mnemonic: ${mnemonic}`);

  // 创建一个新的 keyring
  const keyring = new Keyring({ type: 'sr25519' });

  // 从助记词创建一个新的账户
  const pair = keyring.addFromMnemonic(mnemonic);
  console.log(`Address: ${pair.address}`);
}

ここでチェーンに接続する必要はありません。基本的に、ユーザーのアカウントが公開キーであり、公開キーと秘密キーは通常覚えにくく、0 と o、1 と大文字の区別を誤解しやすいです。 l, つまり、人々はそれを理解するのに非常に賢いのです。ニーモニックフレーズを使用すると、12 の一般的な単語に基づいてキーペアが生成されます。これで、簡単に覚えることができます。つまり、あなたのニーモニックフレーズがあなたにとってすべてです。他人に教えないでください。これと同様のことを知っています:

unhappy enforce oil ridge zebra pupil razor worth polar inform enter bomb

アドレスは次のようになります。

5HjoX44CVrqTpVLqYtiF2cFSmDwtbNUfrbKcEbKDyLnP8NCv

次に、スーパーアカウントからこのアカウントに送金し、このアカウントの資金を確認します。

移行

便宜上、API を少しカプセル化してみましょう

import { ApiPromise, WsProvider, Keyring } from '@polkadot/api'
// 连接到你的Polkadot节点
const provider = new WsProvider('wss://mlnqtutcpqcy.cloud.sealos.io');
let api = null

export async function getAPI() {
  if(!api) {
    api = await ApiPromise.create({ provider });
  }

  return api
}

スーパーアカウントから送金する

import cloud from '@lafjs/cloud'
import { ApiPromise, Keyring } from '@polkadot/api'
import { getAPI } from '@/api'

export default async function (ctx: FunctionContext) {

  const api = await getAPI()

  // 创建一个新的Keyring实例,并添加Alice账户
  const keyring = new Keyring({ type: 'sr25519' });
  // 超级账户的私钥
  const alicePair = keyring.addFromUri('slender alter hybrid catalog feature video pumpkin random sniff advice spoil apple');  // Alice的助记词

  // 你的接收者地址和转账金额
  const recipientAddress = '5HjoX44CVrqTpVLqYtiF2cFSmDwtbNUfrbKcEbKDyLnP8NCv';  // 替换为你的接收者地址
  const amount = 1024000000000;  // 替换为你要转账的金额

  // 查询Alice账户的余额
  const { data: balance } = await api.query.system.account(alicePair.address);

  console.log(`Alice's balance is ${balance.free}`);

  // 创建并发送转账交易
  const transfer = api.tx.balances.transferAllowDeath(recipientAddress, amount);
  const hash = await transfer.signAndSend(alicePair, { nonce: 6});

  console.log(`Transfer sent with hash ${hash.toHex()}`);
}

次に、口座にお金が入金されたかどうかを確認します。

import cloud from '@lafjs/cloud'
import { ApiPromise, Keyring } from '@polkadot/api'
import { getAPI } from '@/api'

export default async function (ctx: FunctionContext) {
  const api = await getAPI()

  // 查询Alice账户的余额
  const { data: balance } = await api.query.system.account('5HjoX44CVrqTpVLqYtiF2cFSmDwtbNUfrbKcEbKDyLnP8NCv');

  console.log(`Alice's balance is ${balance.free}`);
}

この時点で、sealos でブロックチェーンを開始し、laf を使用して基本的な開発とチェーン インタラクションを実行する方法を学習しました。将来的にミシンが幸せになることを願っています。ここではさらに高度なものを紹介します。

チェーンスーパー管理者の設定

スーパー管理者の資金は、基板のジェネシス (ジェネシス ブロックの構成ファイル) から取得されます。

{
  "name": "Sealchain",
  "id": "sealos_net",
  "chainType": "Live",
  "bootNodes": [
    ],
  "telemetryEndpoints": null,
  "protocolId": null,
  "properties": null,
  "codeSubstitutes": {},
  "genesis": {
    "runtime": {
      "system": {
        "code": 275debf565db8f5318502....980e6412a472c0af5e652d25fa9838a78d0a8449688794d7749638feb6b93e0191ac90b07516"
      },
      "aura": {
        "authorities": [
          "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
          "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty"
        ]
      },
      "grandpa": {
        "authorities": [
          [
            "5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu",
            1
          ],
          [
            "5GoNkf6WdbxCFnPdAnYYQyCjAKPJgLNxXwPjwTh6DGg6gN3E",
            1
          ]
        ]
      },
      "balances": {
        "balances": [
          [
            "5Gh3LUk21PtfZMTnQRZDqGDVwD2mozQdwHyKRj6PW6n9r65C",
            1152921504606846976
          ],

          [
            "5CRmqmsiNFExV6VbdmPJViVxrWmkaXXvBrSX8oqBT8R9vmWk",
            1152921504606846976
          ]
        ]
      },
      "transactionPayment": {
        "multiplier": "1000000000000000000"
      },
      "sudo": {
        "key": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"
      }
    }
  }
}

内部の runtime.system.code フィールドはコンパイルされた wasm であるため、このファイルをコピーして貼り付けることはできません。そのため、コマンドを使用してこのファイルを生成し、このファイルに基づいて変更する必要があります。

次に、残高フィールドを使用して初期アドレスの資金を構成できます。このアドレスは上記のコードで生成できます。インターネットに接続せずに秘密キーを自分で保持できます。設定は非常に簡単です。皆さんの経済的自由をお祈りします。

画像

次に、sealos に新しい構成を追加し、コマンド ラインで構成ファイルを指定します。

独自のコンテナイメージのチェーンを構築する

Rustをコンパイルする環境がある

https://docs.substrate.io/tutorials/build-a-blockchain/build-local-blockchain/
git clone https://github.com/substrate-developer-hub/substrate-node-template
cargo build --release
FROM ubuntu:23.10
RUN apt update && apt install --assume-yes git clang curl libssl-dev protobuf-compiler && rm -rf /var/lib/apt/lists/*
COPY ./target/release/node-template .
CMD ./node-template --dev

[注意喚起: レンガを動かすのは危険なので、走るときは気をつけてください。ミシンを踏むと、愛する人が泣き崩れてしまいます。] sealos はクラウドで運用されています。 kubernetes を核としたシステム分散により、クラウドネイティブがシンプルで人気

laf コードを書くのはブログを書くのと同じくらい簡単です。Docker や Kubernetes については気にしません。ビジネスを書くことだけを考えています。

おすすめ

転載: blog.csdn.net/github_35614077/article/details/134919804