您现在的位置:kastop>> Kas信息 Kaspa网络>>正文内容

SilverScript 入门(二):从零编写 Kaspa 智能合约到上线运行全解析

从 Hello World 到部署 kaspa Mainnet,完整理解 SilverScript 合约生命周期

上一篇文章《SilverScript 入门:Kaspa 智能合约语言架构解析》中,我们介绍了 SilverScript 的整体架构,理解了编译器的工作原理。

这一篇,我们将站在开发者的角度,完整走一遍一个智能合约从编写、编译、部署到链上执行的全过程。

看完本文,你将理解:

  • SilverScript 合约是如何编写的

  • 编译器生成了什么

  • 合约如何部署到 Kaspa

  • 节点如何执行 Script

  • 一笔交易如何驱动智能合约运行


一、Kaspa 合约与 Ethereum 合约最大的区别

很多开发者第一次接触 SilverScript 时,最大的误区就是:

它是不是 Solidity?

答案是:

不是。

Ethereum:

Account
   │
Storage
   │
Contract
   │
Transaction

Kaspa:

UTXO
  │
Script
  │
Spend
  │
New UTXO

Ethereum 合约一直存在。

Kaspa 合约实际上存在于:

UTXO 的锁定脚本(Locking Script)中。

换句话说:

不是调用 Contract。

而是:

消费(Spend)某一个 Contract UTXO。

这就是 UTXO Covenant。

官方文档也强调,Toccata 的 L1 合约采用 UTXO 原生模型,状态随 UTXO 演进,而不是账户式全局状态。


二、开发流程

整个开发流程如下:

编写 SilverScript
       │
       ▼
Compiler 编译
       │
       ▼
Kaspa Script
       │
       ▼
创建 Deploy Transaction
       │
       ▼
广播到 Kaspa Mainnet
       │
       ▼
生成 Contract UTXO
       │
       ▼
用户 Spend Contract
       │
       ▼
Script 验证成功

实际上只有两种交易:

  • 创建 Contract

  • 消费 Contract

所有复杂逻辑都是围绕 UTXO 生命周期展开。


三、第一个 SilverScript 合约

先写一个最简单的 Owner 合约。

例如:

contract Vault {

   pubkey owner;

   function unlock(sig s) {

       require(checkSig(s, owner));

   }

}

这个例子表达的含义非常简单:

只有 Owner 可以花费这笔 UTXO。

是不是很像:

Bitcoin Script:

OP_DUP
OP_HASH160
...
OP_CHECKSIG

SilverScript 的意义就在于:

我们终于不用再手写 Opcode。

而是写:

require(...)

Compiler 自动生成 Script。


四、编译发生了什么?

执行:

silverscript build vault.ss

Compiler 开始工作:

vault.ss



Lexer



Parser



AST



Semantic



Optimizer



Kaspa Script



script.bin

最终得到:

Redeem Script

+

Metadata

+

ABI

真正部署到链上的其实不是源码。

而是:

Script Binary。


五、Deploy Transaction 如何生成?

很多人认为:

Deploy Contract

就是:

上传代码。

实际上完全不是。

Kaspa 没有:

CREATE

CREATE2

这种操作。

真正发生的是:

Wallet



Create Output



Output Script = Contract Script

也就是说:

钱包创建一个:

新的 UTXO。

锁定脚本就是:

Compiler 输出的 Script。

因此:

Contract

其实就是:

一个特殊的 P2SH(或未来 Covenant)UTXO。


六、部署到 kaspa Mainnet

目前 SilverScript 主要面向 Testnet-12,可通过官方工具进行编译和测试部署。

典型流程如下:

silverscript build vault.ss



生成 Script



Wallet Sign



Broadcast



Node Accept



Contract UTXO

如果交易进入区块:

你的第一个 Contract 就已经上线。

官方还提供了在线开发环境,可直接在浏览器中编写、编译并部署到测试网。
SilverScript Studio:SilverScript Studio


七、Contract 如何执行?

这是 Kaspa 最重要的一点。

不是:

Call Contract

而是:

Spend Contract

例如:

Alice:

Contract UTXO


100 KAS

Bob:

发送:

Spend Transaction

节点执行:

Unlock Script

+

Lock Script

验证:

TRUE

交易成功。

否则:

Reject。

整个过程与 Bitcoin Script 十分相似,只不过 SilverScript 提供了更高级、更易维护的开发体验。


八、状态(State)存在哪里?

这是很多 Solidity 开发者最容易困惑的地方。

Ethereum:

Storage

balance = 100

Kaspa:

UTXO



New UTXO



New State

状态不是修改。

而是:

生成新的状态。

例如:

Vault

Balance=100

Spend:

生成:

Vault

Balance=80

旧状态:

Spent。

新状态:

Alive。

因此:

状态演化:

State0



State1



State2



State3

每一个都是新的 UTXO。

官方开发文档建议将状态放入 Redeem Script 的状态预映像(preimage)中,通过新的 UTXO 表示状态迁移,而不是修改已有对象。


九、一个完整的生命周期

下面是一笔 Contract 的生命周期。

Developer



Write Contract



Compile



Script



Deploy



UTXO Created



User Spend



Verify Script



Generate New State



New Contract UTXO

这就是:

Kaspa Covenant。

没有:

Storage。

没有:

Global State。

只有:

UTXO Evolution。


十、未来可以开发哪些应用?

随着 Covenants++、Native Assets 等能力逐步成熟,SilverScript 将适用于多种 UTXO 原生应用。官方示例和路线图已经覆盖了多个方向。

例如:

应用实现方式
时间锁金库(Vault)时间条件 + Owner 验证
托管(Escrow)多签 + 超时退款
原子交换(Atomic Swap)HashLock + TimeLock
多签钱包M-of-N 签名验证
Native AssetKIP-20 资产规则
DAO Treasury多签 + 治理约束
支付通道Covenant 状态迁移

这些应用都不依赖账户模型,而是通过不断创建新的 Contract UTXO 完成状态更新。


十一、为什么 SilverScript 不需要 EVM?

Ethereum:

Transaction



EVM



Storage



State Root

Kaspa:

Transaction



Script



Validation



New UTXO

因此:

SilverScript 不需要:

  • EVM

  • Solidity Runtime

  • Gas Interpreter

它直接编译成:

Kaspa Script。

节点执行的是:

原生 Script Engine。

这也是 Kaspa 官方一直强调的:

Readable Code → Native Kaspa Script

没有额外虚拟机。

没有额外执行层。


总结

一个 SilverScript 合约真正的生命周期可以概括为:

编写合约
     │
     ▼
SilverScript Compiler
     │
     ▼
Kaspa Script
     │
     ▼
Deploy Transaction
     │
     ▼
Contract UTXO
     │
     ▼
Spend Transaction
     │
     ▼
Script Validation
     │
     ▼
生成新的 Contract UTXO

理解这一流程,也就理解了 Kaspa 智能合约与传统 EVM 合约最本质的区别:Kaspa 合约不是“长期驻留在链上的对象”,而是一系列通过 UTXO 状态迁移不断演化的链上规则。



感动 同情 无聊 愤怒 搞笑 难过 高兴 路过
【字体: 】【收藏】【打印文章】 【 打赏 】 【查看评论

相关文章

    没有相关内容