Blockchain code Metaverse VR

Crypto×VR×SmartContract(365)

スポンサーリンク

//tips

//基本情報理解

システム監査基準では、監査手続きを実施するときに適用する技法ウォークスルー法があるが、これは、データの生成から入力、処理、出力、活用までのプロセス、及び組み込まれているコントロールをシステム監査人が書面上でまたは実際に追跡するというもの。

システム監査人はシステム監査のまとめとして監査報告書を作成し、監査の依頼者に提出する。監査の結論には指摘事項のほかに改善勧告を記載し、改善の実施状況をフォローアップする。助言・指導まで行えるが非監査部門の責任者への指示や要因追加などの具体的な施策は要求できない。

//pitch deck

企業の物流支出の改善を行う7bridgesのpitchを確認。9枚のシンプルなスライドで、企業が抱える物流の問題点とそれに対する対策が書かれ、その結果どのように改善されるかまで示されていた。製品・サービスデモの掲載や1ページの情報量の整理をされれば、もっとわかりやすかったかもしれない。問題と解決策、その結果という流れは王道でインパクトがある。

//smart contract

先にトークンに組み込まれるERC20のコードを記載してきたが、今度はDex側のコードを書いていく。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "./ERC20.sol";

contract Dex{

event buy(address acount,address _tokenAddr,uint256 _cost,uint256 _amount);
event sell(address acount,address _tokenAddr,uint256 _cost,uint256 _amount);

mapping(address=>bool)public supportedTokenAddr;

//関数修飾子を使いsellにもbuyにも簡単に対応する
modifier supportsToken(address _tokenAddr){
//サポートされているトークンかどうか
require(supportedTokenAddr[_tokenAddr]==true,"not supported");
_;
}

//使用できるトークンの絞り込み
constructor(address[] memory _tokenAddr){
//対応しているトークンアドレスをtrueにする
for(uint i=0;i<_tokenAddr.length;i++){
supportedTokenAddr[_tokenAddr[i]]=true;
}

}

function buyToken(address _tokenAddr,uint256 _cost,uint256 _amount)external payable supportsToken(_tokenAddr){
//自分のパソコンにある外部の関数を利用する際にはinterfaceを使わずともimportで代替可能
//トークンのインスタンスの作成
ERC20 token=ERC20(_tokenAddr);
//正しくコストが支払われているかの確認
require(msg.value==_cost,"insufficient");
//トークンが残っていることを確認
require(token.balanceOf(address(this))>=_amount,"Token sold out");
//トークン送付
token.transfer(msg.sender, _amount);
emit buy(msg.sender,_tokenAddr,_cost,_amount);
}
function sellToken(address _tokenAddr,uint256 _cost,uint256 _amount)external supportsToken(_tokenAddr){
ERC20 token=ERC20(_tokenAddr);
require(token.balanceOf(msg.sender)>=_cost,"insufficient");

//このコントラクトにethがあるかどうかの確認
require(address(this).balance>=_amount,"not enough funds");

token.transferFrom(msg.sender,address(this), _cost);

(bool success,)=payable(msg.sender).call{value: _amount}("");
require(success,"ETH transfer failed");

emit sell(msg.sender, _tokenAddr, _cost, _amount);

}
}
無事にかきおわり、ターミナルにてtruffle compileを行ったが問題なく通った。
Contractの中にjsonができていたが、こちらはフロントエンドとコミュニケーションする際に使うよう。

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HACKER , 2021 All Rights Reserved Powered by AFFINGER5.