LoginSignup
1
0

More than 5 years have passed since last update.

図書館のスマートコントラクト

Last updated at Posted at 2018-10-15

図書館のスマートコントラクト

このスマートコントラクトは本をアップデートして、付けることができます。そして本の使用可能をたしかめることができます。

qiita.solc
pragma solidity ^0.4.18;

このコードはsolidityのバージョン用です。

qiita.solc
struct Book {
    uint id;
    string bookTitle;
    bool isBorrowed;
    address borrower;
  }

Bookストラクトを作りました。
Bookの識別子はidです。
Bookのborrowerは契約の所有者です。

qiita.solc
mapping (uint => Book) public book;
uint incrementBookId;

uintを本にマップしました。そしてBookのidをインクリメントします。

qiita.solc
function addBook(string _bookTitle) public {
    incrementBookId++;
    book[incrementBookId] = Book(incrementBookId, _bookTitle, false,  address(0));
  }

この関数は本を付けることができています。

qiita.solc
function borrowBook(uint _bookId) public {
    require(book[_bookId].isBorrowed == false);
    book[_bookId] = Book(incrementBookId, book[_bookId].bookTitle, true, msg.sender);
  }

この関数は本のステータスをfalseに変更する。本のステータスがfalseの場合は、trueに変更します。msg.senderも契約の所有者です。

qiita.solc
function returnBook(uint _bookId) public {
    require(book[_bookId].isBorrowed == true);
    book[_bookId] = Book(incrementBookId, book[_bookId].bookTitle, false, msg.sender);
  }

この関数は本のステータスをtrueに変更する。本のステータスがtrueの場合は、falseに変更します。

qiita.solc
function checkBookStatus(uint _bookId) public view returns(bool) {
    return book[_bookId].isBorrowed;
  }

この関数は書籍のステータスを確認しています。そして、trueとfalseに変更します。

qiita.solc
pragma solidity ^0.4.18;
contract LibraryContract {

  struct Book {
    uint id;
    string bookTitle;
    bool isBorrowed;
    address borrower;
  }

  mapping (uint => Book) public book;

  uint incrementBookId;

  function addBook(string _bookTitle) public {
    incrementBookId++;
    book[incrementBookId] = Book(incrementBookId, _bookTitle, false,  address(0));
  }

  function borrowBook(uint _bookId) public {
    require(book[_bookId].isBorrowed == false);
    book[_bookId] = Book(incrementBookId, book[_bookId].bookTitle, true, msg.sender);
  }

  function returnBook(uint _bookId) public {
    require(book[_bookId].isBorrowed == true);
    book[_bookId] = Book(incrementBookId, book[_bookId].bookTitle, false, msg.sender);
  }

  function checkBookStatus(uint _bookId) public view returns(bool) {
    return book[_bookId].isBorrowed;
  }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0