找回密码
 立即注册
首页 业界区 业界 【GitHub每日速递 250926】12 周 24 课,边学边练!微软 ...

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

柯惠心 2025-9-26 06:22:50
1.png

原文: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工具快速设置本地测试网络,并进行一些微链之间的转账操作。具体步骤如下:
  1. # 确保编译Linera二进制文件并添加到PATH中
  2. export PATH="$PWD/target/debug:$PATH"
  3. # 导入可选的辅助函数
  4. source /dev/stdin <<<"$(linera net helper 2>/dev/null)"
  5. # 启动本地测试网络
  6. linera_spawn \
  7. linera net up --with-faucet --faucet-port 8080
  8. # 记录水龙头的URL
  9. FAUCET_URL=http://localhost:8080
  10. # 设置钱包和存储路径
  11. export LINERA_WALLET="$LINERA_TMP_DIR/wallet.json"
  12. export LINERA_KEYSTORE="$LINERA_TMP_DIR/keystore.json"
  13. export LINERA_STORAGE="rocksdb:$LINERA_TMP_DIR/client.db"
  14. # 初始化新的用户钱包
  15. linera wallet init --faucet $FAUCET_URL
  16. # 请求链
  17. INFO1=($(linera wallet request-chain --faucet $FAUCET_URL))
  18. INFO2=($(linera wallet request-chain --faucet $FAUCET_URL))
  19. CHAIN1="${INFO1[0]}"
  20. ACCOUNT1="${INFO1[1]}"
  21. CHAIN2="${INFO2[0]}"
  22. ACCOUNT2="${INFO2[1]}"
  23. # 显示钱包跟踪的不同链
  24. linera wallet show
  25. # 查询链余额
  26. linera query-balance "$CHAIN1"
  27. linera query-balance "$CHAIN2"
  28. # 进行转账操作
  29. linera transfer 10 --from "$CHAIN1" --to "$CHAIN2"
  30. linera transfer 5 --from "$CHAIN2" --to "$CHAIN1"
  31. # 再次查询余额
  32. linera query-balance "$CHAIN1"
  33. linera query-balance "$CHAIN2"
  34. # 为用户余额充值
  35. linera transfer 5 --from "$CHAIN1" --to "$CHAIN1:$ACCOUNT1"
  36. linera transfer 2 --from "$CHAIN1:$ACCOUNT1" --to "$CHAIN2:$ACCOUNT2"
  37. # 查询用户余额
  38. linera query-balance "$CHAIN1:$ACCOUNT1"
  39. linera query-balance "$CHAIN2:$ACCOUNT2"
复制代码

  • 集成应用内协同代理与 LangGraph
  1. // 无头 UI 实现完全控制
  2. const { visibleMessages, appendMessage, setMessages, ... } = useCopilotChat();
  3. // 预构建组件,拥有深度定制选项
  4. <CopilotPopup
  5.   instructions={"You are assisting the user as best as you can. Answer in the best way possible given the data you have."}
  6.   labels={{ title: "Popup Assistant", initial: "Need any help?" }}
  7. />
复制代码

  • 中间代理状态流式传输
  1. useCopilotAction({
  2.   name: "appendToSpreadsheet",
  3.   description: "Append rows to the current spreadsheet",
  4.   parameters: [
  5.     { name: "rows", type: "object[]", attributes: [{ name: "cells", type: "object[]", attributes: [{ name: "value", type: "string" }] }] }
  6.   ],
  7.   render: ({ status, args }) => <Spreadsheet data={canonicalSpreadsheetData(args.rows)} />,
  8.   handler: ({ rows }) => setSpreadsheet({ ...spreadsheet, rows: [...spreadsheet.rows, ...canonicalSpreadsheetData(rows)] }),
  9. });
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册