您的 USDC 正以昨天的利率產生收益Quicknode 會自動將其移至今日最佳的 Morpho 錢庫中。目前已在 7 條區塊鏈上上線。
制定您的策略運用 Kyber Network 進行開發
Kyber Protocol 將代幣庫存與價格資料上鏈,從而讓開發者能夠在不增加任何技術或安全負擔的情況下,直接將價值交換功能嵌入其智慧合約中。

2019年5月22日 — 閱讀時間 5 分鐘

市面上有數不盡的代幣,但它們都致力於追求最大的流動性和實用性。舉例來說,如果你持有代幣「X」,那麼你只能在「X」平台上使用這個代幣。這限制了代幣的使用範圍! Kyber 網路透過建立代幣儲備來解決這個問題,讓您能夠即時兌換代幣。因此,現在如果某個網站接受 DAI 作為支付方式,但您手邊只有 OMG,您仍可使用 OMG 付款,系統會即時將其兌換成 DAI。
Kyber Protocol 將代幣庫存與價格資料上鏈,從而讓開發者能夠在不增加任何技術或安全負擔的情況下,直接將價值交換功能嵌入其智慧合約中。
這使得以下情況成為可能:
即時確認
操作確定性(不存在交易風險、結算不確定性或交易對手風險)
來自全球且種類繁多的代幣組合
我們將逐步演示 Kyber Network 工作坊的示範內容,並透過 Kyber Network 的智慧合約進行代幣兌換。
設定:
sudo npm install -g ganache-cli
安裝 Truffle
sudo npm install -g truffle@latest
複製儲存庫:
git clone https://github.com/KyberNetwork/workshop.git
儲存庫概覽
讓我們來看看儲存庫裡有哪些內容:
config— Kyber 合約用於「遷移」的設定檔。這些設定檔是合約部署後所使用的參數。
合約— Kyber Network 的合約、範例,以及一些用於測試目的的模擬代幣與合約。
範例— 這是本教學中將持續使用的關鍵目錄。其中包含 Kyber 網路的範例。
Truffle— 此處包含一個 JS 檔案,我們可以透過 truffle-cli 或在 Truffle 專案中使用它。
Web3 — 此處包含一般的 JS 檔案,您可以透過 節點 指令
Solidity— 一份以 Solidity 編寫的合約,我們將在 Truffle 控制台中使用它。
遷移— 包含用於設定和部署 Kyber Network 合約的遷移腳本。

Kyber Network 的設定與合約遷移:
接下來,我們將設定 Kyber Network 的合約。
我們將使用預先定義的助記詞,因此無需為合約和錢包設定地址。執行以下指令以啟動 Ganache:
ganache-cli --accounts 10 --defaultBalanceEther 1000 --mnemonic '手勢 順從 影片 清醒 真誠 耐心 基礎 很快 鸚鵡 生氣 休息室' --networkId 5777 --debug
執行遷移:
開始之前,我們需要部署所有合約。為此,我們需要執行遷移指令:
truffle migrate --network development
這需要一些時間……
我們使用的是預先定義的助記符,因此您將獲得與下方定義相同的位址:

執行 Truffle 範例:
讓我們來執行 truffle 目錄中的一個範例。
truffle exec examples/truffle/getExpectedRate.js
這將為我們提供匯率,但會使用不同設定的代幣。
執行 Web3 範例:
讓我們再來查詢一次匯率——不過這次,我們將使用 Node.js。
cd examples/web3node getExpectedRate.js
使用 Solidity 合約進行代幣兌換:
現在,讓我們透過與 Kyber 網路合約互動來交換代幣。
我們將用 KNC(Kyber Network Token)兌換 OMG(OmiseGO Token)。
請記住,您也可以透過 Web3 和 Truffle 的範例來執行相同操作,但使用 Truffle 控制台執行測試會更加簡單且具互動性。那麼,讓我們來安裝 Truffle 控制台:
松露控制台
我們的用戶地址是 0x47a793D7D0AA5727095c3Fe132a6c1A46804c8D2 — 這個我們之後還會用到,所以先把它賦值給一個變數吧:
let userWallet = '0x47a793D7D0AA5727095c3Fe132a6c1A46804c8D2'
我們的 Solidity 資料夾中有一份 Trade.sol 檔案,它能協助我們進行代幣兌換。您可以查看該合約的程式碼:examples > solidity > Trade.sol。
現在,我們需要取得該合約的實例:
let tradeInstance = await Trade.at(Trade.address)
接下來,由於我們即將將 KNC 兌換為 OMG,讓我們先取得這兩份合約的實例。您可以在以下位置找到這些代幣合約:合約 → 模擬代幣 . 這些是模擬的 ERC20 代幣。在正式環境中,您需要這些代幣在MainNet上的實際合約地址。
let kncInstance = await KyberNetworkCrystal.at(KyberNetworkCrystal.address) let omgInstance = await OmiseGo.at(OmiseGo.address) 現在,讓我們取得每個代幣的餘額: let kycBalance1 = (await kncInstance.balanceOf(userWallet)).toString() let omgBalance1 = (await omgInstance.balanceOf(userWallet)).toString()
您可以執行以下指令來查詢這些餘額:
kycBalance1 omgBalance1
現在,我們需要授予「Trade」合約批准權限,以便從我們的合約中提取代幣:
await kncInstance.approve(tradeInstance.address , web3.utils.toWei('100000'), {from : userWallet})現在我們可以交換代幣了!讓我們來看看 Trade.sol 方法,我們將用它來交換代幣:
function execSwap( ERC20 srcToken, uint srcQty, ERC20 destToken, address destAddress, uint maxDestAmount)
這裡,
srcToken— 來源代幣合約地址
srcQty— 來源代幣的數量
destToken— 目標代幣合約地址
destAddress— 將交換後的代幣發送至的地址
maxDestAmount— 用於接收兌換後代幣的地址
那麼,我們就據此呼叫這個方法吧:
tradeInstance.execSwap(kncInstance.address, web3.utils.toWei("100") , omgInstance.address,userWallet, web3.utils.toWei("1000000"), {from: userWallet})如果您已按照本教學指引操作至此,即表示您已成功透過 Kyber Network 協議交換了兩種代幣!
讓我們再次確認我們的代幣餘額:
let kycBalance2 = (await kncInstance.balanceOf(userWallet)).toString() let omgBalance2 = (await omgInstance.balanceOf(userWallet)).toString() kycBalance2 omgBalance2
您將會看到餘額的變化。以下是上述教學的示範影片。
若您遇到任何問題,可在此查閱相關資訊,或於 Kyber 網路的Telegram 群組中提問。Kyber 還提供詳盡的文件說明。那麼,您還在等什麼呢?快將您的 Dapp 與 Kyber 網路整合吧!
需要專案協助或有任何疑問嗎?請透過此表單、TwitterQuicknode 或在Discord 上聯絡我們!
Quicknode 成立於 2017 年,為開發者與企業Quicknode 機構級的區塊鏈基礎設施。憑藉 99.99% 的正常運行時間以及對 80 多條區塊鏈的支持,各團隊得以在無需妥協的情況下,開發並擴展鏈上應用程式。
將最新的工程見解、產品更新及 Web3 新聞直接送至您的收件匣。
已通過 SOC 2 Type II 認證 · ISO 27001