Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

week1_bbokka123(Hyoung Rok Kim) #13

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .DS_Store
Binary file not shown.
27 changes: 27 additions & 0 deletions week1_bbokka123.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
1주차 과제

# 1.
메타마스크 지갑을 만들면서 ... 궁금했던 것은
어떤 기준으로 지갑 주소가 생성되는 것이였습니다.

간단하게 봐서는 hash값인데 어떤 방식으로 hash되어있는지 찾아보았습니다.

각각의 코인마다 지갑주소 생성방식이 다른데 아래는 비트코인 지갑주소가 생성되는 방식입니다.

먼저 비트코인 주소는 공개키로부터 생성되는데 생성 알고리즘은 SHA와 RIPEMD입니다.

Address = RIPEMD160(SHA256(public_key))꼴로 나타내어집니다.
마지막에 거친 RIPEMD160의 160이 hash한 길이를 의미함으로 주소값은
160비트의 길이를 갖게 되겠죠. 이 후,Base58Check 인코딩을 통하여 사람이
읽을 수 있는 문자로 바꾸어 혼란을 방지한 상태로 사용자에게 제공합니다.

# 2.
해당 스왑의 경우 스마트 컨트랙트 방식으로 시행되기 때문에 거래소를 통한 특정 토큰
구입과는 다르게 직접 스마트컨트랙트를 실행함으로서 해당 토큰으로 교환이 이루어지고 해당 교환이
이루어지기 위해서 유동성을 제공하는 매체가 존재한다는 사실을 알게 되었습니다.

# 4.
시중은행에서의 대출과 다른점은 청산 임계값이 존재한다는 점이였습니다. 또한 대출금을 상환하기 위해
예금이 청산되는 것 또한 다른 점이였던 것 같습니다. 예치 측면에서는, 다른 사용자가 빌린 예금의 비율이
높을수록 이율이 높다는 것이 인상깊었는데 시중 은행의 이자율 같은 경우에는 정부 정책 및 은행의
재정 상황에 따라 정해지는 것으로 알고 있습니다.
1 change: 0 additions & 1 deletion week1_decentra1ized.md

This file was deleted.

52 changes: 52 additions & 0 deletions week3/myNFT.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.14;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

contract myNFT is ERC721, ERC721URIStorage, Ownable {
using Counters for Counters.Counter;

Counters.Counter private _tokenIdCounter;

mapping (address => uint) mintlimit;
constructor(string memory name, string memory symbol) ERC721(name, symbol) {}

function mintToken(address to, string memory uri) public onlyOwner {
_tokenIdCounter.increment();
uint256 tokenId = _tokenIdCounter.current();
_mint(to, tokenId);
_setTokenURI(tokenId, uri);
}

function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) {
super._burn(tokenId);
}

function tokenURI(uint256 tokenId)
public
view
override(ERC721, ERC721URIStorage)
returns (string memory)
{
return super.tokenURI(tokenId);
}

function itemMint(string memory uri) payable{
/// minting 횟수 1회 제한
require(mintlimit[msg.sender] <=1);
/// 호출자에게 token을 mint함.
mintToken(msg.sender, uri);
mintlimit[msg.sender]++;

/// itemMint 시 0.001 ether 만큼이 빠져나감.
balanceof(msg.sender) -= 0.001 ether;
/// owner의 지갑 주소로 이더 송금
payable(owner()).transfer(0.001 ether);



}
}