Blockchain code Metaverse VR

Crypto×VR×SmartContract(371)

スポンサーリンク

//tips

//基本情報理解

プロバイダ責任制限法とは、webページや電子掲示板など「不特定の者によって受信されることを目的とした電気通信の送信」で個人の権利の侵害があった場合に、プロバイダの損害賠償責任の制限、被害を受けた者が発信者情報の開示を請求する権利を定めた法律。

請負契約とは注文元から仕事を請け負って自社の従業員によって仕事を行う契約方式。業務委託を受けたB社の従業員がB社の指揮命令を受けるのではなく、発注元のA社の指揮命令を受けて作業させると偽装請負となる。

//crypto

マルチシグMultisig とは、トランザクションの署名に複数の秘密鍵を必要とするセキュリティ向上技術のこと。

必要な署名の数は2/3のように分数で表され、トランザクションを完了させるためには、事前に作られた3つの秘密鍵の内、2 つの鍵での署名が必要となる。

もし、一つの鍵を紛失してもほかの鍵で署名可能となるなどのメリットも別途ある。

ただ、手間や送金にかかる費用が加算されるというデメリットもある。

エスクローエージェント(仲介者)は買手から一時的にお金を預かり、商品が届かない場合にはお金の返金が行われます。この仕組みを「エスクロー」と呼びます。

このマルチシグを活用し、公正な第三者を取引に噛ませるエスクローを行うことができる。任意の仲介人を1人おいて2of3のマルチシグを使うことで、売り手、買い手、第三者が秘密鍵を持つことになるので、購入商品到着後に署名をしないケースや商品の返済を受け付けないケースなどに公正な第三者が介入することができる。

//smart contract

さらにtestを実行。

it("Should return token names and symbols correctly",async()=>{
expect(await dai.name()).to.equal("Dai");
//dai.nameを読んだ後Daiになるかチェック
expect(await link.symbol()).to.equal("LINK");
});

it("Should have correct total supply",async()=>{
expect(await comp.totalSupply()).to.bignumber.equal(toWei(10**4));
//compのトータルサプライをチェック
//toweiをインポート
//chaiはビッグナンバーサポートはデフォではしていないのでto.bignumber.

});

こうするとトータルサプライ部分で下記エラーが発生。

1) Contract: ERC20 token test
Should have correct total supply:
TypeError: Cannot read property 'totalSupply' of undefined
at Context.<anonymous> (test/erc20.test.js:41:27)
at processTicksAndRejections (internal/process/task_queues.js:88:5)

そういえばcompではなく、linkで設定を行なったのでそちらに変えたら、きちんと通った。

it("Should have correct total supply",async()=>{
expect(await link.totalSupply()).to.bignumber.equal(toWei(10**6));
});

今度はきちんと失敗することを確認するテストも追加する。

it("Should return token names and symbols correctly",async()=>{
expect(await dai.name()).to.equal("Dai");
//dai.nameを読んだ後Daiになるかチェック
expect(await link.symbol()).to.equal("LINK");
//expectはchaiの関数
});

it("Should have correct total supply",async()=>{
expect(await link.totalSupply()).to.bignumber.equal(toWei(10**6));
//compのトータルサプライをチェック
//toweiをインポート
//chaiはビッグナンバーサポートはデフォではしていないのでto.bignumber.

});
//きちんと失敗することを確認するテスト
it("Should revert when transfer amount>balance",async()=>{
const ownerBalance=await link.balanceOf(owner);
const transferAmount=ownerBalance.add(new BN(1));
//バランスより1多いので必ず失敗しなければおかしい
await truffleAssert.reverts(link.transfer(alice,transferAmount));
//chaiには失敗することを確認する関数はないのでtruffleの関数を使用している
});

Itが多くなるとどれがどのテストか混乱するのでカテゴリー分けを行う。

describe("Supply",()=>{

it("Should return token names and symbols correctly",async()=>{
expect(await dai.name()).to.equal("Dai");
//dai.nameを読んだ後Daiになるかチェック
expect(await link.symbol()).to.equal("LINK");
//expectはchaiの関数
});
});

このように記載するとSupplyというカテゴリーのテストだとわかるようにターミナル表示が行われる。

Contract: ERC20 token test
✓ Should have correct total supply
✓ Should revert when transfer amount>balance (448ms)
Supply
✓ Should return token names and symbols correctly (39ms)

ここからはフロントエンドに実装に移る。

人気の記事

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.