当前位置: 首页>C++>正文

github 免費節點,BUMO:超級節點共建接口

github 免費節點,BUMO:超級節點共建接口

  • 簡介
    • 初始化
    • 配置
    • 狀態
  • 功能接口
    • 認購共建
    • 取消認購
    • 申請參選
    • 追加押金
    • 設置節點地址
    • 設置投票獎勵
    • 轉讓份額
    • 接收轉讓
    • 提取獎勵
    • 退出參選
    • 公投退出
    • 收回押金
    • 操作反饋
  • 查詢接口
    • 查詢配置信息
    • 查詢共建狀態
    • 查詢轉讓信息
    • 查詢退出詳情
    • 查詢共建者集合詳情

簡介

當用戶參與 BuChain 超級節點競選時,可以單獨申請;如果資金實力不足,也可以發起節點共建計劃,由眾多用戶共同認購共建資金,一起申請。co-build 是 BuChain 為用戶發起節點共建提供的合約模板,任意用戶可以使用 co-build 創建自己的共建合約,發起超級節點共建計劃,發起共建的用戶稱為共建發起者

在共建計劃中,參選超級節點所需的質押金將被劃分為等額的若干份,稱為共建目標總份額。每份所需的 BU 數,稱為共建單位。任何用戶可認購一份或多份,參與認購的用戶稱為共建者。認購額達到或超過參選超級節點所需的質押金后,發起者可以以共建合約地址為參選地址,申請成為超級節點

github 免費節點?參選成功后,超級節點可以獲取 BuChain 分配的區塊獎勵。發起者和參與者獲得的區塊獎勵,是按照自己認購的份額在總份額中的比率分配的。比如共建目標總資金是500萬,發起者的發起資金是100萬,那么每次分配區塊獎勵時,發起者者將得到獎勵的20%,共建者也是如此。

初始化

發起共建計劃,必須事先約定每份共建單位的BU數和共建目標總份額,并以配置的方式寫入合約代碼。所以,發起者在創建共建合約的時候,必須將這些配置值以參數的形式提供給合約的初始化接口,由初始化接口以此創建共建合約。初始化接口的參數包括:

參數描述
unit共建單位,值為BU數,比如10000,表示每份1萬BU,必填
shares共建目標總份額,共建單位乘以目標總份額,就是共建所需的目標資金總數,必填

發起者在創建共建合約時,必須提供發起資金,且發起資金必須為unit的整數倍。注意,BuChain中有最小預留費用的概念,所以發起者創建共建合約時,在共建合約的init_balance中除了要提供發起資金外,還要提供最小預留費用。比如,假設發起資金為10000 BU,賬戶最小預留費用為0.01 BU,那么共建合約的init_balance應為10000.01 BU。

quantumult免費節點、例

    "create_account" : {"init_balance":1000000,"init_input" : "{\"params\":{\"unit\"  :1000000000000,\"shares\":500}}","contract" :{"payload" : .../*將共建合約代碼拷貝到此字段*/},"priv":{"master_weight" :0,"thresholds":{"tx_threshold":1}}}

配置

共建的發起者、共建單位和共建總份額,被統稱為共建的配置,在共建合約被創建時,通過初始化參數指定,且合約一經創建不可更改。

    cfg = {'initiator'   : Chain.tx.sender,   /*發起者*/'unit'        : 1000000000000,     /*共建單位*/'raiseShares' : 500                /*共建目標總份額*/};

注:本文檔接下來的所有示例,都是以此配置值為標準來演示。

狀態

wsdl哪個節點代表接口信息,共建的狀態包括共建合約是否可用、是否已參選超級節點、參選的角色、共建者總認購份額和參選后質押的份額,總認購份額和質押份額可以超過目標總份額。

    states = {'disabled':false,     /*共建合約是否作廢*/'applied' : true,     /*是否已申請成為超級節點*/'role: 'kol',         /*申請的超級節點角色*/'allShares' : 700,    /*總認購份數*/'pledgedShares' : 500 /*參選后質押在DPOS合約內的份額*/};

功能接口

共建合約模板為普通用戶參與超級節點共建提供了豐富的接口,使用戶既可以發起超級節點共建,也可以參與由別人發起的共建。

認購共建

用戶調用認購接口subscribe可以認購指定的共建份額參與超級節點共建。

  • 共建者向共建合約轉移一筆 BU (詳見開發文檔‘轉移BU資產’)作為認購共建資金,轉賬額必須是共建單位的整數倍。
  • 轉移BU資產操作的 input 字段填入{ "method" : "subscribe", "params":{"shares":“此處填入認購份額數”}}作為參數,注意使用轉義字符。
  • 共建者(包括發起者)可以隨時再調用subscribe接口追加共建份額,追加額必須是共建單位的整數倍。
  • 共建合約參選超級節點后,共建者認購或追加的份額,不能獲得區塊獎勵分配,除非共建合約向DPOS合約再次追加質押金。
  • 只要共建者認購的份額未參與超級節點競選質押,就可以隨時撤出認購資金,詳見取消認購。
參數描述
shares認購份額,共建單位和認購份額之積必須等于調用此接口時轉賬的BU數。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :5000000000000, /*5 0000 0000 0000, 5萬BU*/"input":"{\"method\":\"subscribe\",\"params\":{\"shares\":5}}"}

取消認購

如果共建者認購的份額未參與超級節點競選質押,可以隨時調用revoke接口撤出自己的全部認購資金。但是,共建發起者只能在共建合約廢棄后才能撤出發起份額,若共建合約尚未向DPOS合約申請超級節點,則調用coWithdraw接口可以直接廢棄共建合約;如果已經申請,則退出超級節點且收回質押金后,將自動廢棄共建合約。revoke接口調用成功后,合約將共建者的共建資金返還原賬戶,并在合約內刪除共建者的認購信息。

  • 共建者向共建合約轉移 0 BU 用于觸發共建合約。
  • 調用revoke接口時不需要指定參數。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"revoke\"}"}

申請參選

當共建合約內認購的總金額達到申請超級節點所需的最低質押金后,發起者可以調用coApply接口參選超級節點。申請時,共建合約的地址將作為參選的節點地址,共建合約內的所有共建資金將全部被轉移到DPOS合約作為參選質押金。

  • 發起者向共建合約轉移 0 BU 用于觸發共建合約。
  • 轉賬操作的 input 字段填入{ "method" : "coApply", "params":{"role":"此處填入申請的超級節點角色","node":"此處填入共識節點的物理節點地址" }}作為參數。
  • 發起者可以調用通過退出參選操作退出超級節點競選并收回質押金,普通共建者也可以通過公投退出操作發起退出超級節點競選公投,并收回全部質押的共建資金。
參數描述
role申請的角色,超級節點只有validatorkol兩種角色。
pool投票獎勵分配地址。
ratio投票獎勵分配比率,值為百分數的分子,比如80,表示區塊獎勵的80%將轉入pool參數指定的地址,再由pool地址分配給當前節點的支持者。
node共識節點的物理節點地址,如果角色是kol,則不需要提供node參數。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"coApply\",\"params\":{\"role\":\"validator\",\"pool\":\"buQhqMoJziz27DdrS4DaFjeUSspxetAfvpzu\",\"ratio\":90,\"node\":\"buQop4UtJJNPKSHNCt9LKYs1kDNQ4Bdz52a3\"}}"}

追加押金

當共建合約已經申請超級節點后,如果仍有新的共建者認購共建份額,那么,發起者可以調用coAppend接口, 向DPOS合約轉賬新增的認購BU,來為超級節點競選追加質押金,以提高共建合約地址的權益排名。

  • 發起者向共建合約轉移 0 BU 用于觸發共建合約。
  • 轉賬操作的 input 字段填入{ "method" : "coAppend"}作為參數。
  • 調用coAppend接口不需要指定參數。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"coAppend\"}"}

設置節點地址

共建合約參選超級節點競選后,可以調用coSetNodeAddress接口設置或更改物理節點地址。

  • 發起者向共建合約轉賬 0 BU。
  • ‘轉移貨幣’操作的 input 字段填入{ "method" : "coSetNodeAddress", "params" : { "address" : "此處填入新節點地址"} },注意使用轉義字符。
參數描述
address新節點地址,用于代替當前執行出塊任務的節點。

  "pay_coin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"coSetNodeAddress\",\"params\":{\"address\":\"buQop4UtJJNPKSHNCt9LKYs1kDNQ4Bdz52a3\"}}"}

設置投票獎勵

共建合約參選超級節點競選后,調用此接口,可更改共建節點的投票獎勵分配地址和比率。

  • 發起者向共建合約轉賬 0 BU。
  • ‘轉移貨幣’操作的 input 字段填入{ "method" : "coSetVoteDividend", "params":{"pool":"此字段填入投票獎勵分配地址", "ratio":"此字段填入投票獎勵分配比率"}},注意使用轉義字符。
參數描述
pool投票獎勵分配地址。
ratio投票獎勵分配比率,值為百分數的分子,比如80,表示區塊獎勵的80%將轉入pool參數指定的地址,再由pool地址分配給當前節點的支持者。

  "pay_coin" :{"dest_address" : "buQqzdS9YSnokDjvzg4YaNatcFQfkgXqk6ss","amount" :10000000000000,"input":"{\"method\":\"coSetVoteDividend\",\"params\":{\"pool\":\"buQhqMoJziz27DdrS4DaFjeUSspxetAfvpzu\",\"ratio\":90}}"}

轉讓份額

如果共建者認購的共建份額參與了超級節點競選的質押,將不能隨意撤出認購,除非發起者觸發退出參選操作,或共建者發起公投退出操作且公投退出成功。但共建者可以通過調用transfer接口將共建份額轉讓給他人,當接收者調用accept接口(詳見接收轉讓)接受轉讓的份額后,發起轉讓的共建者就可以收回認購的共建資金。

  • 共建者向共建合約轉移 0 BU 用于觸發共建合約。
  • 轉賬操作的 input 字段填入{ "method" : "transfer", "params":{"to":"此處填入接收份額轉讓者的地址","shares":"此處填入轉讓份額" }}作為參數。
  • 針對同一接收者重復調用transfer接口,轉讓份額的當前值將覆蓋前值,轉讓者可以調用此接口將轉讓份額設為0來取消轉讓。
參數描述
to接收份額轉讓者的地址。
shares待轉讓的份額,該份額可以少于轉出者持有的份額,即轉讓者可以部分轉讓,但不得超過持有份額。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"transfer\",\"params\":{\"to\":\"buQop4UtJJNPKSHNCt9LKYs1kDNQ4Bdz52a3\",\"shares\":5}}"}

接收轉讓

如果有共建者發起了轉讓共建份額操作,被指定的接收者可以調用accept接口接收該份額,但要支付認購該共建份額所需的BU數。

  • 共建者向共建合約轉賬指定的BU數,該BU數等于共建單位乘以待轉讓份額。
  • 轉賬操作的 input 字段填入{ "method" : "accept", "params":{"transferor":"此處填入轉讓者的地址"}}作為參數。
  • 接收轉讓者只承購轉讓者的共建份額,并不包括轉讓者已經獲得的區塊獎勵,但接收轉讓后,將可以按照共建份額獲得新的區塊獎勵。
  • 對于轉讓出的份額,轉讓者不再享有任何區塊獎勵。
參數描述
transferor轉讓者的地址。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :5000000000000,"input":"{\"method\":\"accept\",\"params\":{\"transferor\":\"buQaKYwkqP4vq4Up6nqjfukBFYUWPCkAD84F\"}}"}

提取獎勵

如果共建合約申請超級節點成功,將會獲得區塊獎勵。參與競選質押的共建者可以隨時調用coExtract提取分得的區塊獎勵,提取的數量為自上次提取后累計至本次提取所積累的所有獎勵,如果是初次提取,則提取自申請超級節點成功后,累計至本次提取所積累的所有獎勵。

  • 共建者向共建合約轉移 0 BU 用于觸發共建合約。
  • 轉賬操作的 input 字段填入{ "method" : "coExtract", "params":{"list":[此處填入提取獎勵的地址集合]}}作為參數。
參數描述
list領取獎勵地址列表,為數組類型,領取獎勵地址的個數不得超過100個,如果參數未提供,則默認領取合約觸發者的獎勵。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"coExtract\",\"params\":{\"list\":[\"buQrVDKPCVE6LfCf8TyZEaiZ8R99NrSn4Fuz\",\"buQmziFKwWTvJe5hBCFa6e3FdPDPorht3wCB\",\"buQmvKW11Xy1GL9RUXJKrydWuNykfaQr9SKE\",\"buQnP4jueoC37fP2VxKpsZSTNjgFHpA442jy\",\"buQjxgZsG3B24PNzKzpTiwrRR3z6ok46izuR\"]}}"}

退出參選

發起者可以調用coWithdraw接口退出超級節點參選。

如果共建合約尚未向DPOS合約發起超級節點申請,則調用此接口將直接廢棄當前共建合約,之后發起者和所有共建者只能調用revoke接口撤回認購,不能觸發其他操作;

如果共建合約已經向DPOS合約發起超級節點申請,但是委員會尚未審核通過,則調用coWithdraw接口將直接收回質押金;

如果共建合約已經向DPOS合約發起超級節點申請,且委員會已經審核通過,則退出后質押金將被DPOS合約鎖定30個工作日(取決于DPOS合約的配置,參見dpos.md文檔)。鎖定期滿后,發起者或任意共建者可以調用takeback接口(詳見收回押金)收回質押的共建資金。

  • 發起者向共建合約轉移 0 BU 用于觸發共建合約;
  • 轉賬操作的 input 字段填入{ "method" : "coWithdraw"}}作為參數。
  • 調用coWithdraw接口時不需要指定參數。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"coWithdraw\"}"}

公投退出

共建者可以繞開發起者,通過調用poll接口發起退出超級節點公投,追隨的共建者同樣通過調用poll接口支持退出,如果認購份額超過質押總份額1/2的共建者投票支持退出,則共建合約將向DPOS合約發起退出申請。退出后質押金將被DPOS合約鎖定30個工作日。鎖定期滿后,任意共建者可以調用takeback接口(詳見收回押金)收回質押的共建資金。

  • 共建者向共建合約轉移 0 BU 用于觸發共建合約;
  • 轉賬操作的 input 字段填入{ "method" : "poll"}}作為參數。
  • 調用poll接口時不需要指定參數。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"poll\"}"}

收回押金

申請退出超級節點滿30天后,質押金鎖定期結束,發起者或任意共建者可以調用takeback接口(詳見收回押金)收回質押的共建資金。質押金收回后,共建合約自動作廢,發起者和所有共建者只能調用revoke接口撤回認購,不能觸發其他操作。

  • 共建者或發起者向共建合約轉移 0 BU 用于觸發共建合約;
  • 轉賬操作的 input 字段填入{ "method" : "takeback"}}作為參數。
  • 調用takeback接口時不需要指定參數。

  "payCoin" :{"dest_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","amount" :0,"input":"{\"method\":\"takeback\"}"}

操作反饋

用戶觸發共建合約時,如果產生重要事件,共建合約將觸發tlog交易,向用戶反饋合約執行的結果。tlog交易會按順序打印多個輸出,其中第一個輸出為事件名稱,后面的輸出為該事件的關鍵信息列表。

事件輸出說明
votePassed支持退出的份額數共建者發起退出超級節點投票,投票獲得通過時觸發的事件。

查詢接口

co-build 為發起者和共建者提供了多項查詢接口,供用戶查詢共建相關內容。

查詢配置信息

調用getConfiguration接口可以查詢共建合約所有的配置項和配置值。

  • 共建者或發起者向共建合約轉移 0 BU 用于觸發共建合約;
  • 轉賬操作的 input 字段填入{ "method" : "getConfiguration"}}作為參數。
  • 調用getConfiguration接口時不需要指定參數。

  {"contract_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","code" : "","input" : "{\"method\": \"getConfiguration\"}","opt_type" : 2,"source_address" : ""}

查詢結果

  "result": {"type": "string","value": "{\"cfg\":{\"initiator\":\"buQhqMoJziz27DdrS4DaFjeUSspxetAfvpzu\",\"unit\":100000000000000,\"raiseShares\":5}}"}

查詢共建狀態

調用getStatus接口可以查詢共建合約所有的狀態內容。

  • 共建者或發起者向共建合約轉移 0 BU 用于觸發共建合約;
  • 轉賬操作的 input 字段填入{ "method" : "getStatus"}}作為參數。
  • 調用getStatus接口時不需要指定參數。

  {"contract_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","code" : "","input" : "{\"method\": \"getStatus\"}","opt_type" : 2,"source_address" : ""}

查詢結果

  "result": {"type": "string","value": "{\"states\":{\"disabled\":false,\"applied\":true,\"allShares\":\"10\",\"pledgedShares\":\"7\",\"role\":\"kol\"}}"}

查詢轉讓信息

調用getTransferInfo接口可以查詢指定的共建份額轉讓信息。

  • 共建者或發起者向共建合約轉移 0 BU 用于觸發共建合約;
  • 轉賬操作的 input 字段填入{ "method" : "getTransferInfo", "params":{"form":"此處填入轉讓者的地址", "to":"此處填入接收轉讓者的地址"}}作為參數。
參數描述
from轉讓者的地址。
to接收轉讓者的地址。

  {"contract_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","code" : "","input" : "{\"method\": \"getTransferInfo\",\"params\":{\"from\":\"buQaKYwkqP4vq4Up6nqjfukBFYUWPCkAD84F\",\"to\":\"buQop4UtJJNPKSHNCt9LKYs1kDNQ4Bdz52a3\"  }}","opt_type" : 2,"source_address" : ""}

查詢結果

  "result": {"type": "string","value": "{\"transferShares\":\"1\"}"}

查詢退出詳情

調用getWithdrawInfo接口可以查詢發起者發起的,或共建者公投的退出提案。

  • 共建者或發起者向共建合約轉移 0 BU 用于觸發共建合約;
  • 轉賬操作的 input 字段填入{ "method" : "getWithdrawInfo"}}作為參數。
  • 調用getWithdrawInfo接口時不需要指定參數。

  {"contract_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","code" : "","input" : "{\"method\": \"getWithdrawInfo\"}","opt_type" : 2,"source_address" : ""}

注:如果是發起者發起的退出提案,則沒投票者列表。

查詢結果

  "result": {"type": "string","value": "{\"withdrawInfo\":{\"withdrawed\":true,\"expiration\":1555149123775492,\"sum\":\"6\",\"ballot\":{\"buQmziFKwWTvJe5hBCFa6e3FdPDPorht3wCB\":2,\"buQnP4jueoC37fP2VxKpsZSTNjgFHpA442jy\":1,\"buQjxgZsG3B24PNzKzpTiwrRR3z6ok46izuR\":3}}}"}

查詢共建者集合詳情

調用getCobuilders接口可以獲取包括發起者在內的所有共建者的認購份額和未分配區塊獎勵信息。

  • 共建者或發起者向共建合約轉移 0 BU 用于觸發共建合約;
  • 轉賬操作的 input 字段填入{ "method" : "getCobuilders"}}作為參數。
  • 調用getCobuilders接口時不需要指定參數。

  {"contract_address" : "buQo8w52g2nQgxnfKWovUUEFQzMCTX5TRpZD","code" : "","input" : "{\"method\": \"getCobuilders\"}","opt_type" : 2,"source_address" : ""}

查詢結果

  "result": {"type": "string","value": "{\"cobuilders\":{\"buQhqMoJziz27DdrS4DaFjeUSspxetAfvpzu\":{\"share\":1,\"pledged\":true,\"award\":\"0\"},\"buQmziFKwWTvJe5hBCFa6e3FdPDPorht3wCB\":{\"share\":2,\"pledged\":true,\"award\":\"0\"},\"buQnP4jueoC37fP2VxKpsZSTNjgFHpA442jy\":{\"share\":1,\"pledged\":true,\"award\":\"0\"},\"buQjxgZsG3B24PNzKzpTiwrRR3z6ok46izuR\":{\"share\":3,\"pledged\":true,\"award\":\"0\"},\"buQhtTjDmmquE4PTAKSzx4CqL7Z5LKLVG8SZ\":{\"share\":1,\"pledged\":false,\"award\":\"0\"},\"buQnr9bGeyv8f3nxwyhfHvQPNpnLbGVwHF64\":{\"share\":1,\"pledged\":false,\"award\":\"0\"},\"buQcP4FfV9REoHrpCyQmR3fvdkhGnN3Lwoa1\":{\"share\":1,\"pledged\":false,\"award\":\"0\"}}}"}

https://www.nshth.com/cplus/338908.html
>

相关文章:

  • github 免費節點
  • quantumult免費節點
  • wsdl哪個節點代表接口信息
  • 獲取元素節點尺寸和位置的接口
  • wsdl和xml加載的接口
  • 網絡節點是計算機與網絡的接口
  • 什么叫超級節點
  • openwrt怎么添加節點
  • github 免費節點,BUMO:超級節點共建接口
  • 學習html/css基礎的重點筆記
  • 企業郵箱怎么群發郵件,企業會員郵件群發解決方案
  • esfp光模塊,闡述一下ecshop各模塊的功能_【光電通信】40G QSFP+ LR4 光模塊的設計與實現(一)...
  • lua編程軟件,QQ郵箱記事本模塊Lua實現小結
  • centos7.6鏡像下載,centos(7.9) minikube(v1.28.0) kaniko 構建鏡像
  • 計算機畢業設計ssm企業部門報銷管理g9d62系統+程序+源碼+lw+遠程部署
  • 鮑森詹森實驗過程,Ornstein-Uhlenbeck過程
  • 嵌入式的發展趨勢,我理解的嵌入式幾個發展方向
  • 51開發板,IMX6ULL_PRO嵌入式開發板介紹
  • 嵌入式軟件工程師,2023屆秋招內推指南|嵌入式開發|軟硬件
  • 剛畢業的大學生適合做什么工作,今天我的就業班的生活開始啦~~~
  • C語言-基礎知識練習習題1
  • 什么監控攝像頭最清晰,計算機為什么找不到攝像頭,為何電腦里找不到攝像頭設備?
  • 網易支付登錄,微信登陸和支付
  • 人工智能自我進化,復雜性思維中文第二版 十一、進化
  • firebase,Firebase 教程: iOS A/B 測試
  • mongodb可視化管理工具,Impala入門筆記---比Hive強大
  • 世界只是一個程序,程序的世界里,短暫的放空
  • 如何用爬蟲爬取網頁上的數據,新聞爬蟲及爬取結果查詢網站的搭建(一)
  • 爬蟲網站,新聞網站爬蟲及結果查詢
  • 深度卷積神經網絡,深度KWeaver:價值驅動,認知智能走向開源共創
  • sci論文翻譯神器,SCI科技論文英語翻譯的一點個人心得
  • 協議的定義,連接跟蹤TCP協議狀態轉換
  • 洛谷 T284709 怨念(resent)
  • 1330 小青蛙跳臺階
  • 動態規劃解決小青蛙跳臺階問題
  • 代碼記錄丨小青蛙和漢諾塔
  • 小青蛙爬井
  • 【基礎】小青蛙回來了