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 については気にしません。ビジネスを書くことだけを考えています。