본문 바로가기
etc/블록체인 뉴딜일자리사업

자바스크립트 기초: 디데이 계산, 배열 / NFT 역사

by vellahw 2023. 5. 12.

 

💭 서론

교육 8일차

오전은 자바스크립트 Date 객체와 배열 객체의 함수들에 대해 들었다. 디데이 계산기를 만들고 명확히 개념이 잡히진 않았던 split(), splice() 등을 실습해보며 재미있게 들었다. 오후는 NFT 위주로 들었는데 NFT에 비관적이지만 관심은 있는 입장으로서,, 흥미로웠다! 

 

 


자바스크립트 기초

 

✔️ Date 객체

[ 날짜, 시간 정보를 가져오는 함수 ]

* getMonth()

월 정보를 가져온다.

1월부터 12월을 0~11의 숫자로 표현한다.  (0:1월, 1:2월)

따라서 1월부터 나오게끔 작성하려면 +1을 해주어야한다.

//예시
var now = new Date();
now.getMonth() + 1;

 

* getDay()

요일 정보를 가져온다.

일요일부터 토요일을 0부터 6의 숫자로 표현한다. (일요일: 0, 월요일: 1)

일요일부터 요일이 시작되기 때문에 정확한 요일을 뽑으려면 +1을 해주어야한다.

//예시
var now = new Date();
now.getMonth() + 1;

 

📎 기념길 계산기 만들기

let now = new Date();
let startDay = new Date('2022-10-21'); 
let toNow = now.getTime(); //오늘 날짜를 밀리초로 바꿈
let toFirst = startDay.getTime(); //시작 날짜를 밀리초로 바꿈
let passedTime = toNow - toFirst; //만난지 며칠인지 밀리초로
let passedDay = Math.round(passedTime/(1000*24*60*60)) + 1;
//1000(밀리초)*24(시간)*60(분)*60(초): 하루(1일) 계산식 / Math.round: 반올림
// +1한 이유: 오늘부터 1일 기능

document.getElementById('accent').innerHTML = passedDay + '일';

function dayCalc(dDay) {
    let targetTime = toFirst + dDay * (1000*24*60*60);

    let target = new Date(targetTime);
    let year = target.getFullYear();
    let month = target.getMonth() + 1;
    let date = target.getDate() - 1; //오늘부터 1일로 인한..

    document.getElementById('date' + dDay).innerHTML 
        = year + '년 ' + month + '월 ' + date + '일';
}

dayCalc(100);
dayCalc(200);
dayCalc(366); //1주년
dayCalc(500);

▲ js

  • getTime()을 사용하여 밀리초 기준으로 날짜를 계산한다.
  • 밀리초는 1/1000 단위이기 때문에 하루 계산 공식에서 1000을 곱해줌
  • Math.round()는 반올림하여 정수로 바꾸기 위해 사용

💬 +1, -1, 366에 대한

현재 TheDayBefore 어플을 사용하고 있어서 결과가 똑같이 나오나 코딩하면서 비교해봤는데 결과가 하루씩 적게 나왔었다. 만난지 며칠이나 됐는지에 대한 날짜를 셀 때 보통 첫날을 1일로 정하기 때문에(오늘부터 1일 ㅎ) 코드에 변화를 줬어야 했다. 그래서 며칠이나 됐는지를 계산할 때 1을 빼주었고, 디데이를 계산하는 함수에서 date 계산 또한 1을 빼주었다.

 

완성 모습

 

 

 

✔️ 배열

//배열 생성
let seasons = ['봄', '여름', '가을', '겨울']

//반복문으로 출력하기
for(i=0; i<seasons.length; i++) {
    console.log(seasons[i]); //[i] 인덱스
}

출력 결과

 

👀 배열 합치기 - concat 함수

let seasons2 = ['spring', 'summer', 'autumn', 'winter']
seasons.concat(seasons2) //seansons 배열에 seasons2 배열 합치기

concat 함수는 배열을 연결한다.

 

하지만 사진과 같이 seansons와 seasons2를 다시 한 번 찍어보면 각 배열이 변경되지는 않았다.

concat은 기존의 배열에는 영향을 주지 않는 함수이다.

 

 

👀 배열 연결하기 - join 함수

배열 요소 사이에 구분 기호를 넣어 연결해준다.

join 함수도 concat과 같이 기존의 배열에는 영향을 주지 않는 함수이다.

 

 

👀 배열에 요소 추가하기 - push(), unshift()

- push(): 배열의 맨 뒤에 요소를 추가한다.

 

- unshift(): 배열의 맨 앞에 요소를 추가한다.

 

변수 출력 결과를 보면 알 수 있듯, push와 unshift는 기존 배열에 영향을 주는 함수이다.

 

👀 배열에 요소 삭제하기 - pop(), shift()

- push(): 배열의 맨 마지막 요소를 삭제한다.

 

- shift(): 배열의 맨 앞 요소를 삭제한다.

 

👀 배열에 요소를 추가하거나 삭제하는 함수 splice()

- splice(a): a 번째 인덱스 요소 이전의 요소들을 모두 삭제한다.

두 번째 인덱스인 2 이전의 0과 1이 지워진 것을 확인

 

 - splice(a, b): a 번째 인덱스에서 b개 요소를 삭제한다.

두 번째 인덱스인 6에서 첫 번째 요소(?)인 7이 삭제된 것을 확인

 

- splice(a, b, c): a 번째 인덱스에서부터 b개를 삭제하고 c를 추가한다.

2번째 인덱스 2에서부터 1개를 삭제하고 (해당 인덱스 포함) 99를 배열에 추가한다.

요소가 추가시 삭제된 요소의 위치에서부터 추가된다.

 

💡 두 번째 인수가 0일 경우엔 삭제되지 않고 요소 추가만 됨

세 번째 인덱스 34 다음에 365가 추가됨

 

 

👀 원하는 위치의 요소들을 추출하는 slice() 함수

[ 인수가 하나일 때 ]

2번째 인덱스인 34부터 12까지 추출

 

[ 인수가 두 개일 때 ]

* 끝 인덱스 직전 값까지만 추출해옴

=> 1번째 인덱스부터 55부터 6까지만 추출

 

 

 

 


블록체인 이론

✔️ NFT 역사

🪙 NFT(Non-Fungible Token) : 대체 불가 토큰

  • 희귀 동전, 에르메스 버킨백, 롤렉스 등.. 생긴건 똑같아도 대체할 수 없는, 시간에 따라 가치가 달라지는 토큰

 

- 비트코인, 이더리움은 Fungible Token

   이더리움은 왜 대체 가능한가? 모든 소유자의 이더리움 토큰 똑같은 가치를 가짐 (2만1천개 발행되었는데 가치 = 1 BTC)

 

NFT를 검색하면 그림이 많이 나오는 만큼 NFT=예술품이라고 생각할 수 있지만 토큰 종류 중 하나일 뿐이다. 

NFT에 메타데이터, 이미지 링크, 발행 번호, 발행자, 소유자, 거래 내역 등의 여러가지 정보를 담을 수 있다. NFT 안에 이미지 링크를 넣었기 때문에 화면 디자인이 된 것 => 그림들!!

 

예술인 집단이 NFT를 이용하기에 교환이 용이하고 거래 시장이 명확했다. 또한 대금을 받기 용이하고 자신의 권리를 주장하기 편했다. 거래가 일어날 때 수수료(5~10% 정도의 로열티)도 받을 수 있음. 

예술인들은 작품을 전시하기 위해 전시장을 계약해야하고, 판매층이 불특정 다수이기 때문에 수익을 얻기 어려웠기에 NFT가 좋은 비즈니스로 주목 받을 수 있었던 것

 

* 수수료, NFT 로열티는 2차 거래시 거래가의 일정 비율을 창작자에게 꾸준히 지급하는 것으로 창작자가 NFT 민팅(발행) 당시 5~10%의 수수료를 설정한다. 이러한 로열티 체계로 NFT를 통한 지속적인 수익 창출을 가능하게 만들어 효과적인 시장 유인책으로 작용해 NFT 생태계 활성화에 이바지했다는 평가를 받았다고 한다. (출처)

 

 

NFT가 커지게 된 사건 2017년 Crypto Kitty 😺

스마트 컨트랙트를 활용한 첫 번째 케이스였다. NFT에 이미지 메타데이터를 활용해 게임 요소를 예술과 접목함.

원래 NFT는 알🥚 모양의 형태였는데 민팅(minting) 플랫폼에 가스비를 지불하고 거래를 일으키면 알에 뭐가 들어있는지 보임 ==> 가챠 시스템과 비슷해서 인기를 끌었다. 또한 토큰 A와 토큰 B를 넣으면(교배st) A와 B는 소각(burn)되고 토큰 C로 교환되어서 사람들이 재미있어하게 된! 

 

이후 Dapper Labs의 NBA Top Shot - NBA 명장면을 갖다 팜 => 상업적인 성공과 Layer 1 체인을 발표..

그리고 2018년 중국이 블록체인 기술과 코인 채굴을 금지 시키고 하락장이 시작되었는데 이때 밈 meme 코인이 등장했다.

 

2021년 Bored Ape(BAYC, 베이스)의 등장 🐵

채굴도 못하는데 놀자! 화장실 꾸미기 같은 걸 내놓음 게임 같고 꾸미기 놀이 같아 대박이 남.. 발행 3시간만에 완판

 

BAYC Bathroom

 

'세럼 Serum'이란 것도 등장..

내가 가진 원숭이랑 세럼을 합치면 저렇게 변하네? => 사람들의 흥미를 끌어 갖고 싶어하는 사람이 늘고 대박이 나고.. 근데 여전히 비싸다

 

이후도 여러 NFT가 나왔는데 그로인해 시장이 잡다해졌다.

 

2022 NFT 시장의 성장 (이더리움 시장)

NFT 시장의 대명사와 같은 OpenSea (거래소임)

위협요소가 등장했는데 에어드랍(기존 암호화폐 소유자들에게 무상으로 코인을 배분하여 지급하는 행위)으로 OpenSea를 이겨먹었다. 결국 OpenSea의 시장 점유율이 100%에서 70% 정도로 줄게 됨

 

2021년 후반~ 2022 솔라나 NFT 시장

이더리움은 가스비가 비싸고 트랜잭션이 무거웠는데 솔라나 시장은 속도가 빠름 솔라나 거래소 매직에덴의 시장점유율이 높아졌었다.

 

NFT는 처음에 예술가 지원 형태?의 투자가 많았다. 수수료를 NFT 작가가 가져가는 것을 당연하게 여기고 거리낌 없었는데 솔라나 시장을 이기기 위한 NFT 로열티 지불하지 말라는 슬로건이 등장했고 제로 로열티 지지가 늘어남

  • 선택적 제로 로열티를 도입한 플랫폼 X2Y2
  • 0% 로열티를 주장한 플랫폼 Yawww

선택적 로열티를 한다고해서 실제로 선택적으로 로열티를 지불하는 사람은 극 소수에 불과한데 로열티는 예술인들의 소중한 수입원인만큼 NFT의  거래소가 팁 지불을 장려해야만.. => 플랫폼 Blur는 크리에이터 로열티를 지불한 사람에게 에어드랍으로 토큰을 제공(관련 기사)

 

2023년 일본의 늦은 출발

마에자와 유사쿠 - NFT 게임에 투자함

 

 

💻 리서치 실습

주제: Milady

1. Milady는 무엇이며 누가 만들었는가?

Remilia라는 익명 집단의 프로젝트이고 Milady Sonora Sprite가 그렸고 Charlotte Fang이 디자인했다.

이더리움 블록체인이며 

밈적 특성 가지고 있음

 

2. 어떤 역사를 갖고 있는가?

일론 머스크가 트위터에 사진을 올리고 가격 급등

2021년 1만개 출시되었는데 완판까지 8개월 걸림(망한 케이스)

출시 됐을 땐 0.05ETH였지만 2023년엔 1.5ETH를 시작으로 50배가 뜀

23/05/12 기준 4.05ETH

 

BAYC를 이겨버린..

 

3. 이슈 거리는 무엇?

나치 관련 단어가 써진 티셔츠를 입은 아바타가 나온 적이 있다. 또한 Milady NFT의 최상위 등급이 'SS'(나치 관련 로고)임

Remilia가 현재는 없어진 Kaliacc이라는 백인 우월주의 집단과 연결되어 있다는 의혹 제기됨

디자이너 Fang이 Miya라는 의혹. Miya는 인종차별과 동성애 혐오 관련 글을 많이 개시했으며 어린 여자아이들을 그루밍한 혐의를 받고 있으며 자살까지 이르게 했다는 의혹을 받은 사람

근데 미국의 일베 같은 사이트에서 Fang을 지지하며 구매해서 가격이 상승하게 됨..

 

4. 살까, 말까?

도덕적으로 별루..

 

 

 

💭 마치며

강사님께서 프로젝트 리서치하는 습관을 들이면 좋다고 하셨는데 흥미롭기도 하고 시장을 파악하는 데 많은 도움이 될 것 같다. BAYC 리서치를 도즈언 해볼까싶다!!


 

댓글