原文:https://mp.weixin.qq.com/s/t99TeeaVhDTuzobY6WkYng
揭秘Linera:高可扩展区块链基础设施,附CLI工具快速上手攻略
linera-protocol 是一个基于Rust构建的高性能、去中心化微服务区块链协议的底层框架。简单讲,它让开发者能用微服务架构轻松搭建区块链应用,提升扩展性和运行效率。适用人群:区块链开发者、去中心化应用开发者、对高性能链上计算感兴趣的技术人员。
项目地址:https://github.com/linera-io/linera-protocol
主要语言:Rust
stars: 29.64k
项目概述
Linera是一个去中心化的区块链基础设施,专为高可扩展性、安全、低延迟的Web3应用程序而设计。
主要优势
- 高可扩展性:能够支持大量的交易和用户,满足Web3应用不断增长的需求。
- 安全性:采用了先进的加密技术和共识机制,保障数据和交易的安全。
- 低延迟:可以实现快速的交易确认和响应,提供流畅的用户体验。
核心功能
- 多链架构:支持微链(microchains),可以实现高效的跨链消息传递和资产转移。
- 智能合约:提供了开发智能合约的SDK,允许开发者使用Rust语言为Wasm虚拟机编写应用程序。
- 钱包管理:通过命令行工具(CLI)可以方便地管理用户钱包、创建链、查询余额和进行转账等操作。
仓库结构
仓库包含多个主要的crates和目录,按照依赖关系从低到高排列:
- linera-base:基础定义,包括密码学相关内容。
- linera-version:用于管理二进制文件和服务中的版本信息。
- linera-views:将复杂数据结构映射到键值存储的库。
- linera-execution:处理Linera应用程序的持久化数据和运行时逻辑。
- linera-chain:负责块链、证书和跨链消息的持久化数据和逻辑。
- linera-storage:在linera-chain之上定义协议的存储抽象。
- linera-core:Linera协议的核心,包括客户端和服务器逻辑、节点同步等。
- linera-rpc:定义RPC消息的数据类型和跟踪相应的数据模式。
- linera-client:用于编写Linera客户端的库。
- linera-service:包含客户端(CLI钱包)、代理(验证器前端)和服务器的可执行文件。
- linera-sdk:用于开发基于Wasm虚拟机的Rust Linera应用程序的库。
- examples:提供了用Rust编写的Linera应用程序示例。
可能的应用场景
- 去中心化金融(DeFi):构建高效、安全的借贷、交易、流动性提供等金融应用。
- 非同质化代币(NFT):支持NFT的创建、交易和管理,实现快速的资产转移和所有权验证。
- 供应链管理:通过区块链的不可篡改特性,实现供应链的透明和可追溯性。
快速开始
可以使用Linera CLI工具快速设置本地测试网络,并进行一些微链之间的转账操作。具体步骤如下:- # 确保编译Linera二进制文件并添加到PATH中
- export PATH="$PWD/target/debug:$PATH"
- # 导入可选的辅助函数
- source /dev/stdin <<<"$(linera net helper 2>/dev/null)"
- # 启动本地测试网络
- linera_spawn \
- linera net up --with-faucet --faucet-port 8080
- # 记录水龙头的URL
- FAUCET_URL=http://localhost:8080
- # 设置钱包和存储路径
- export LINERA_WALLET="$LINERA_TMP_DIR/wallet.json"
- export LINERA_KEYSTORE="$LINERA_TMP_DIR/keystore.json"
- export LINERA_STORAGE="rocksdb:$LINERA_TMP_DIR/client.db"
- # 初始化新的用户钱包
- linera wallet init --faucet $FAUCET_URL
- # 请求链
- INFO1=($(linera wallet request-chain --faucet $FAUCET_URL))
- INFO2=($(linera wallet request-chain --faucet $FAUCET_URL))
- CHAIN1="${INFO1[0]}"
- ACCOUNT1="${INFO1[1]}"
- CHAIN2="${INFO2[0]}"
- ACCOUNT2="${INFO2[1]}"
- # 显示钱包跟踪的不同链
- linera wallet show
- # 查询链余额
- linera query-balance "$CHAIN1"
- linera query-balance "$CHAIN2"
- # 进行转账操作
- linera transfer 10 --from "$CHAIN1" --to "$CHAIN2"
- linera transfer 5 --from "$CHAIN2" --to "$CHAIN1"
- # 再次查询余额
- linera query-balance "$CHAIN1"
- linera query-balance "$CHAIN2"
- # 为用户余额充值
- linera transfer 5 --from "$CHAIN1" --to "$CHAIN1:$ACCOUNT1"
- linera transfer 2 --from "$CHAIN1:$ACCOUNT1" --to "$CHAIN2:$ACCOUNT2"
- # 查询用户余额
- linera query-balance "$CHAIN1:$ACCOUNT1"
- linera query-balance "$CHAIN2:$ACCOUNT2"
复制代码- // 无头 UI 实现完全控制
- const { visibleMessages, appendMessage, setMessages, ... } = useCopilotChat();
- // 预构建组件,拥有深度定制选项
- <CopilotPopup
- instructions={"You are assisting the user as best as you can. Answer in the best way possible given the data you have."}
- labels={{ title: "Popup Assistant", initial: "Need any help?" }}
- />
复制代码- useCopilotAction({
- name: "appendToSpreadsheet",
- description: "Append rows to the current spreadsheet",
- parameters: [
- { name: "rows", type: "object[]", attributes: [{ name: "cells", type: "object[]", attributes: [{ name: "value", type: "string" }] }] }
- ],
- render: ({ status, args }) => <Spreadsheet data={canonicalSpreadsheetData(args.rows)} />,
- handler: ({ rows }) => setSpreadsheet({ ...spreadsheet, rows: [...spreadsheet.rows, ...canonicalSpreadsheetData(rows)] }),
- });
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |