柯惠心 发表于 2025-9-26 06:22:50

【GitHub每日速递 250926】12 周 24 课,边学边练!微软 AI 初学者的通关秘籍


原文: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}"
ACCOUNT1="${INFO1}"
CHAIN2="${INFO2}"
ACCOUNT2="${INFO2}"

# 显示钱包跟踪的不同链
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"

[*]集成应用内协同代理与 LangGraph
// 无头 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)] }),
});
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 【GitHub每日速递 250926】12 周 24 课,边学边练!微软 AI 初学者的通关秘籍