dev-kit-jsの使い方#1
dev-kit-jsの使い方 #1
はじめに permalink
今回から数回にわたり、Dev Protocolで用意されているライブラリ dev-kit-js の使い方を紹介していきます。今回はDevトークンまわりの使い方を紹介します
dev-kit-jsとは permalink
dev-kitは、Dev Protocolの機能をJavaScript(TypeScript)から利用するためのライブラリになります
インストール permalink
npm i -D @devprotocol/dev-kit使い方 permalink
dev-kit-js のクライアントの作成
dev-kit-js を使うためには、contractFactoryを実行してクライアントを作成する必要があります。contractFactoryにはProviderが必要で、Providerはweb3jsから取得することができます
import Web3 from "web3/dist/web3.min"
const provider = new Web3(window.ethereum)
const clientDev = contractFactory(provider.currentProvider)Tips
web3をpure jsで使う場合は、dist/web3.min.jsからImportします
クライアントを作成したら、以下のように使うことができます
const balanceOfDEV = await clientDev.dev(addressDEV).balanceOf(addressWallet)用意されている関数 permalink
用意されている関数をカテゴリ別にすると、以下の12個のカテゴリが用意されています
- allocator
- dev
- lockup
- market
- metrics
- policy
- policyFactory
- policyGroup
- property
- propertyFactory
- registry
- withdraw
Devトークンに関連する関数の使い方 permalink
はじめに permalink
用意されている関数の中のdev は、DEVトークンに関連する関数が揃っています。
はじめにdev を使うためにはDEVトークンのAddressを引数として渡す必要があります。
DEVトークンのAddressは以下のように取得できます
import {addresses, contractFactory} from "@devprotocol/dev-kit"
const registryContract = clientDev.registry(addresses.eth.main.registry)
const addressDEV = await registryContract.token()Ropsten環境のAddressが欲しい場合は以下のように変更します
const registryContract = clientDev.registry(addresses.eth.ropsten.registry)
const addressDEV = await registryContract.token()name permalink
DEVトークンの名前を取得します
- 引数
- なし
- 返り値
- トークンの名前
- トークンの名前
- 使用方法
const name = await clientDev.dev(addressDev).name() // Devsymbol permalink
DEVトークンのSymbolを取得します
- 引数
- なし
- 返り値
- トークンのSymbol
- トークンのSymbol
- 使用方法
const symbol = await clientDev.dev(addressDev).symbol() // DEVdecimals permalink
DEVトークンが使用する小数点以下の桁数を返します
- 引数
- なし
- 返り値
- トークンが使用する小数点以下の桁数
- トークンが使用する小数点以下の桁数
- 使用方法
const decimals = await clientDev.dev(addressDev).decimals() // 18totalSupply permalink
発行済DEVトークン数を返します
- 引数
- なし
- 返り値
- 発行済DEVトークン数
- 発行済DEVトークン数
- 使用方法
const totalSupply = await clientDev.dev(addressDev).totalSupply()balanceOf permalink
指定したアドレスのDEVトークン残高を取得します
- 引数
- ウォレットアドレス
- 返り値
- DEVトークン残高
- DEVトークン残高
- 使用方法
const balanceOfDEV = await clientDev.dev(addressDev).balanceOf(ウォレットアドレス)Tips
balanceOfなどで取得したDEVトークン(ERC20)は、18桁分を小数点以下と定義されています。そのため、取得した値を18桁分繰り下げた値がDEVトークンの値となります。また、18桁の数値をJavaScriptで扱うとオーバーフローしてしまいます。そのため、ライブラリを使用して扱うようにします。
import {BigNumber} from "@ethersproject/bignumber"
const decimalNumber = Math.pow(10, decimals).toString() // 1000000000000000000
const dev = BigNumber.from(balanceOf).div(decimalNumber).toString()transfer permalink
DevトークンをAに転送します
- 引数
- 転送先のウォレットアドレス
- 転送するDEVトークン数
- 返り値
- 成否
- 成否
- 使用方法
const decimalNumber = Math.pow(10, decimals).toString()
const transferDev = BigNumber.from(転送するDEVトークン数).mul(decimalNumber).toString()
const transfer = await clientDev.dev(address).transfer(転送先のアドレス, transferDev)approve permalink
DEVトークンを指定したアドレスから転送することを許可します
- 引数
- 転送を許可するウォレットアドレス
- 転送するDEVトークン数
- 返り値
- 成否
- 成否
- 使用方法
const decimalNumber = Math.pow(10, decimals).toString()
const approveDev = BigNumber.from(転送するDEVトークン数).mul(decimalNumber).toString()
const approve = await clientDev.dev(addressDev).approve(転送を許可するアドレス, approveDev)allowance permalink
approveされたDEVトークンを引き出せる量を返します
- 引数
- 転送を許可したウォレットアドレス
- 転送を許可されたウォレットアドレス
- 返り値
- 転送可能なDevトークン
- 転送可能なDevトークン
- 使用方法
const allowance = await clientDev.dev(addressDev).allowance(転送を許可したウォレットアドレス, 転送を許可されたウォレットアドレス)transferFrom permalink
approveされたDEVトークンを引き出す
- 引数
- 転送を許可したウォレットアドレス
- 転送を許可されたウォレットアドレス
- 転送する量
- 返り値
- 成否
- 成否
- 使用方法
const decimalNumber = Math.pow(10, decimals).toString()
const transferDev = BigNumber.from(転送する量).mul(decimalNumber).toString()
const transferFrom = await clientDev.dev(address).transferFrom(転送を許可したウォレットアドレス, 転送を許可されたウォレットアドレス, transferDev)deposit permalink
Devトークンをプロパティにステーキングする
- 引数
- ステーキングするプロパティのアドレス
- ステーキングするDev数
- 返り値
- 成否
- 成否
- 使用方法
const decimalNumber = Math.pow(10, decimals).toString()
const stakingDev = BigNumber.from(ステーキングするDev数).mul(decimalNumber).toString()
const staking = await clientDev.dev(address).deposit(ステーキングするプロパティのアドレス, stakingDev)contract permalink
web3jsのContractのインスタンスを返します
- 引数
- なし
- 返り値
- web3jsのContract
- 使用方法
const contract = await clientDev.dev(address).contract()
// web3jsのContractを使用できます
// https://web3js.readthedocs.io/en/v1.2.11/web3-eth-contract.html
contract.defaultBlock()まとめ permalink
dev-kit-js の dev 関数では、ERC20で定義されている関数が用意されている他、 dev-kit-js で用意しているdeposit関数などがあります。deposit関数を利用するとプログラムを使ってDevのステーキングができるようになり、Stakes SocialのようなDappを作ることもできるようになります。また、ステーキングを解除する関数 Lockup.withdraw や、クリエイター報酬を引き出す関数 withdraw.withdraw も用意されており次の機会に紹介したいと思います。
🌈 この記事はお役に立ちましたか?
今後より良いコンテンツをお届けしていくために、ぜひご質問やフィードバックなどいただけると幸いです🌱
▶ フォーラムはこちら
- Dev Protocol は全てOSSとして公開しています。ぜひIssueやPRを送ってください📢 時にバウンティがあります。
▶ Dev ProtocolのGitHubはこちら
- Dev Protocol の改善提案(DIP)プロセスも公開されています。ぜひコメントをお待ちしています🌟
▶ DIPはこちら