This is a developing Astar Learning Repo.
No. | Name | Version |
---|---|---|
1 | yarn | 1.22.19 |
2 | Swanky | 2.1.2 |
3 | Node.js | 18.12.1 |
4 | cargo-contract | 2.2.1 |
5 | cargo | nightly-2023-02-07-aarch64-apple-darwin |
6 | !ink | 4.0.0 |
7 | rustc | 1.69.0-nightly |
-
モジュールのインストール
yarn
-
フロントエンド
yarn frontend:start
-
スマートコントラクトのコンパイル
※ swanky のコマンドの問題で 1 回目は、生成した wasm ファイルが読み込めないというエラーが出るので 2 回実行してください。
yarn compile:nft
yarn compile:content
より多くのエンジニアに、Astar Network と WASM コントラクトを理解・学習するきっかけを提供します!
AstarLearning は、気軽に WASM や Astar Network などブロックチェーン領域の技術について学べる教育系の Web3 プロダクトです。
ただ学習するだけではなく、用意したコンテンツに最後まで目を通して理解した学習者(ユーザー)には、NFT をミントするチャンスが与えられ、WASM 上で動作する NFT コントラクトの機能を使って学習歴の NFT を発行することができます。
ユーザーは、この Dapp に触れる一環で知識を得るだけでなく WASM コントラクトを利用した実装例を体感できるので、Dapp の実装イメージを膨らませることができます。
これにより一人でも多くのエンジニアに WASM Dapp の魅力を伝え、まだまだ少数である WASM コントラクト開発者を増やし、Polkadot エコシステムを盛り上げていくきっかけを増やすことを目的としています。
将来的には dapp staking への応募も視野に入れており、採択された場合にはその報酬をコンテンツ提供者に渡すようなアーキテクチャに進化させて行きたいと考えています。
この Learing Astar Dapp で解決しようとしている課題は下記 3 点です。
- まだまだ WASM コントラクト開発者が少数であること
- 気軽に WASM や Astar Network について学べるコンテンツが少ないこと
- WASM を利用した Dapp の実装例がまだまだ世に広く知れ渡っておらず、メリットなどが伝わりにくいこと
この課題を解決するために Astar Learning では次の機能を開発・提供することで課題解決に貢献します!
- 学習コンテンツを作成し、スマートコントラクト上に保管
- 良い学習コンテンツを作成してくれたユーザーには報酬を支払う
- 報酬の財源については現状はユーザーから少額の Astar を送るという仕組みだが、将来的には dapp staking に応募し採択されたここで得られる報酬から優良コンテンツ作成者に報酬を支払う
No. | 名称 | 概要 |
---|---|---|
1 | !ink | スマートコントラクト開発言語 |
2 | Next.js | フロントエンド開発フレームワーク |
3 | swanky | スマートコントラクト開発フレームワーク |
4 | TypeScript | フロントエンド開発言語 |
5 | NFTStorage | NFT 用のメタデータ保管ストレージ |
6 | Tailwind | フロントエンド用の CSS フレームワーク |
7 | Contract-UI | スマートコントラクトのデプロイ・検証のため |
- Shibuya Network
- Shiden Network
No. | コントラクト名 | Contract UI | ネットワーク |
---|---|---|---|
1 | Zswfvk6DnuRtFHSRa4J4Q5hFVSh1tFsenEF2y8pQ2AQxXAY | Zswfvk6DnuRtFHSRa4J4Q5hFVSh1tFsenEF2y8pQ2AQxXAY | Shibuya |
2 | ZvVKURvqWEF3hJEZWUYpprx9o1JuXxUVFyEfjHaodFzD9F3 | XVqUJZtMP5cAyJeFPE6coWtTnAno3KJsWeP2ByhH4Bt3nRH | Shibuya |
3 | WASM NFT | ZjCB8QVKytLmGRGXVCHCuUMnMiQTWU2V3696zqnQiD9kjMg | Shibuya |
4 | Astar NFT | a6WkJRaZcy6cVkvRQmRmd1TVhAc1Dfq3d7cmpGUjjn9736d | Shibuya |
5 | Shiden NFT | bezTq8fCqsG6X49e1KRmeVcatNWNaSHfNM218iHzFKPTxsk | Shibuya |
6 | WASM NFT | YT4pXMbzftUFcjwH1yMtpB9yvgkJMbYboPyRsCYSD7pgqMa | Shiden |
7 | Astar NFT | betwgtAMMVsLG3tZqDhUcQJ1TthvBkwowotAWyCGgcn9cgE | Shiden |
8 | Shiden NFT | XNvt8RqjUSd8CZy2dvHS9GhhWjDBEtrPaqxC7fDwMCSzBaY | Shiden |
9 | Content | av5MGBmkEMfKVfQerD1yjDBcQ1hkgu9GoaMN7DkeAMq4nyP | Shibuya |
今後は、WASM コントラクトの開発スキルを磨いて Dapp をバージョンさせたいと考えています。
query
mintToken
mintWithAttribute
psp34::allowance
psp34::approve
psp34::balanceOf
psp34::collectionId
psp34::ownerOf
psp34::totalSupply
psp34::transfer
psp34Burnable::burn
psp34Enumerable::ownersTokenByIndex
psp34Enumerable::tokenByIndex
psp34Metadata::getAttribute
// call _mint_to function
self._mint_to(Self::env().caller(), Id::U8(self.last_token_id));
// インクリメント
self.last_token_id += 1;
Ok(())
const { result, output } = await contract.query["psp34::balanceOf"](
address,
{ value: 0, gasLimit: gasLimit, storageDepositLimit },
address
);
- https://openbrush.io/
- psp34_contract
- psp34_frontend
- test code
- Use the Wizard to generate generic PSP34 code
- !ink Working with Mapping
- With inline price
- Upgradeable Contracts
- Sample Upgradeable Contracts
- sol2ink
- how-to-call-openbrush-contract-from-front-end-app
- react-markdown について
- zenn-editor
- stackedit
- 【Astar】EVM 上の資産を Native の資産に変換する方法
- CBridge
- 【!ink Docs】Using custom types on storage
- Micromodal.js
- タブやモーダルなど、よく見かけるフロントエンド UI コンポーネントの紹介と実装サンプル集
- TailwindCSS + Alpine.js でモーダルダイアログを作ろう
- React でいいねボタンを作ろう
- Arweave
- Summer-HackaDOT-2023
- Arweave Book
- Arweave Faucet
- Arweave Graphql playground
- Arweave Graphql playground2
- Aweave Sample App
- Get An Arweave Wallet
- Arweave GraphQL Guide
- HackaDot Summer 2023
- PoL
- Submit Summer-HackaDOT-2023
- 【npm】marked
- 【Canva】pitch Hackadot