dfx常用指令
dfx identity相关:
dfx identity list #identity 列表
dfx identity get-principal #获取当前的PID
dfx ledger account-id #接收转账的account-id
dfx --identity default ledger --network ic balance #当前账户还有多少ICP
fx --identity xxxx ledger --network ic transfer --memo 0 --amount 0.5 $(dfx --identity default ledger account-id) #从一个账户转账到另一个账户
dfx identity new developer #创建新的identity
dfx identity use developer #切换identity
wallet 相关:
dfx identity --network ic get-wallet # 获取燃料钱包
dfx ledger --network ic create-canister --amount 0.0 $(dfx identity get-principal) #创建一个canister,创建之后没有钱包
dfx identity --network ic deploy-wallet xxxxx-xxxxx-xxxxx-xxxxx-xxx # 把钱包部署到canister里面
dfx wallet --network ic balance #当前钱包的cycles余额
dfx wallet --network ic send $(dfx --identity developer identity get-wallet) 80000590000 #给developer充值
deploy 部署相关:
dfx deploy #部署到本地
dfx deploy --network ic --with--cycles 80000590000 xxx #部署到主网
dfx canister --network ic install --all --mode upgrade #升级
转账
#转ICP
dfx ledger --network ic transfer 20694e344693a12c409c6dd3c6ebe1847f17aa68a06f71c69a6f7569d92f0bf1 --memo 1 --amount 0.01
#转燃料
dfx wallet send loglj-saaaa-aaaag-qavla-cai 2000000000
canister 罐相关:
dfx canister --network ic status --all #获取canister状态
dfx canister --network ic stop --all # 停止
dfx canister --network ic start --all # 启动
dfx canister --network ic uninstall-code --all #删除代码
dfx canister --network ic delete --all #删除并回收cycles
motoko 基本语法
1.赋值
let x :Nat = 1; //x的值不可变
var y :Nat = 0;//y的值可变
y := 10; //把10赋给可变的变量y
2.字符串
let text :Text = "hello";//赋值
let str : Text = text # "motoko";//字符拼接
3.声明可以不用加类型,类型推断
let i = 0;
let str = "text";
4.数组
let a : [Nat] = [1, 2, 3] ;//不可变数组
let a = [var 1,2,3,4,5];//数组里面的值是可变的
//let a : [var Nat] = [var 1, 2, 3] ;
5.数组遍历
let a = [var 1,2,3,4,5];//数组里面的值是可变的
var i = 0;
while(i < a.size())
{
a[i] := a[i-1] + a[i];// := 改变值后的赋值
i := i + 1;//i++
};
6.长久存储(canister升级数据还保留)
stable var counter = 10;
7.函数
public func setCounter(n:Nat) : async Nat
{
var counter = 0;
counter := n;
return counter;
};
motoko特点
1.静态类型,语法与TS/JS接近.
2.在函数大括号后面要加分隔符
3.面向对象,不支持继承
4.支持await/asyn异步通信
5.结构化类型推断
6.安全的数值计算
7.自动内存回收机制(GC)