4_Sui+Move核心概念

Sui Move的 Object基础概念

  • Sui Move 是以Object为核心
  • Sui的交易输入和输出都是 Object
  • Object是Sui的基本存储单元
  • Object即 struct
  • Sui 的 Object 必须包含一个 id: UID字段, 并且设置key特性
  • Sui中每个Object都必须有一个 owner, owner可以是:
    • 一个地址
    • 其他object
    • Object是”shared”

Object的所有权

https://github.com/sui-foundation/sui-move-intro-course/blob/main/unit-two/lessons/2_ownership.md

在Sui Move中,Object一共有4种所有权:

  • Owned: owned object交易不需要全局排序
    • Owned by an address
    • Owned by another object
  • Shared
    • Shared immutable:
      • 没有owner, 所有人都不可修改
    • Shared mutable:
      • 任何人都可以读取和修改, shared object交易需要进行全局排序

3_HelloWorld

基础理论知识

  • Sui以Object(对象)为核心(Object有点类似Bitcoin中的UTXO)

  • Sui标准库发布在0x2下面

  • 发布的模块是不可变Object(immutable object),

    • 不可变Object:
      • 不能被修改+不能被转移+不能被删除
      • 任何人都可以使用
  • 结构体的特性(abilities)

    • copy: value can be copied (or cloned by value)
    • drop: value can be dropped by the end of the scope
    • key: value can be used as a key for global storage operations
    • store: value can be held inside a struct in global storage
  • 函数可见性:

    • private: the default visibility of a function; it can only be accessed by functions inside the same module
    • public: the function is accessible by functions inside the same module and by functions defined in another module
    • public(package): the function is accessible by functions of modules inside the same package

HelloWorld

  • 创建move项目: sui move new hello_world

  • Move.toml中的 rev = "framework/testnet" 改为 rev = "framework/devnet"

  • source/hello_world.move 输入完整代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    module hello_world::hello_world {

    use std::string;

    // 自定义结构体
    /// An object that contains an arbitrary string
    public struct HelloWorldObject has key, store {
    id: UID,
    /// A string contained in the object
    text: string::String
    }

    #[lint_allow(self_transfer)]
    public fun mint(ctx: &mut TxContext) {
    let object = HelloWorldObject {
    id: object::new(ctx),
    text: string::utf8(b"hello fucker!")
    };

    // 将 对象转给调用者
    transfer::public_transfer(object, tx_context::sender(ctx));
    }

    }
  • 编译move代码: sui move build

  • 发布package: sui client publish --gas-budget 20000000 ./

    • 可以看到输出之后的package ID
  • export PACKAGE_ID=xxx

  • 调用package : sui client call --function mint --module hello_world --package $PACKAGE_ID --gas-budget 10000000

2_Sui入门

参考: https://github.com/sui-foundation/sui-move-intro-course/blob/main/unit-one/lessons/1_set_up_environment.md

安装

  • 安装 sui

    1
    cargo install --locked --git https://github.com/MystenLabs/sui.git --branch devnet sui
  • vscode 安装 move-analyzer插件

    1
    cargo install --git https://github.com/move-language/move move-analyzer --features "address20"

初始化

  • sui client envs
    • devnet: https://fullnode.devnet.sui.io:443
    • 0 for ed25519

安装 Sui 插件钱包

https://chromewebstore.google.com/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil?pli=1

获取测试币

sui client faucet

每次可以获取 10 SUI

浏览器查看地址

https://suiscan.xyz/devnet/account/0x163813fb76d72bf46451ddfad78b35700198bf8eb8f3d3dee596726c2b01515b

查看地址

  • 查看地址: sui client addresses
  • 查看活跃地址: sui client active-address
  • 获取余额(Sui上叫做gas object): sui client gas

ChatGPT底层算法Transformer

http://lib.ia.ac.cn/news/newsdetail/68571

Transformer算法机制:

Transformer核心三个步骤:

  1. 编码(Embedding)
  2. 定位 (Positional Encoding)
  3. 自注意力机制(Self-Attention)

以翻译为例: 将 “I love you” 翻译为中文,

  • 第一步——编码(Embedding): 将 “I love you” 中每个单词进行编码成 512维向量(实际维度可能更高)
    • 可理解为512高维空间中的一个点
  • 第二步——定位(Positional encoding): 将每个单词的向量映射到一个新的高维向量
    • 高维向量包含了单词在句子中的“位置”信息
  • 第三步——自注意力机制(Self-Attention): 通过一个Attention(Q,K,V)算法, 将每个单词向再变换为一个更高维的向量
    • 高维向量包含了单词与句子中其他单词的关系

总结

  • 深度学习算法,如Transformer,在工程实践中表现很好,但是为什么好,目前缺乏理论依据

    • ChatGPT为什么那么牛逼,科学家也解释不了,反正就是大力出奇迹
  • 智能可用高维空间中的路径进行量化(可计算化)

    • 智能=高维空间中的路径
    • 智慧=高维空间中的路径
  • Copyrights © 2021-2024 youngqqcn

请我喝杯咖啡吧~