在 Sealos 中使用区块链技术实现统一支付系统
拿着区块链技术不一定是去发币,很多业务系统也适合用这些技术,比如做个统一支付系统,积分系统等,可以做为一家公司的金融基础设施,或支付中台。拿链的技术去做有很多好处:
- 高可用,自带多区域高一致性的能力,自带高可用能力和校验能力。
- 安全,很大程度防范黑客或者用户篡改资金账户的可能性,非对称加密能力完备。
- 有成熟的支付和转账等能力,只需要调用几个简单接口就可以完成金额转化。
- 高鲁棒性,每个新 region 都可以在本地跑一个矿工节点,本地节点负责与其他节点建立 p2p 通信。
- 多数据中心数据强一致性,不会出现因为网络问题导致数据脑裂。
- 智能合约可以探索更多业务可能性,可扩展性好。
比如这就是基于区块链技术实现的一套统一支付系统的架构图,主要是利用区块链打造一个数据基础设施。

本文主要讲如何构建这样一套方案的实现细节,主要核心用的技术有:
启动区块链
首先在 Sealos 桌面环境中打开【应用管理】:


命令行参数详情:
["--name","sealchain","--chain","/etc/customSpec.json","--rpc-external","--rpc-cors","all"]
这里的配置文件略恶心,开始测试时可以先不加,去掉 --chain /etc/customSpec.json 参数就行。
这个配置是通过命令生成的:
$ substrate build-spec > myCustomSpec.json
这个配置里面有一个 system code 非常恶心非常长,它是编译成 wasm 的代码,不能删,所以这个配置只能先生成了再修改配置文件,substrate 的这个做法我实在不太能苟同,导致编辑配置文件的成本非常高。
测试联通性
进 https://laf.dev/ 起一个应用,写一个函数,这个不用教,以你的智商和 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}`);
}
创建账户 (Keyring)
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 进行一些基础开发与链交互,祝大家未来踩缝纫机愉快。下面来点高级的。
链超级管理员配置
超级管理员的钱是从 substrate 的 genesis 也就是创始块的配置文件中得来的:
{
"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,所以一定要用命令生成这个文件,在这个文件基础上去修改才行,我被这个问题坑死。
然后 balances 字段就可以配置初始地址里面的资金,这个地址用上面的代码生成就行,私钥你自己保存好,不用触网。配置起来很简单,祝大家财务自由。

然后在 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 中使用区块链技术实现统一支付系统的更多相关文章
- 区块链技术(一):Truffle开发入门
以太坊是区块链开发领域最好的编程平台,而truffle是以太坊(Ethereum)最受欢迎的一个开发框架,这是我们第一篇区块链技术文章介绍truffle的原因,实战是最重要的事情,这篇文章不讲原理,只 ...
- 如何从零开始学习区块链技术——推荐从以太坊开发DApp开始
很多人迷惑于区块链和以太坊,不知如何学习,本文简单说了一下学习的一些方法和资源. 一. 以太坊和区块链的关系 从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取 ...
- 未来-区块链-IBM:IBM 区块链技术开发社区
ylbtech-未来-区块链-IBM:IBM 区块链技术开发社区 1.返回顶部 1. 开始学习 IBM Blockchain 101:开发人员快速入门指南 这篇快速入门指南适合不熟悉区块链技术,希望快 ...
- AngelToken:区块链技术的突破
科技进步,直接捅破了政治.金融.军事领域所有的玩法,让工业革命以来形成的规则变得一钱不值. 而且,当下的最重要的技术趋势——区块链.Token.AngelToken,正在引导我们走向全面的失控和未知. ...
- 如何用区块链技术解决信任问题?Fabric 架构深度解读
阿里妹导读:区块链技术,随着比特币的兴起而为大家所知.但是具体到技术本身,大家相对熟悉的几个词可能是“数据不可篡改”.“公开链”.“分布式数据”.“共识机制”等. 这篇文章将抛砖引玉,通过深度解读Hy ...
- 二、主流区块链技术特点及Hyperledger Fabric V0.6版本特点
一.主流区块链技术特点 二.HyperLedger子项目 三.Hyperledger fabric架构 V0.6逻辑架构: V0.6区块链网络 对应的0.6版本的运行时架构: 0.6版本的架构特点是: ...
- 一、Bitcoin比特币与BlockChain区块链技术
一.比特币历史 2008 年 10 月 31 日,一个网名叫中本聪(英文翻译过来滴)的家伙发布比特币唯一的白皮书:<Bitcoin:A Peer-to-PeerElectronic Cash S ...
- 给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识
给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识 共识是区块链的核心机制,在一系列的区块链的发展历史当中,PoW/PoS/BFT等系列的共识算法都在各自的应用场景发挥了不同作用.在本体的第 ...
- Token:共识的下一个100年,区块链技术是无可阻挡的文明进程
Token:共识的下一个100年,区块链技术是无可阻挡的文明进程.很少有人意识到,区块链的应用——Token可能是近100年来最伟大的制度创新,超越股份制,并将是『债券』之后最重要最主流的交易品种,没 ...
- FUNMVP:几张图看懂区块链技术到底是什么?(转载)
几张图看懂区块链技术到底是什么? 本文转载自:http://www.cnblogs.com/behindman/p/8873191.html “区块链”的概念可以说是异常火爆,好像互联网金融峰会上没人 ...
随机推荐
- LDAP:如何在windows系统下安装LDAP及连接测试
1.LDAP介绍 LDAP是一个基于X.500标准的轻量目录访问协议,与X.500不同,LDAP协议支持TCP/IP连接.全称为Lightweight Directory Access Protoco ...
- [ABC142E] Get Everything
2023-02-18 题目 题目传送门 翻译 翻译 难度&重要性(1~10):5 题目来源 AtCoder 题目算法 状压dp 解题思路 我们令 \(S\) 表示当前箱子状态,\(P_i\) ...
- cs50ai1
cs50ai1-------Knowledge cs50ai1-------Knowledge 基础知识 课后题目 代码实践 学习链接 总结 基础知识 对我们来说,一些基本的logic是自然而然的,我 ...
- 《小白WEB安全入门》02. 开发篇
@ 目录 初识HTML潜在漏洞 初识CSS潜在漏洞 初识JS潜在漏洞 初识后端潜在漏洞 后端能做什么 后端种类 后端框架 潜在漏洞 本系列文章只叙述一些超级基础理论知识,极少有实践部分 本文涉及到的语 ...
- 震坤行根据ID取商品详情 API
item_get-根据ID取商品详情 注册开通 zhenkunhang.item_get 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) se ...
- 快速理解DDD领域驱动设计架构思想-基础篇
1 前言 本文与大家一起学习并介绍领域驱动设计(Domain Drive Design) 简称DDD,以及为什么我们需要领域驱动设计,它有哪些优缺点,尽量用一些通俗易懂文字来描述讲解领域驱动设计,本篇 ...
- VisionPro学习笔记(3)——BeadInspectTool
如果需要了解其他图像处理的文章,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice ...
- Visual Studio必备插件
1.Rainbow Braces 2.Codist 3.ResXManager 4.XAML Styler for Visual Studio 2022 5.Viasfora 6.ZenCoding ...
- WebApi中添加Jwt鉴权
前言 JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息.一个 JWT 实际上就是一个字符串,它由三部分组成,头部.载荷与签 ...
- 其它——windows提示缺少VCRUNTIME140.dll错误
文章目录 一 原因 二 解决方法一 三 解决方法二 缺少了Microsoft.Net.Framework的安装 一 原因 最新在系统安装一些软件发现提示 这是因为缺少了一下windows运行需要的库 ...