USDC Yield With Cover Built InQuicknode Earn now runs USDC yield with cover for protocol risk built in, underwritten by OpenCover. Six covered vaults on Base.
閱讀公告運用 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