addEventListener()

정의 : 객체에 이벤트를 추가해주는 메서드이다.

사용법 : 이벤트를실행할타겟.addEventListener('이벤트타입', 실행할함수)

예제) 
1. HTML파일 소스
<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>DOM에 접근하기</title>
	<title>이벤트 처리하기</title>
	<link rel="stylesheet" href="css/domevent.css">
</head>
<body>
	<div id="container">
		<img id="pic" src="images/girl.png" alt="">
	</div>

	<script src="js/domevent-result.js"></script>
</body>
</html>

2. JS파일 소스

var pic = document.querySelector('#pic'); //Html img태그를 가르킴(id가 pic이라서) 
pic.addEventListener("mouseover", changePic, false);
pic.addEventListener("mouseout", originPic, false); 
    
function changePic() {			
  pic.src = "images/boy.png";
}
function originPic() {
  pic.src = "images/girl.png";
}

설명 : pic에 이벤트가 두개가 추가되었다 하나는 마우스가 사진위로 올라갔을때 하나는 사진으로부터
마우스가 사라졌을때이다.
마우스가 올라가면 changePic함수가 실행되고 사라지면 originPic이 실행된다.

출처 : https://slidesplayer.org/slide/15071349/

innerText와 innerHTML의 차이점

element.innerText;

이 속성은 element 안의 text 값들만을 가져옵니다.

element.innerHTML;

innerText와는 달리 innerHTML은 element 안의 HTML이나 XML을 가져옵니다.

요약 : innerText는 element의 text값만 가져오고 innerHTML은 태그까지 가져온다!

getAttribute와 setAttribute

setAttribute : 특정 속성에 값을 변경하거나 새로 지정한다.

getAttribute : 특성 속성을 추출한다.

예제)
const elem = document.querySeletor(‘div’);
elem.setAttribute(‘Id’, wrap);

결과 값 : <div id=“wrap”></div>

elem.getAttribute(‘id’);

결과 값 : wrap

출처 : https://velog.io/@yangareum1818/JS-속성과-프로퍼티-setAttribute-getAttribute-비표준-속성-dataset

querySelectorAll와 querySelector

querySelectorAll

  • 지정된 셀렉터 그룹에 일치하는 도큐먼트의 element list를 나타낸다. 즉 NodeList를 반환한다. 지정된 셀렉터가 없는 경우에는 비어있는 NodeList로 반환된다.

querySelector

  • 지정된 선택자와 일치하는 도큐먼트의 첫 번째 element를 반환한다. 일치하는 요소가 없으면  null을 반환한다.
예제)
1. HTML
<div class="clock">
    <h1 class="title" id="clickEffect"></h1>
    </div>
    <form class="form">
      <input type="text" placeholder="What is your name?" />
    </form>
    <h4 class="greetings"></h4>
    <form class="toDoForm">
      <input type="text" placeholder="My tasks" />
    </form>
    <ul class="toDoList"></ul>

    <span class="js-weather"></span>
</div>

2.JS
const title = document.querySelector('#clickEffect');
const CLICKED_CLASS = 'clicked';

function handleClick() {
  title.classList.toggle(CLICKED_CLASS);
}

function init() {
	title.addEventListener('click', handleClick);
}

init();

설명 : title이라는 변수에는 id가 clickEffect인 태그

display와 visibility의 차이점

둘 다 none을 하면 화면에서 감추기가 된다. 하지만 display는 화면에 감추면 공간도 사라지는데 visibility는 공간이 그래로 있는다.

insertbefore()

  • 부모 노드에 자식 노드를 추가할 때 기준이 되는 노드를 지정하고 그 앞에 자식노드를 추가가능

removeChild()

  • 부모 노드에서 자식 노드를 삭제하는 함수 괄호 안에는 삭제하려는 자식 노드가 들어감

hasChildNodes()

  • 자식 노드가 있다면 true, 자식 노드가 없다면 false 반환해줌

childNodes()

  • 요소 노드뿐만 아니라 태그와 태그 사이의 줄 바꿈도 빈 텍스트 노드인 자식 노드로 인식함

getElementById() = id 선택자

  • id 속성 값은 한 문서 안에서 유일하기 때문에 자주 사용
예제)
<h1 id="heading">이름</h1>
document.getElementById("heading").onclick = function() {
	this.style.fontSize = "5em";
}

설명 : id가 heading인걸 클릭하면 글자크기를 5em으로 해라라는 의미입니다. 이 처럼 id를 선택해주는
메서드입니다.

폼과 BOM

  1. 폼(Form)
    • 폼 요소에 접근하는 방법은 id나 class 값을 이용하는 것은 같음
    • → id 값은 폼 요소 하나에만 접근하고,class 값은 폼의 여러 요소를 가져와 배열 형태로 저장
    • id나 class 속성이 없고 name 속성만 있어도 해당 요소에 접근 가능!
    • → 단, 이 방법을 사용하려면 <form> 태그에 name 속성이 지정되어 있어야 하고, <form> 태그 안에 포함된 폼 요소에서 name 속성이 있어야 함

NFT역사

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

  ⇒ ex) 500원 동전 (희귀 동전 vs 현재 동전)

⇒ 에르메스 버킨백, 롤렉스

⇒ 비트코인, 이더리움 전부다 (대체 가능 토큰)

  • 비트코인 2100만개 발행, 1BTC = 1억개 사토시(소단위)
  • Ordinals, BRC-20 → NFT로 만들고 있다.

NFT를 물어보면 대부분이 미술품을 생각하겠지만 결국은 토큰의 한 종류이다.

NFT → 여러가지 정보를 담을 수 있는 토큰(메타데이터, 이미지 링크, 발행번호, 발행자, 소유자, 거래 내역 등)

NFT → 이미지 링크 → 화면(디자인) → 예술품

NFT나오고 예술가 집단이 좋아했다.

 

이유

  • 교환 용이
  • 거래 시장이 명확
  • 대금을 받기 용이
  • 자신의 권리를 주장하기 편함
  • 거래가 일어날 떄 수수료 받을 수 있다.
    • 로열티가 5~10% 지불해줌

 

NFT가 커진 사전

 

2017년 Crypto Kitty(NFT 역사상 첫 성공)

→ 스마트 컨트렉트를 활용한 첫 번째 케이스

→ NFT의 이미지 메타데이터를 활용해서 '게임 요소'를 예술과 접목

→ 알 모양 → 민팅 플랫폼에 가스비를 지불하고 '거래'를 일으키면

→ 알에 뭐가 들어있는지 사람들이 궁금해 함

→ 부화하고 난 후 A고양이와 B고양이를 교배시킨다(Breed)

→ C고양이 NFT가 나옴

→ 사람들이 재밌어 함(Token A와 B를 넣으면 A, B는 소각(Burn)하고 C로 교환)

→ 이 후 Dapper Labs를 창업

→ NBA Top Shot(NFT)

→ Layer 1 체인 발표

 

2018년 Homer Pepe

→ 2017년 불장(Bullish)이후

→ 2018년 중국 블록체인 금지, 채굴 금지

→ 하락장

→ Meme(도지 등)

→ Homer Pepe

 

2021년 Solana NFT & 이더리움 NFT

→ BAYC(Board Apes Yaut Club) = 지루한 원숭이 요트 크럽(NFT 잘 아는 사람은 베이시라고 부름)

→ 투자자들이 지루하니 모여서 놀자라는 의미에서 만들어 짐(어린시절 하던 장난 치면서 놀자!)

→ 발행 3시간만에 완판

→ 그 당시에 한 개에 1ETH(1백만원) 지금은 엄청 올랐다

→ '세럽' 에어드랍 출시

→ 웹사이트가서 상호작용하기 시작함

→ MAYC에 사람들이 환호하기 시작함

→ 인기가 많아져 수천만원까지 나가기 시작함

→ 인기가 많아져 사업화하기 시작함 유가랩스(Yuga Labs) 5조원 이상(샌드박스, 비전펀드)

→ Otherside MMORPG(메타버스)

→ 퍼지펭귄 등등 탄생하기 시작함

→ 많아지기 시작하니 점점 NFT가 잡다한것이 발행되기 시작함

 

2022년 NFT 시장의 성장 = IP대국(이더리움 시장)

OpenSea 1등 거래소 (=유니스왑이 에어드랍으로 흔들리기 시작함 마치 예전 스시스왑이랑 비슷한 경우)

Trade to Earn (Trade 2 Earn) → Look rare x2y2 → 100% → 70%

 

2021년도 말에서 2022년 사이에 솔라나 NFT 시장(성장)

  1. OpenSea = 매직에덴 거래소, 솔라나 아트 거래소→ 5~10% : 예) 1천만원 50~100만원이 사라지는 구조
  2. → NFT 로열티 지불하지마라
  3. Yawww 0% 로열티 플랫폼→ DeGod 0% 로열티 지지→ 솔라나는 매지에덴에게 20%를 뺏김
    • Web3(추상적인 개념) : Web2 + Token 인센티브 → 사업 확장이 아닐까? 라는 생각을 해본다.
    • Web2 It Start-up : 투자금 유치 → 사용자 유치 → 마케팅 → 소비(우리들이 알고있는 일반적인 사이클)
    • Web3 Start-up : Token을 배분해서 사용자를 유치 → 투자금을 받을 수 있다.


      2022년 이더리움 패권전쟁
      → OpenSea 쫄리기 시작함… OpenSea의 쇄국정책
       Blur에서 에어드랍 선포! 페러다임이 자신들의 투자자라고 말하기 시작함 그래서 사람들이 기대함
      → 돈의 크기가 상당히 컸다.NFT(5ETH, 1400만원)
      → 6ETH를 이자로 줬음(이자를 더 받는 희한함..)블록체인 NFT → 게임요소 → 스토리 → IP가치가 증가
      • Yuga Labs → $4bn 5조원
      • Doodle → 9천억원
      블록체인 NFT 잘 큰거에 공통점이 있다.
      • 미국!!
      • 한국도 시도는 했었다 메타콩즈… 하지만 대표가 횡령… 등으로 인하여 사업은 망했다.
      2023년, 늦은 출발, 일본하지만 유일하게 살아남은 게 일본마에자와 유사쿠 → $300M 펀드 자금 조성 → 일본 청년, 창업가(블록체인)BAYC 50ETH(9천만원) → Blur → 8천만원 빌릴 수 있음리서치 시간→ 주제 : Milady
      • Milady는 무엇인지? 누가 만들었는지? 어떻게 성장했는지?
        • 밈을 주제로 한 코인
        • Charlotte Fang이 만들었다
        • pepe코인의 보유자에게 상환으로 Milady코인을 줌
      • NFT 기술을 어떤 목적으로 사용했는지?
        • 커뮤니티 관리나 팬 관리에 사용되었다.
      • 어떤 역사를 갖고 있는지?
        • 자유분방한 밈적 힘의 시대에서 Milady가 필요하다해서 밈에서 파생된 코인이라고 함(백색 알약의 토큰)
      • 이슈 거리는 무엇인지?
        • Elon Musk의 트윗에 올려 화제가 되어 거래량이 증가하였다.
        • 개발자가 친 나치 성향 논란
        • 개발자가 개발자가 악명높은 Miya 우파였다.
      • 살까 말까?
        • 개발자가 논란이 많아 도덕적으로는 안사는걸 추천한다(개인적으로)
        • 현재로서는 가격의 하향세가 뚜렷하며 잠깐 지나가는 유행으로 보여 안사는 걸 추천
        • 888,000,888,000,888 * price = 65,109,632,765
          • price는 대략 0.000073정도가 맞다. 지금 0.00009정도라 사면 손해를 볼 것 같아 말아야한다.
      팁 : 구글, 트위터, 일론머스크, NFTGO(언제시작했고 언제거래됬는지 알 수 있다.), Google News

      다음주 배울 거 : 소셜그래프

'블록체인' 카테고리의 다른 글

NFT에 대한 이해  (0) 2023.06.02
블록체인 개념 및 dApp  (0) 2023.05.18
4일차 블록체인 배운거 정리 + 토크노믹스  (2) 2023.05.11
블록체인 공부 3일차  (3) 2023.05.10
블록체인 2일차 정리 + 저번 주 요약  (2) 2023.05.08

배열

배열이란?

  • 배열이란 쉽게 말하면 창고(저장장소)라고 생각하면 된다.

배열 선언하는 방법은 2가지로 나눠진다.

  1. 리터널 방식으로 만들기
  2. Array 객체의 인스턴스로 만들기

예로 한번 살펴보자!

1. 리터널 방식
var numbers = ['one', 'two' , 'three'];
numbers 

결과값 : ['one', 'two' , 'three']

2. Array 객체의 인스턴스
var numbers = new Array("one", "two", "three");
number

결과값 : ["one", "two" , "three"]

배열 호출하는 방법

위의 예제를 재활용하여 설명하겠습니다.

var numbers = ['one', 'two' , 'three'];

numbers의 첫 번째 저장장소에는 'one'이 있습니다. 사람들이라면 그러면 1번쨰 저장장소에는 'one'이
있네요라고 할 겁니다.

하지만 컴퓨터는 첫 번째 장소라고 하지않고 0번째 저장장소라고한다. 이유는 컴퓨터가 0부터
숫자를 시작하기 때문이다.

고로 numbers 0번째는 'one'이 된다.

그러면 'three'는 몇 번째일까?
답은 numbers의 2번째가 'three'가 된다.

호출방법 : 변수명 [ 인덱스(저장위치) ]

var numbers = ['one', 'two' , 'three'];로 호출해보자

'one'을 호출할려고 하면 변수명 number이고 인덱스(저장위치)가 0번째이였으니 number[0]을 입력하면
'one'이 호출된다.

concat

concat

  • 기존의 배열에 또 다른 배열이나 값을 합쳐서 새로운 배열을 만드는 함수
  • 원본(원래 배열)을 건들이지 않는다!
var nums = ["1","2","3"];
var chars = ["a","b","c","d"];
nums.concat(chars);  //nums 배열에 chars 배열 연결

결과값 : ["1", "2", "3", "a", "b", "c", "d"]

join

join

  • 배열  요소를 연결해서 나열할 때 각 요소 사이에 넣을 구분 기호가 필요한데  join() 은 이 기호를 직접  지정할 수 있음
  • 원본(원래 배열)을 건들이지 않는다!

예)

var num = [1,2,3,4]; 
num.join('-');

결과값 : "1-2-3-4";

결과값처럼 배열의 요소 사이사이에 넣을 수 있다.

num.join('');

결과값 : "1234";

또한 요소없이도 붙일 수 있다.

push와 pop

push

  • push는 배열의 맨 끝에 새로운 요소를 추가하는 함수
  • 새 요소가 추가된 후의 배열 요소의 개수가 반환됨
  • concat( ), join( ) 과 다르게  원본(원래 배열)이 바뀜
var nums = ["1","2","3"]
nums.push("4") //nums 배열 맨 끝에 "4"와 "5"요소 추가
nums //호출

결과값 : ["1", "2", "3", "4"]

원본이 바뀌어 호출이 추가된 상태로 나옴

pop

  • pop은 배열의 맨 끝에 요소를 제거하는 함수
  • 맨 끝 요소가 제거된 후의 배열 요소의 개수가 반환됨
  • push와 같은 원본(원래 배열)이 바뀐다.
var nums = ["1", "2", "3", "4"]
nums.pop("4") //nums 배열 맨 끝에 "4"와 "5"요소 추가
nums //호출

결과값 : ["1","2","3"]

원본이 바뀌어 호출이 됨

unshift와 shift

unshift

  • 배열의 맨 앞 에 새로운 요소를 추가하는 함수
  • 새 요소가 추가된 후의 배열 요소의 개수가 반환됨
  • 원본(원래 배열)이 바뀐다.
var nums = ["1", "2", "3"]
nums.unshift("4") //nums 배열 맨 끝에 "4"와 "5"요소 추가
nums //호출

결과값 : ["4", "1", "2", "3"]

shift

  • 배열의 맨 앞 요소를 제거하는 함수
  • 맨 앞 요소가 제거된 후의 배열 요소의 개수가 반환됨
  • 원본(원래 배열)이 바뀐다.
var nums = ["4", "1", "2", "3"]
nums.shift("4") //nums 배열 맨 끝에 "4"와 "5"요소 추가
nums //호출

결과값 : ["1", "2", "3"]

splice, slice, substr

splice

  • splice는 배열의 중간 부분에 요소를 추가하거나 삭제할 때 사용
  • 한꺼번에 2개 이상의 요소 를 추가하거나 삭제할 때도 사용
  • 원본(원래 배열)이 바뀐다.
  1. 인수가  **** 1 개일 때
    • 괄호 안의 인수는 그 배열의 인덱스 값을 가리킨다. 이 때  인수가 가리키는 인덱스의 요소 ~ 배열의 끝 요소까지 삭제 함
var numbers = [0,1,2,3,4,5];
numbers.splice(2); //인덱스 2(세 번째 요소)부터 끝까지 삭제

결과값 : [2, 3, 4, 5]

numbers;

결과값 : [0, 1] //원본이 바뀐다.
  1. 인수가 2 개 일 때
    • splice(첫번째 인수 : 인덱스 값, 두번째 인수 :  삭제할 개수)
var study = ["html", "css", "web", "jQuery"];
study.splice(2,1);

결과값 : ["web"];

study

결과값 : ["html", "css", "jQuery"];
  1. 인수가 3개 이상일 때
    • splice(첫번째 인수 : 인덱스 값, 두번째 인수 :  삭제할 개수, 세번째 인수 : 앞서 삭제한 위치에 새로 추가할 요소를 지정)
study.splice(2, 1, "js");

결과값 : ["jQuery"]

study

결과값 : ["html", "css", "js"]
  • 기존 배열의 요소를 삭제하지 않고 새로운 요소 추가할 때는 삭제할 개수를 지정하는 두 번째 인수에 0을 입력
study.splice(2, 0, "jQuery")

결과값 : []

study

결과값 : ["html", "css", "jQuery", "js"]

slice

  • slice는 여러 개의 요소를 꺼낸다 ( 삭제 X)
  • 배열에서 요소를 꺼낸다는 점은 pop(), shift() 와 같음
  • 첫번째 인수 : 시작 인덱스 값, 두번째 인수 : 끝 인덱스 값 -1 ( 끝 인덱스 값의 직전 까지만 추출 )
  • 원래 배열은 변경되지 않음 =>  진짜 ' 추출 ' 만 함
var colors = ["red", "green", "blue", "white", "black"];
colors.slice(2);

결과값 : ["blue", "white", "black"]

colors

결과값 : ["red", "green", "blue", "white", "black"]

연습문제

위에 연습했던 colors 배열에서 “blue”와 “white”만 추출하려면 slice() 함수를 어떻게 지정해야 할까요

정답 : colors.slice(2,4);

결과값 : ['blue', 'white']

지금까지 배운거 정리

블록체인 기술에 대한 이해

블록체인이 뭐냐?

  • 2009년도, 분산원장(Ledger) ⇒ 블록체인 기술 분산원장 : 거래 정보를 기록한 원장을 특정 기관의 중앙화된 서버가 아닌 분산화된 네트워크에서 참여자들이 공동으로 기록 및 관리하는 기술

ex) 커피숖 주문 ⇒ 결제 ⇒ 장부 ⇒ 월, 분기, 반기, 연간 ⇒ 대차대조표, 손익계산서 갑자기 알바생이 돈을 훔칠려하고 알바생이 100만원을 누락 시킴 ⇒ 장부에서 지움 ⇒ 장부를 소수가 관리 ⇒ 위조(물리적으로 떨어져있고, 서로 모르는, 이해관계가 없는 장부를 대신 관리하면 안벌어졌다.) ⇒ 초, 분, 시간단위로 관리하다보면 위조하기가 힘들 것

  • 검증과 합의를 수십명이 하면 신용이 생긴다.(플랫폼 사업자, 중간자 제거, 중간자 = 은행) 대표적으로 금융업이 있다. ⇒ 금융업이 신뢰가 있는 이유는 국가가 관리 및 운영을 해주기 때문에 신뢰가 있다. 하지만 최근에 신뢰가 떨어진 사건이 있었다 ex) 리먼사태(금융위기), 실리콘밸리 은행 파산
  • 비트코인(Chain, 네트워크)의 예 비트코인 ⇒ 1 $BTC ⇒ A 전송 ⇒ 장부(분산원장 기술) ⇒ A가 1BTC ⇒ Data Availability(데이터 가용성 누구나 장부 열수 있다, 확인) ⇒ 거래완료

블록체인이 어떻게 작동하는거야?

  • 분산 원장 ⇒ Node 운영자(채굴자, Validator) ⇒ 합의 ⇒ 생선된 블록을 인정
  • Data Availability, Consensue, Settlement, Execution
  • 블록체인 작동 방법 (데이터 가용성, 합의, 세틀먼트, 실행)
  • 합의 방식의 2가지
    • PoW(Proof of Work) ⇒ 작업증명 방식 ⇒ 수 많은 노드들이 51퍼가 동의하면 됨 with 컴퓨터 파워
    • PoS(Proof of Staking) ⇒ 지분증명 방식 ⇒ 회사의 주식과 유사하다. ⇒ 즉 많은 코인을 갖고 있으면 더많은 의결권을 갖게된다.(시장 점유율이 높은 사람이 더 많은 의결권 참여 ⇒ 보상)

블록체인 트릴레마

  • 탈중앙화, 보안성, 확장성 ⇒ 탈중앙화가 High, 보안성 High, 확장성 Low (비트코인 맥시, Mximalist)⇒ 탈중앙화 Low, 보안성 Low, 확장성 High
  • —-—수용—-— *느리고, 어렵다*

Layer 2 (자동차 튜닝과 유사)

⇒ 비트코인과 이더리움을 비유하자면 비트코인은 금 이더리움은 은이다. 그렇다고 뭐가 더 좋다는 의미가 아니라 사용성으로 구분하였다.

  • 이더리움(블록체인 프로그래밍 가능케 하는 특징) ⇒ Pow → Pos(최근 Merge)
  • 블록체인 2가지 종류
    • 모노리스틱(Data Availability, Consensue, Settlement, Execution by 비트코인)
    • 모놀리틱(Data Availability, Consensue, Settlement, Execution by 여러명)
    • ⇒ 분업화 ⇒ 생산성이 높이려고 한다 (산업혁명과 유사) ⇒ 모노가 좋아 모놀이 좋아는 엄마가 좋아 아빠가 좋아를 묻는거와 같다. ⇒ 하지만 시장에서는 모놀리틱으로 가는 추세이다.
    • 모노리틱 ⇒ 이더리움 확장성을 개선 ⇒ Layer 2 ⇒ 아비트럼, 옵티미즘

한귀로 듣고 한귀로 흘려도 되는 이야기 ⇒ 밈 코인 사태, NFT를 비트코인 발행 ⇒ 비트코인 낙서로(예를 들면 페페그림) ⇒ 더 느려, 더 비싸다⇒ 거래비용 높아짐 ⇒ 버버버버거리기 시작함

Layer란?

Layer 0 ⇒ 인터넷(가장 중요함)

Layer 1 ⇒ 블록체인

Layer 2 ⇒ 확장성 개선(Zk, 옵티미스틱)

Layer 3 ⇒ dApp

  • 재미로 듣는 이야기 Zk : Zero Knowledge, 영지식 증명(전쟁때 이미 만들어진 기술이다.) ⇒ 이게 왜 중요한가 블록체인에서 쓸 수 있는 곳이 많다.
  • 개발자 아이디어 ⇒ Zk ⇒ Proof of Attack ⇒ 2023년 이더 덴버 Top5 아이디어

코인하고 토큰의 차이

  • 코인 : Layer 1이 발행한 디지털 자산 → PoS 합의 검증 위한 용도
  • 토큰 : Layer 2, Layer 3이 발행 → 서비스 개선, 사업 방향성
  • NFT(대체 불가 토큰) ex)아버지가 가지고있는 90년대 500원짜리 동전과 현대 500원짜리 동전과 같다. 특징 : 메타데이터, 희귀도, 몇 번째 발행, 누가 소유했는지 알수 있다.

탈중앙화 금융 (DeFi = Decentralized Finance) ←→ 중앙화 금융

  • 상품 4가지 : Stake 예치, Swap 스왑, Farm 파밍, Lend 랜딩
  • 2015년 이더리움 출시 후 2017년부터 창시
  • 탈중앙화 거래서(유니스왑), MakerDAO, Compound, Aave(아베)
  • 2017 → 2020 하반기 큰 성장 → Compound 토큰 에어드랍 → 내러티브 : 전통 금융산업을 대체 할 수 있다. → 2021년 상반기까지 150조원이 넘는 유동성
  • Smar Contract : 신용기반 기술, 중간자 없이 거래 가능케 함 예) 부동산
  • 2021년 하반기 : 거버넌스 토큰이 시장에 과다하게 출하(가격 하락) by 일론, 앙드레
  • 2021년 하반기 : 직업윤리 중요 → 개발자들이 Rug Pull(도망) with 고객 자금
  • 2022년 상반기 : NFT와 블록체인 게임(샌드박스, 비전펀드)
  • 2022년 5월 : 루나/테라 폭락 By 도권, 폰지 사기 구조, 앵커 프로토콜 19% 이자를 기업 수익에서 준게 아니라, 가지고 있는 보유금(누군가의 투자금)
  • 2022년 11월 : FTX by 쌤 (20대 포보스 선정 1위 부자) → 횡령 → 기업회생 → 직업윤리
  • 2023년? 상반기 선방 (비트코인 떡상 by 현생에서 문제 : 실리콘밸리 은행 파산) → 달러 못 믿겠다(신용추락) → 비트가 답이다~

토크노믹스 보는 법(해석)

→ 내 앱에서 어떤 경제를 갖고있는 토큰을 만들 것인가?(답이 정해져 있지 않다.)

ex) Yuliverse

  1. 서비스 성격 ⇒ 게임(롤플레잉) ⇒ 플레이어들이 토큰을 채굴할 수 있다.(퀘스트를 완료하면 → $ARG, $ART) ⇒ $ARG : 게임 콘텐츠를 이용하기 위한 토큰(유틸리티 토큰) ⇒ $ART : 상급 게임 콘텐츠를 이용하기 위함(거버넌스, 유틸리티 토큰) ⇒ $ART : 서비스의 가치를 반영하는 토큰 ⇒ 정의 : Yuliverse 서비스는 Dual Token 시스템(토큰끼리 상호 보완 구조이다.) ⇒
  2. 토큰의 배분/ 누구한테 할당 ⇒ 총 토큰의 양 : 8,000,000,000(80억개) ⇒ 배분되는 기간 : 5.5년 ⇒ 총 유통량 : 1,000,000,000 ART, 총 공급의 12.5% ⇒ 나머지 77.5%는 어떻게 분배? ⇒ 게임 콘텐츠를 통해서 채굴 30% ⇒ 투자자 15%
    • Seed 5%(고위험) : TGE 이후 1% 60일동안 4번의 걸쳐 배분하고 이후 4개월 후부터 12개월 동안 풀린다.
    • Private 5%(중위험)
    • Public 5%(저위험) : TGE 이후 1% 60일동안 4번의 걸쳐 배분하고 이후 6개월 후부터 12개월 동안 풀린다.
    • Private 5%(중위험) : TGE떄 100% ⇒ 내부자 20%
    • 어드바이저 5%는 TGE 이후 6대월부터 30개월 동안 풀린다.
    • 팁 : TGE 이후 6대월부터 30개월 동안 풀린다. ⇒ 생태계(비상금) 17.5%
  3. TGE 후 6개월 안에 얼마나 많은 토큰이 시장에 출하? ⇒ 8,000,000,000(80억개) * 7% = 56,000,000 * 가격($14) = $787,653,847

분석하기 알파카 파이낸스 정리하기

  1. 알파카 파이낸스가 어떤 서비스인가? ⇒ 레버러지 파밍 프로토콜 탈중앙화 거래소 → 개인 → 유동성 공급 → 이자 / 수익 → 파밍 유동성 공급 (바구니 : 사과와 바나나) → 바구니 크기가 커지면 교환이 용이 예) 사과1 : 바나나 1 ⇒ 10% 수익 벌잖아 대출 사과 혹은 바나나 ⇒ 사과 2 : 바나나 2 를 얻을 수 있어 ⇒ TVL 1조원 → 바이낸스 최대 거래소 상장 → 올해의 프로젝트
  2. 몇 종류의 토큰을 발행했는가? ⇒ $ Alpaca → 보상으로 위한 유틸리티 토큰, 사업 방향성에 투표 가능한 거버넌스 토큰 → 투표권x, 배당 o → Single Token 매커니즘
  3. 토큰 총 공급량이 얼마인가? ⇒ 1억 8천만개 (Hard Cap) ⇒ 16,400,000(개발 자금) + 8,000,000(새로운 기능 개발에 사용) + 163,600,000(팀 할당 9%포함) = 188,000,000개
  4. 토큰 사용처는 어떻게 되는가? ⇒ 보상, 투표
  5. 왜 가격이 하락했을까? ⇒ 21년도 디파이 상승 이후 하락 → 문제점을 찾음 → 토큰 투자자에게 프로토콜 수익 배분을 안한다. ⇒ 증권법 위반으로 못한다.
  6. 무엇이 문제일까? ⇒ 토큰 → 투표권 , 배당 줘야되! 싫어 하루 $300,000
  7. 알파카는 왜 디플레이션인가? ⇒ 토큰 소각을 자주 한다. 1억 8천만개 → 매주 총 공급량을 줄임 → Burn → 영구적으로 누구도 토큰을 꺼낼 수 없게 만들어요 → 공급은 줄고 수요는 늘어나니 가격은 올라간다!
  8. 결론 디파이는 공급 탄력성인 없고 수요 가격 탄력성이 있다. 그러니 위의 말(7번)은 틀렸다. 그러므로 투자자에게 매력적이지 않는다

알파카 파이랜스는 Fair Launch, 투자자 없이 토큰 발행한 프로젝트, 디파이 서비스(익명)를 했다.

토크노믹스는 트렌드를 쫒아간다. 그 당시의 맞는 토크노믹스를 쫒아가면 된다!

데이터 타입

출처 : https://boycoding.tistory.com/4

객체 모델링

  • 객체란?
  • 객체(Object) : 복합 자료형
    ⇒ 객체 안에 숫자, 문자열 등 여러가지 자료형이 포함되기 때문
    ⇒ 자바스크립트에서 객체는 자료를 저장하고 처리하는 기본 단위
    ⇒ 하나의 변수에 다양한 정보를 담기 위해 사용하는 자료형
        ex) 책(객체) - 제목, 이 책의 분야, 저자, 쪽수, 가격 출간일 등의 정보들이 들어있음
  • 자바스크립트 객체출처 : 
    • 사용자 정의 객체 : 사용자가 필요할 때마다 자신의 객체를 정의해서 사용하는 객체 ex) Car(), House(), Hotel()
    • 내장 객체 : 자바스크립트 프로그램 자체에서 정의하여 사용자에게 제공하는 객체 ex) Object(), Array(), Date()
      • 브라우저 객체 모델(BOM, Browser Object Model)
        - 웹 브라우저의 주소 표시줄이나 창 크기 등 웹 브라우저 정보를 객체로 다루는 것
        예)
        Navigator : 사용 중인 브라우저 종류나 버전을 담은 객체
        History : 브라우저에서 방문한 기록을 남기는 객체
        Location : 주소 표시줄 정보를 담고 있는 객체
        Screen : 화면 크기 정보가 들어있는 객체

      • 문서 객체 모델(DOM, Document Object Model)
        - 웹 문서 안에 포함된 이미지, 링크, 텍스트 필드 등도 모두 각 별도의 객체로 미리 존재함 예) Document, Image 등
      • 전역 자바스크립트 객체(Global Javascript Object)
        - 자바스크립 프로그램 전체에서 사용하는 내장 객체
  • 객체의 속성과 메서드
    • 속성(Property) : 객체에서 값을 담고 있는 정보
      - 내장 객체에도 만들어져 있음
      - 객체의 속성 값을 가져올 때는 객체 이름 뒤에 마침표(.)를 찍고 그 뒤에 속성명을 적음
    navigator.vendor
    => "Google Inc"
    
    • 메서드(Method) : 객체가 어떻게 동작할지 선언해 놓은 함수
      - 객체의 메서드를 사용할 때도 마침표(.)를 사용 예) window.alert("안녕하세요")
    • 프로토타입(Prototype) : 객체를 다루기 위한 기본틀
      예) Image 객체는 모든 웹 이미지가 공통으로 가지는 속성과 기능을 모아놓은 것
    • 인스턴스(Instance), 개별 객체 : 프로토타입을 사용해 만들어낸 객체
      - 예) 웹 문서에 3개의 이미지를 포함시켜야 한다면 Image 객체를 사용해서 똑같은 모양의 객체 3개를 찍어낸 다음 객체마다 원하는 이미지를 담는 것
      - 인스턴스 만들기
         객체를 똑같이 찍어 새 객체를 만들 때는 new 예약어 사용
          * new 예약어 뒤에 프로토타입 객체 이름과 괄호()를 써주면 됨

                  여기서 time은 Date 객체의 인스턴스 => Date 객체에서 정의한 속성과 함수를 모두 사용할 수 있음

  • 사용자 정의 객체 만들기
    • 리터널 표기법을 사용해 객체를 만드는 방법
    • 리터널(Literal) : 자료를 표기하는 방식 프로그래밍 언어 전체에서 사용하는 방식
      • 정해진 값을 가진 객체를 한 번만 만들어 냄 ⇒ 객체 틀을 만들지 않고 개별적으로 객체를 선언하고 사용하는 방법
      • 중괄호{}안에 '속성 이름 : 값'을 하나의 쌍으로 지정
      • 속성이 많다면 '속성명 : 값'마다 쉼표(,)를 넣어 구분
      • 함수 또한 '함수명 : function(){…}'로 정의
        ⇒ 객체를 정의해 변수에 할당할 때는 닫는 중괄호{} 다음에 세미클론(;)을 붙여줌
        예)

  • 생성자 함수 : 객체를 만들어 내는 함수
    • function 예약어를 사용
    • 생성자 함수 안에 객체의 속성과 함수를 정의할 때는 this 예약어 다음에 마침표와 속성명 입력 ⇒ this가 가르키는 것은 선언하고 있는 객체 자체
    • 객체의 속성은 객체에서 사용하는 변수
    • 객체의 함수는 해당 객체에서 사용하는 함수

 

노션에 정리한걸 옮기는데 잘 안옮겨지네요 ㅠㅠ

전역 변수와 지역 변수

전역 변수 : 함수 외부에서 선언된 변수

  • 장점 : 한 번 선언하면 전역적으로 다 쓸 수 있다.
  • 단점 : 프로그램이 종료될 때 까지 실행되기 때문에 메모리 낭비가 생긴다.

지역 변수 : 함수 내부에서 선언된 변수

  • 장점 : 메모리 낭비가 적다.
  • 단점 : 선언된 함수에서만 사용이 가능하다.

예제1.

var myVar = 100;
test();
document.write("myVar is " + myVar);

function test() { 			
	myVar = 50;
}

결과 값 : myVar is 50

설명 : 전역 변수 myVar는 100을 대입하였고 test함수가 호출하여 myVar에 50을 다시 대입하여 
myVar는 50으로 바뀌어서 결과 값 출력이 myVar is 50이 되었다.

예제2.

var myVar = 100;
test();
document.write("myVar is " + myVar);

function test() { 			
	var myVar = 50;
}

결과 값 : myVar is 100

설명 : 전역변수 var myVar = 100로 선언되었고 지역변수로 var myVar = 50게 선언되었다.
전역변수는 전역적으로 다 쓰지만 지역변수는 함수 안에서만 사용이 가능하다. 그러므러 밖에서 호출하여
결과 값이 myVar is 100이 된다.

+

var, let, const의 차이

  var let const
중복 o x x
재할당 o o x
스코프 함수레벨 블록레벨 블록레벨

함수

보통 함수란 자신의 외부(재귀 함수의 경우 스스로) 코드가 '호출'할 수 있는 하위 프로그램입니다. 프로그램과 마찬가지로, 함수 역시 명령문의 시퀀스로 구성된 함수 본문을 가집니다. 함수에 값을 '전달'하면, 함수는 값을 '반환'할 것입니다. 
출처: MDN 함수

함수 선언과 호출

1. 함수 선언

1-1 기본
function 함수명(매개 변수1, 매개 변수2, ...){
	실행 문장;
	return 반환값;
}

1-2 ES6 이후에 나온 선언법
const 함수명 => (매개 변수1, 매개 변수2, ...) { 
	실행 문장;
	return 반환값;
} 

2. 함수 호출
함수명(인자1, 인자2, ...);

ex)
1. 더하기 함수 선언
function plus(num1, num2){
	var sum = num1 + num2;
	return sum;
}

2. 더하기 함수 호출
plus(10, 20);

결과 값 : 30;

설명 
1. plus라는 선언된 함수에 num1(매개 변수1)이 10(인자1)을 받는다. 
2. num2(매개 변수2)가 20(인자2)를 받는다.
3. sum이라는 지역 변수가 num1 + num2를 하여 30이되고 결과값으로 반환하여 화면에 보여준다.

어제 복습 키워드

  1. 디파이
  2. 4가지 상품 : 예치, 대출, 환전, 파밍
  3. 수익률 ⇒ 비현실적 ⇒ 거래수수료 ⇒ 거버넌스 토큰(안정적인 가치, 시장 변동성)⇒ 해킹 ⇒ 고객 자금 횡령
  4. ⇒ 높은수익률 ⇒ 과다한 토큰을 발행 ⇒ 보상 ⇒ 큰 부채 ⇒ 시장 큰 하락
  5. 21년과 23년의 현재 비교?대표적인 예 : 이더리움이 PoW에서 PoS로 전환 ⇒ 32ETH + 네트워크 운영 능력예제출처 : https://twitter.com/0xProfessorJo/status/1652481862143705088이더리움ETH ⇒ LSD ⇒ stETH(예금증서) ⇒ 아이건레이어(미들웨어 서비스 제공자들을 대상으로 보안과 검증 서비스를 제공)미들웨어 서비스 검증 ⇒ 아이건레이어 stETH ⇒ 검증 ⇒ 서비스 사용료 ⇒ 예치자 ⇒ 추가 수익(2%)
    프로젝트 평가비교사례법 ⇒ 코인 ⇒ L2(옵티미즘, 아비트럼)ex) 10억 = Price * 2억 Price는 5$가 된다.⇒ 토큰을 누구한테 분배하고 어디에 사용할지 계획⇒ Private, Public, Ecosystem, Team token⇒ 투자자 토큰의 양매도하지 못하는 조건, TGE 시 20% 토큰을 받을 수 있는 계약 조건Value = Price * QuantityPrice 높아져야 하거든요 ⇒ 매수 ⇒ 토큰의 가격 $1 ⇒ $10 ⇒ 10배가 올랐다.
    1. 토큰(화폐) ⇒ 얼마나 발행될지
    2. 누구에게 귀속될지
    3. 누구에게 향후 배분할지
    4. 어디에 사용될지

    Axie Infinity (AXS) Tokenomics

    Learn more about Axie Infinity (AXS) tokenomics and view project details below
    • 11.00% is allocated to Public Sale
    • 4.00% is allocated to Private Sale
    • 29.00% is allocated to Staking Reward
    • 20.00% is allocated to Play to Earn
    • 7.00% is allocated to Advisors
    • 21.00% is allocated to Sky Mavis
    • 8.00% is allocated to Ecosystem Fund
    What is the supply schedule for Axie Infinity (AXS)?The initial token launch date for Axie Infinity (AXS) is 4 Nov 2020. The max supply of this token is capped at 270,000,000. Axie Infinity (AXS) supply is expected to be fully vested on April 2026.시계열에 따른 토큰의 분배량 확인우리가 알 수 있는 것 은 Value와 Quantity를 알 수 있기에 Price를 예측할 수 있다.Tokenomics = Token + EconomicsVesting : 거치기간Locked-up Period : 토큰을 판매 못하는 기간⇒ 토큰 발행 날짜 이후 1년간은 투자자들이 토큰을 배분 받지 못하고, 1년이 지난 이후에는 2년동안Seed Invastor : 가장 낮은 가치로 투자한 사람Public Invastor : TGE이후 판매된 물량 또는 TGE 동시에 판매된 물량21년도 급상승한 엑시인피니트는 무엇 일까?
    • 블록체인 게임 → Play to Earn
    • Play to Earn → 게임 플레이어가 게임을 하면서 토큰을 버는 구조
    • 21년도 초반 → 코로나 → 동남아시아
    • 코로나로 인해 관광없이 죽어서 게임을 통한 돈벌이에 집중하기 시작함 ⇒ 모든 국민이 함 ⇒ 스타트업 게임 유저 수 증가 ⇒ 투자사들도 대거 투자에 참여 ⇒ 사람들에게 알려지게 됨.
    • Play to Earn
    • 아이템(NFT)가 비쌈 ⇒ NFT가 부족해짐 ⇒ 부족해져서 가격이 상승함
    • 시장의 문제점을 해결하고자 하는 프로젝트를 시작함
    • YGG(게임 길드)가 만들어짐시간 O 시간X
    • 자본 X 자본O
    • 값싼 노동력 ——— 플랫폼 ——— 자본가
    • NFT를 빌려주고 게임을 플레이해서 수익을 공유하는 플랫폼을 만듬⇒ 블록체인 게임을 개발할 때 항상 고려해야되는 기능
    • ⇒ 게임 활성화, 길드 YGG ⇒ 100개 ⇒ 스콜라쉽(장학금)
    결론 : 왜 게임이 오래가지 않았을까?토큰 ⇒ 온 국민 ⇒ 무료블록체인 게임⇒ 이거 다음주자 예상 AAA게임이 나올 것이라 예상함, 3년 이상의 시간이 소요, 고사양⇒ 고사양 게임이 나와서 대박 날거라고 생각해 투자가 늘어났다(베트남, 필리핀 ⇒ 동남아시아에서 인기)⇒ 성공하지 못함, 미국 게임사 출시⇒ 바이낸스 토큰 상장⇒ 일본과 프랑스가 인기있는 이유는 런닝의 문화가 자리잡은 대표적인 나라여서
    블록체인 게임 리서치(오프체인 뉴스, 온체인 Dune을 참고하기)
    1. STEPN이 얼마나 많은 유저 확보를 했는지
    2. 얼마나 많은 수익을 벌었는지 (수익 = NFT 거래 수수료)
    3. 왜 하락했는지?
    4. 어떤 이슈가 있었는지
      디파이 4가지 상품 : 예치, 대출, 환전, 파밍
      수익률 ⇒ 비현실적 ⇒ 거래수수료 ⇒ 거버넌스 토큰(안정적인 가치, 시장 변동성)⇒ 해킹 ⇒ 고객 자금 횡령
      ⇒ 높은수익률 ⇒ 과다한 토큰을 발행 ⇒ 보상 ⇒ 큰 부채 ⇒ 시장 큰 하락
      21년과 23년의 현재 비교?대표적인 예 : 이더리움이 PoW에서 PoS로 전환 ⇒ 32ETH + 네트워크 운영 능력예제출처 : https://twitter.com/0xProfessorJo/status/1652481862143705088이더리움ETH ⇒ LSD ⇒ stETH(예금증서) ⇒ 아이건레이어(미들웨어 서비스 제공자들을 대상으로 보안과 검증 서비스를 제공)미들웨어 서비스 검증 ⇒ 아이건레이어 stETH ⇒ 검증 ⇒ 서비스 사용료 ⇒ 예치자 ⇒ 추가 수익(2%)
      프로젝트 평가비교사례법 ⇒ 코인 ⇒ L2(옵티미즘, 아비트럼)ex) 10억 = Price * 2억 Price는 5$가 된다.⇒ 토큰을 누구한테 분배하고 어디에 사용할지 계획⇒ Private, Public, Ecosystem, Team token⇒ 투자자 토큰의 양매도하지 못하는 조건, TGE 시 20% 토큰을 받을 수 있는 계약 조건Value = Price * QuantityPrice 높아져야 하거든요 ⇒ 매수 ⇒ 토큰의 가격 $1 ⇒ $10 ⇒ 10배가 올랐다.
      1. 토큰(화폐) ⇒ 얼마나 발행될지
      2. 누구에게 귀속될지
      3. 누구에게 향후 배분할지
      4. 어디에 사용될지

      Axie Infinity (AXS) Tokenomics

      Learn more about Axie Infinity (AXS) tokenomics and view project details below
      • 11.00% is allocated to Public Sale
      • 4.00% is allocated to Private Sale
      • 29.00% is allocated to Staking Reward
      • 20.00% is allocated to Play to Earn
      • 7.00% is allocated to Advisors
      • 21.00% is allocated to Sky Mavis
      • 8.00% is allocated to Ecosystem Fund
      What is the supply schedule for Axie Infinity (AXS)?The initial token launch date for Axie Infinity (AXS) is 4 Nov 2020. The max supply of this token is capped at 270,000,000. Axie Infinity (AXS) supply is expected to be fully vested on April 2026.시계열에 따른 토큰의 분배량 확인우리가 알 수 있는 것 은 Value와 Quantity를 알 수 있기에 Price를 예측할 수 있다.Tokenomics = Token + EconomicsVesting : 거치기간Locked-up Period : 토큰을 판매 못하는 기간⇒ 토큰 발행 날짜 이후 1년간은 투자자들이 토큰을 배분 받지 못하고, 1년이 지난 이후에는 2년동안Seed Invastor : 가장 낮은 가치로 투자한 사람Public Invastor : TGE이후 판매된 물량 또는 TGE 동시에 판매된 물량21년도 급상승한 엑시인피니트는 무엇 일까?
      • 블록체인 게임 → Play to Earn
      • Play to Earn → 게임 플레이어가 게임을 하면서 토큰을 버는 구조
      • 21년도 초반 → 코로나 → 동남아시아
      • 코로나로 인해 관광없이 죽어서 게임을 통한 돈벌이에 집중하기 시작함 ⇒ 모든 국민이 함 ⇒ 스타트업 게임 유저 수 증가 ⇒ 투자사들도 대거 투자에 참여 ⇒ 사람들에게 알려지게 됨.
      • Play to Earn
      • 아이템(NFT)가 비쌈 ⇒ NFT가 부족해짐 ⇒ 부족해져서 가격이 상승함
      • 시장의 문제점을 해결하고자 하는 프로젝트를 시작함
      • YGG(게임 길드)가 만들어짐시간 O 시간X
      • 자본 X 자본O
      • 값싼 노동력 ——— 플랫폼 ——— 자본가
      • NFT를 빌려주고 게임을 플레이해서 수익을 공유하는 플랫폼을 만듬⇒ 블록체인 게임을 개발할 때 항상 고려해야되는 기능
      • ⇒ 게임 활성화, 길드 YGG ⇒ 100개 ⇒ 스콜라쉽(장학금)
      결론 : 왜 게임이 오래가지 않았을까?
      토큰 ⇒ 온 국민 ⇒ 무료블록체인 게임
      ⇒ 이거 다음주자 예상 AAA게임이 나올 것이라 예상함, 3년 이상의 시간이 소요, 고사양
      ⇒ 고사양 게임이 나와서 대박 날거라고 생각해 투자가 늘어났다(베트남, 필리핀
      ⇒ 동남아시아에서 인기)⇒ 성공하지 못함, 미국 게임사 출시⇒ 바이낸스 토큰 상장
      ⇒ 일본과 프랑스가 인기있는 이유는 런닝의 문화가 자리잡은 대표적인 나라여서
      블록체인 게임 리서치(오프체인 뉴스, 온체인 Dune을 참고하기)
      1. STEPN이 얼마나 많은 유저 확보를 했는지
      2. 얼마나 많은 수익을 벌었는지 (수익 = NFT 거래 수수료)
      3. 왜 하락했는지?
      4. 어떤 이슈가 있었는지

+ Recent posts