분산형 금융 앱
Motoko를 사용한 인터넷 컴퓨터를 프로그래밍
머니마켓 프로토콜은 기본적으로 사람들이 토큰을 빌려주고 빌릴 수 있게 하는 프로토콜이다.
예를 들어, 사람들은 에테르를 공급하고 약간의 이자를 벌 수 있게된다. 아니면 토큰을 빌릴 수도 있는데, 이를 체인링크 토큰이라고 한다. 그리고 토큰 가격이 대출금을 상환할 때쯤 내려갈 것이라고 예측하는 것이다.
컴파운드는 대출자들이 지불한 이자를 모으고 그 이자를 그 토큰의 대출자들에게 지불하는 동시에 서비스에 대한 약간의 수수료도 받는다.
이번 프로젝트에서는 토큰 잔액에 대한 이자를 얻기 위해 코드를 작성할 것이다.
프로그래머와 소프트웨어 개발자에게 인터넷 컴퓨터 블록체인은 dapp을 설계, 구축 및 배포하는 방법을 단순화하는 프레임워크 내에서 고유한 기능과 기회를 제공한다. 이 프레임워크의 핵심 부분은 새로운 범용 프로그래밍 언어인 Motoko이다.
actor개체와 클래스 를 사용하여 직접 프로그램을 정의하는 기능 .
async및 구문을 사용 await하여 비동기 메시징을 동기 처리인 것처럼 프로그래밍
메시지 직렬화 및 역직렬화에 대한 자동 지원
외부 데이터베이스나 스토리지 볼륨 없이 데이터 구조를 사용하여 직교 지속성을 활용
큰 정수 연산 및 오버플로 방지 지원
가능한 모든 입력에서 유형 오류 없이 실행할 수 있도록 각 프로그램을 정적으로 검사하는 사운드 유형 시스템
함수 추상화, 사용자 정의 유형 정의 및 사용자 정의 행위자를 지원
우리가 인터넷 컴퓨터에 배포하는 프로그램의 경우 유효한 프로그램은 Actors 및 async data 에서 논의하는 특정 구문(keyword)으로 도입 된 Actor 표현식 으로 구성되고, Motoko의 역할은 이러한 액터를 작성하기 쉽고 프로그래밍 방식으로 사용하기 쉽게 한 번 배포하는 것
:=
: 할당 작업 :=은 일반적이며 모든 유형에 대해 작동한다debug_show
: 큰 클래스를 type 의 값으로 변환하는 것을 허용위 코드를 작성 한 후 dfx start
> dfx deploy
순서로 실행해주면 아래와 같은 결과를 얻을 수 있따.
모토코에서는 함수를 생성하기 위해서 func
키워드를 사용한다.
dfx deploy
실행해주면 콘솔에 101이 출력된다.
이 경우는 블록 단위로 함수가 실행된 것이다.
그렇다면 이 함수를 외부에서도 사용하려면?
이를 위한 명령어는 아래와 같다.
dfx canister call [캐니스터 이름] [함수명] '([함수의 매개변수])'
대신 이 때는 외부에서의 접근을 허용하기 위해서 func
키워드 앞에 public
키워드를 추가해줘야 한다.
코드를 수정하고 재배포 후 위의 명령어를 실행하면 101이 출력된다.
Candid는 사용자가 캐니스터와 쉽게 상호작용하기 위한 서비스를 제공한다.
예를 들어 위처럼 함수를 실행하기 위해서 코드를 일일히 작성하지 않고 클릭 시 변수값이 +1이 되게 하려면 candid를 사용하면 되는 것이다. 즉, 터미널을 사용하는 대신 실제로 UI를 사용하여 상호 작용할 수 있게 되는 것이다.
candid 작성 방법은 아래와 같다
service counter : {
add : (nat) -> ();
subtract : (nat) -> ();
get : () -> (int) query;
subscribe : (func (int) -> ()) -> ();
}
Candid 인터페이스 설명 언어는 캐니스터의 서명을 지정하기 위한 공통 언어를 제공한다. 스마트 계약에서 제공하는 서비스의 유형 서명을 기반으로 Candid는 웹 인터페이스(Candid UI)를 제공하여 프론트엔드 코드를 작성하지 않고도 웹 브라우저에서 테스트 및 디버깅을 위한 캐니스터 기능을 호출할 수 있다.
Candid 웹 인터페이스를 사용하여 dbank
캐니스터를 테스트 해본다.
요기서 테스트할거다
dfx canister id [캐니스터 이름]
이제 그냥 call 버튼만 누르면 함수를 사용할 수 있게된다.
아래는 call 클릭 후 콘솔창의 출력이다.