Solidity 샘플 코드: 간단한 도서관 시스템
코드
libraryContract.sol
pragma solidity ^0.4.25;
contract LibraryContract {
struct Book {
string title;
bool isBorrowed;
address holder;
}
Book[] bookCollection;
function addBook(string _title) public {
bookCollection.push(Book(_title, false, address(0)));
}
function borrowBook(uint _index) public {
require(!bookCollection[_index].isBorrowed);
bookCollection[_index].isBorrowed = true;
bookCollection[_index].holder = msg.sender;
}
function returnBook(uint _index) public {
require(bookCollection[_index].isBorrowed);
require(bookCollection[_index].holder == msg.sender);
bookCollection[_index].isBorrowed = false;
bookCollection[_index].holder = address(0);
}
function getBookHolder(uint _index) public view returns (address) {
require(bookCollection[_index].isBorrowed);
return bookCollection[_index].holder;
}
function isBookAvailable(uint _index) public view returns (bool) {
return !bookCollection[_index].isBorrowed;
}
}
이 코드는 간단한 도서관 시스템. 책을 추가하고, 빌리거나, 반환할 수 있습니다.
시작과 도서 (책) 구조
pragma solidity ^0.4.25;
contract LibraryContract {
struct Book {
string title;
bool isBorrowed;
address holder;
}
Book[] bookCollection;
...
}
첫 번째 줄에 Solidity 버전을 넣습니다. 다음 줄부터 끝까지 스마트 계약은 "LibraryContract"로 묶입니다. 다음으로 'Book'이라는 struct에서 Book object란 무엇인가를 정의하고 있습니다. 'title'이라는 변수에 책 제목이 포함되어 있습니다. 누군가가 책을 빌리면 'isBorrowed'라는 변수는 true입니다. 'holder'라는 변수에 책의 임차인이 포함되어 있습니다. 그리고 "bookCollection"이라는 책 동위 열이 있습니다.
책을 덧붙여 빌려서 돌려줄게
pragma solidity ^0.4.25;
contract LibraryContract {
...
function addBook(string _title) public {
bookCollection.push(Book(_title, false, address(0)));
}
function borrowBook(uint _index) public {
require(!bookCollection[_index].isBorrowed);
bookCollection[_index].isBorrowed = true;
bookCollection[_index].holder = msg.sender;
}
function returnBook(uint _index) public {
require(bookCollection[_index].isBorrowed);
require(bookCollection[_index].holder == msg.sender);
bookCollection[_index].isBorrowed = false;
bookCollection[_index].holder = address(0);
}
...
}
첫 번째 함수에서 책을 추가할 수 있습니다. 다음 함수로 책을 빌릴 수 있습니다. 마지막 함수로 책을 반환할 수 있습니다. 책을 빌릴 수 있는지 반환할 수 있는지 확인합니다.
보충
pragma solidity ^0.4.25;
contract LibraryContract {
...
function getBookHolder(uint _index) public view returns (address) {
require(bookCollection[_index].isBorrowed);
return bookCollection[_index].holder;
}
function isBookAvailable(uint _index) public view returns (bool) {
return !bookCollection[_index].isBorrowed;
}
}
이 보충의 함수는 "책의 임차인은 누구입니까?"와 "이 책을 빌릴 수 있습니까?"라는 질문에 대답합니다.
EthFiddle 에서 이 코드를 볼 수도 있습니다.
Reference
이 문제에 관하여(Solidity 샘플 코드: 간단한 도서관 시스템), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sbenemerito/items/f90ecc71df870811085c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)