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() // Dev
symbol permalink
DEVトークンのSymbolを取得します
- 引数
- なし
- 返り値
- トークンのSymbol
- トークンのSymbol
- 使用方法
const symbol = await clientDev.dev(addressDev).symbol() // DEV
decimals permalink
DEVトークンが使用する小数点以下の桁数を返します
- 引数
- なし
- 返り値
- トークンが使用する小数点以下の桁数
- トークンが使用する小数点以下の桁数
- 使用方法
const decimals = await clientDev.dev(addressDev).decimals() // 18
totalSupply 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はこちら