timezone |
---|
Asia/Shanghai |
- 自我介绍
- Martin Yeung, 來自中國香港,計算機科學+電商專業,香港城市大學理學碩士畢業,專注於區塊鏈技術研究和應用。
- 你认为你会完成本次残酷学习吗?
- 會的。
Starknet 是一個第2層網絡,它使用 zk-STARKs 技術使以太坊交易更快、更便宜、更安全。 將其視為以太坊之上的增強層,針對速度和成本進行了最佳化。
Starknet跨越了可擴展性和廣泛共識之間的差距,而且更整合了一個數學框架去平衡容量和包容性之間的平衡。 其完整性取決於簡潔、具透明度的計算完整性證明的穩健性。 這種方法讓強大的操作者可以增強Starknet能力,以確保每個人都可以使用通用工具來驗證 Starknet 的完整性。
Starknet 的價值 核心原則:
- 持續開放: Starknet 持續抵制權力整合。要點包括:
- 開放的權力分配是支持 Starknet 合法性的基礎,而且必須在經營和執行決策中持續存在。 雖然有時可能需要中心化的經營,但應該是短暫的。
- Starknet協議和治理應該一直公開和透明。
- 治理應加強包容性,及使用能夠發展的靈活結構以確保持續的包容性。
- 中立性: Starknet對支持社會功能方面的事情保持公正立場。
- Starknet上功能的目的和風氣是取決於它們的創建者。
- 抗審查性: Starknet對使用者交易的性質和意義會保持一個不過問的原則。
- 個人授權: Starknet的蓬勃發展有賴於消息可以自由流通及用戶的自主權。 這會以一個習慣培養來強調可以透過培育植根於其核心使命和價值來實現的。
Starknet的一些主要功能:
- 成本低:Starknet上的交易成本低於以太坊。
- 對開發人員友好:Starknet 讓開發人員可以使用native language - Cairo 來輕鬆地建立去中心化應用程式。
- 速度和效率:即將發布的版本會在交易上有更快的速度及更便宜的成本。
- CVM:受惠於使用Cairo,Starknet能在自己的VM上運行,稱為 Cairo VM (CVM), 這樣使我們能夠超越以太坊虛擬機 (EVM) 進行創新,也為去中心化應用程式創建一個新的範例。
以下是其中一些例子:
- Account Abstraction: 在協議層面實現,有利於多樣化的簽名方案,同時確保用戶安全和資產的自我託管。
- Paymaster:Starknet 將允許使用者選擇如何支付交易費用,遵循 EIP 4337 中規則,允許交易指定的合約(Paymaster)來支付其交易。支援無gas fee的交易,從而便利用戶使用。
Cairo: Starknet的語言 Cairo 是一種基於 STARK 的智能合約而度身定制開發的。 作為 Starknet 的native language,它對於建立一個可擴展而且安全的去中心化應用程式十分重要。 受 Rust 啟發,Cairo 讓您可以安全、方便地編寫合約。
- 治理 Starknet 基金會負責監督 Starknet 的治理。 職責包括:
- 管理 Starknet 的開發和經營
- 監督 Starknet DAO,進一步推動社區參與
- 設定規則以維持網路的完整性 我們的重點是通過技術投入和討論來改進協議。 雖然starknet重視所有觀點,但能夠引領前進的往往是技術的洞察力。
成員可以通過投票來影響Starknet發展。 流程如下:
- 新版本在 Goerli 測試網路上進行測試。
- 成員們有六天的時間進行審查。
- 提出快照提案,讓社群對提案進行投票。
- 當贊成票佔大多數,就表示提案可以升級到主網。
實操: 首先訪問一個以開啟動Starknet插件的Remix IDE. https://remix.ethereum.org/#activate=Starknet&lang=en&optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.24+commit.e11b9ed9.js
- 注意: 1.1 過程中可能會出現問題,例如沒有成功獲得完整的sample project. 解決 - 需要重新打開網址,再觀察是否成功獲得完整的sample project.
實操: 首先訪問一個以開啟動Starknet插件的Remix IDE. https://remix.ethereum.org/#activate=Starknet&lang=en&optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.24+commit.e11b9ed9.js
實操:Remix IDE
實操:Remix IDE
- 心得 當透過官方提供的link進行時,會出現如下圖的popup提示: (需要下載整個repo, 要按6次"Accept", 否則就不能獲得完整repo) 另外在deploy時也會出現2次popup,要求你去"Accept"。 最後,在按"Accept"時也要快,如果錯過了,就要刪緩沖的所有紀錄,重新開始,有需要時要重開機。
執行安裝工具的部分 https://asdf-vm.com/guide/getting-started.html 我的本機環境:
- WSL Ubuntu 24.04 LTS
開始安裝相關工具: Starkli Installation
curl https://get.starkli.sh | sh
asdf installation
-
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
-
open .bashrc (at root / ~) in Vscode update .bashrc (只要加入以下2句)
-
. "$HOME/.asdf/asdf.sh"
-
. "$HOME/.asdf/completions/asdf.bash"
然後執行
測試一下
-
Install a Plugin asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
-
Install a Version asdf install nodejs latest
- Set a Version
Add to global
- asdf global nodejs latest
檢查
- asdf current
Scarb Package Manager Installation
Scarb Package Manager Installation
下一步就是要download scarb的版本,如果不download及于設置就會顯示沒有版本
download specific versions:
要設置版本
再一次確認有沒有成功
-
Katana Node Installation 開始安裝
-
curl -L https://install.dojoengine.org | bash
進行版本檢查
[package]
name = "my_contract"
version = "0.1.0"
edition = "2023_11"
[dependencies]
starknet = ">=2.5.4"
[[target.starknet-contract]]
有2個變數是必需要的,1個是starknet戶口,另一個是starknet代理: 用於設置使用網絡。
- 創建一個src/.env, 然後加入以下修改:
export STARKNET_ACCOUNT=katana-0
export STARKNET_RPC=http://0.0.0.0:5050
- 更新src/lib.cairo
#[starknet::interface]
trait IHello<T> {
fn get_name(self: @T) -> felt252;
fn set_name(ref self: T, name: felt252);
}
#[starknet::contract]
mod hello {
#[storage]
struct Storage {
name: felt252,
}
#[constructor]
fn constructor(ref self: ContractState, name: felt252) {
self.name.write(name);
}
#[abi(embed_v0)]
impl HelloImpl of super::IHello<ContractState> {
fn get_name(self: @ContractState) -> felt252 {
self.name.read()
}
fn set_name(ref self: ContractState, name: felt252) {
self.name.write(name);
}
}
}
Compile the contract with the Scarb compiler:
The above command results in a compiled contract under target/dev/, named "my_contract_hello.contract_class.json"
去src, 執行:
- source .env
如果沒有執行 source src/.env , 會有以下錯誤訊息:
執行
去my_contract To declare your contract, execute:
應該要先做設置Account: https://docs.starknet.io/quick-start/set-up-an-account/
- starkli --version
- mkdir -p ~/.starkli-wallets/deployer
在執行下一步前,必須要有Wallet Argent X or Braavos wallet https://braavos.app/download-braavos-wallet/
測試用: siren thought depart stem cycle lazy reunion spatial shock local six there
account address:0x07bf212a91454ec1f129a8f4a29054211dc013f73bbbe50374426a41ce0a68ea private: 0x0364fb6a326af3224b7fffd73731cd99f81e2c655eb84996ec66736c2cc6fd51 public: 0x44c91132de72543b5b92eae7875876f281d4706fc57b95c277ad7ced13aa4e
- starkli signer keystore from-key ~/.starkli-wallets/deployer/keystore.json
- 需要輸入private key
- 需要輸入密碼 (自設)
去新增STARKNET_KEYSTORE https://docs.starknet.io/quick-start/environment-setup/#setting_up_starkli_environment_variables
更新.env
- starkli declare target/dev/my_contract_hello.contract_class.json 都是有錯誤訊息 Error: account config file not found
starkli account fetch 0x07bf212a91454ec1f129a8f4a29054211dc013f73bbbe50374426a41ce0a68ea --output ~/.starkli-wallets/deployer/account.json --rpc https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/xx
get faucet: https://starknet-faucet.vercel.app/
starkli account fetch 0x07bf212a91454ec1f129a8f4a29054211dc013f73bbbe50374426a41ce0a68ea --output ~/.starkli-wallets/deployer/account.json
- starkli declare target/dev/my_contract_hello.contract_class.json 都是有錯誤訊息 Error: account config file not found
starkli account fetch 0x07bf212a91454ec1f129a8f4a29054211dc013f73bbbe50374426a41ce0a68ea --output ~/.starkli-wallets/deployer/account.json --rpc https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/x
- 關鍵點: Braavos wallet 需要先deploy
檢查:
-
starkli account deploy ~/.starkli-wallets/deployer/account.json 但我的wallet已經deployed,因為Braavos wallet的已經在錢包上deployed
下一部分 https://docs.starknet.io/quick-start/declare-a-smart-contract/ Declaring a smart contract
- 更新 Scarb.toml
[package]
name = "my_contract"
version = "0.1.0"
edition = "2023_11"
[dependencies]
starknet = ">=2.5.4"
[[target.starknet-contract]]
sierra = true
- update rpc at .env
starkli declare target/dev/my_contract_hello.contract_class.json --network=sepolia --compiler-version=2.7.1 有錯誤訊息:
my_contract.starknet_artifacts starkli declare target/dev/my_contract.starknet_artifacts.json --network=sepolia --compiler-version=2.7.1
每次打開terminal 每次都要執行source src/.env
starkli declare target/dev/my_contract.starknet_artifacts.json
--rpc=https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/bG3D2u3pNQ0XI5lXiWcaGWGEzmA2G5zw\
--compiler-version=2.7.1
--keystore=/root/.starkli-wallets/deployer/keystore.json\
starkli declare target/dev/my_contract.starknet_artifacts.json
--rpc=https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/bG3D2u3pNQ0XI5lXiWcaGWGEzmA2G5zw\
--compiler-version=2.7.1
--keystore=/root/.starkli-wallets/deployer/keystore.json
--account=/root/.starkli-wallets/deployer/account.json
- 暫時不知道可以怎樣做,不能成功declare
Starknet 工具鏈與開發環境
一般安裝: curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh 最新版本的安裝: curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh -s -- -v nightly
創建新的項目:
參考: https://github.com/software-mansion/scarb/tree/main/examples/hello_world
- cario book https://book.cairo-lang.org/
寫一個計數器合約 創建一個counter.cairo
參考: https://github.com/PhilippeR26/starknet.js-workshop-typescript
通過JS-SDK部署合約
- mkdir js
- cd js
- npm init
- npm install starknet
在根據教學影片中的步驟, 需要自行編寫declare.js, deploy.js, 雖然可以根據影片中的代碼,但有些地方不太清晰,如有文檣提供就好。
在互聯網上查看declare.js, deploy.js的寫法,但各有不同,不太知道哪個是正確
Starknet 殘酷共學分享會 #3: 開發框架 Scaffold-Stark
-
https://github.com/Scaffold-Stark/scaffold-stark-2 Scaffold-Starknet與Scaffold-ETH-2有相似的地方。 Scaffold-Starknet包含Starknet React, Starknet.js, Cairo, Next.js, Starknet Foundry。
-
git clone https://github.com/Scaffold-Stark/scaffold-stark-2.git
-
新文件: scaffold-stark-2
參考安裝步驟: https://medium.com/spaceshard/how-to-run-starknet-devnet-on-windows-tech-tutorial-f8447c131193
-
sudo apt install python3-pip
-
使用另一方式安裝 https://book.starknet.io/ch02-07-starknet-devnet.html
-
git clone https://github.com/0xSpaceShard/starknet-devnet-rs.git
-
運行 a local network
-
cd starknet-devnet-rs
-
cargo on (不要用yarn chain)
-
打開新的terminal
-
cd scaffold-stark-2/
-
需要安裝以下工具
再次執行:
- cd scaffold-stark-2/
- yarn deploy
有錯誤: Error: The wallet you're using to deploy the contract is not deployed in the devnet network.
- 需要修改/packages/nextjs/scaffold.config 如果沒發現問題,就要修改
- /packages/snfoundry/scripts-ts/helpers/networks.ts
再次執行:
繼續學習,根據影片的教學:
檢查:
[14:55]
- 更新.env (/packages/snfoundry/.env) PRIVATE_KEY_SEPOLIA RPC_URL_SEPOLIA ACCOUNT_ADDRESS_SEPOLIA
- 注意: 會對應於: /packages/snfoundry/scripts-ts/helpers/networks.ts
[15:36]
- 要在speolla deploy
- update package/nextjs/scaffold.config.ts
targetNetworks: [chains.speolla],
- update .env
PRIVATE_KEY_SEPOLIA=
RPC_URL_SEPOLIA=
ACCOUNT_ADDRESS_SEPOLIA=
yarn deploy --network sepolia 成功:
-
contract: 0xa28b01e90d769aa69d9326dc96913d8f333c7e1d14eb05cf8974e1c724ece5