메타트레이더 4란 ?

마지막 업데이트: 2022년 1월 9일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
참고 : send 를 호출할 때 gas 와 gasPrice 를 선택적으로 지정할 수 있다. .send(< from: userAccount, gas: 3000000 >) 와 같이 말이다. 만약 지정하지 않는다면, 메타마스크는 사용자가 이 값들을 선택할 수 있도록 할 것이다.

Cryptozombies[lesson6]

lesson5 에서 좀비 DApp 이 완성되었고 이제는 사용자들이 상호작용 할 수 있는 기본적인 웹 페이지를 만들 것이다. 이를 만들기 위해, 이더리움 재단에서 만든 자바스크립트 라이브러리인 Web3.js 를 사용할 것이다.

Web3.js 란?

이더리움 네트워크는 노드로 구성되어 있고, 메타트레이더 4란 ? 각 노드는 블록체인의 복사본을 가지고 있다. 누구든 스마트 컨트랙트의 함수를 실행하고자 한다면, 이 노드들 중 하나의 질의를 보내 아래 내용을 전달해야 한다 :

  1. 스마트 컨트랙트 주소
  2. 실행하고자 하는 함수, 그리고
  3. 그 함수에 전달하고자 하는 변수들

이더리움 노드들은 JSON-RPC 라고 불리는 언어로만 소통할 수 있고, 이는 사람이 읽기는 불편하다. 컨트랙트의 함수를 실행하고 싶다고 질의를 보내는 것은 다음과 같이 생겼다 :

다행히도 Web3.js 는 이런 골치 아픈 질의를 몰라도 된다. 편리하고 쉽게 읽을 수 있는 자바스크립트 인터페이스로 상호작용을 하면 되는 것이다.

위의 질의문을 작성할 필요 없이, 코드에서 함수를 호출하는 것은 다음과 같을 것이다 :

프로젝트의 작업 흐름에 맞춰, 프로젝트에서 가장 많이 사용하는 패키지 도구를 써서 Web3.js 를 추가할 수 있다 :

2. Web3 프로바이더(Provider)

우리의 프로젝트에 Web3.js 를 넣었으니 이제 이를 초기화하고 블록체인과 대화를 해보도록 하자.

우리가 처음 필요로 하는 것은 Web3 프로바이더(Provider) 이다.

이더리움은 똑같은 데이터의 복사본을 공유하는 노드 들로 구성되어 있다. Web3.js 에서 Web3 프로바이더 를 설정하는 것은 우리 코드에 읽기와 쓰기를 처리할 때 어떤 노드와 통신을 해야 하는지 설정하는 것이다. 이는 전통적인 웹 앱에서 API 호출을 위해 원격 웹 서버의 URL 을 설정하는 것과 같다.

나는 나만의 이더리움 노드를 프로바이더로 운영할 수도 있다. 하지만 내가 편리하게 쓸 수 있는 제 3자 서비스가 있다. 내 DApp 의 사용자들을 위해 나만의 이더리움 노드를 운영할 필요가 없도록 하기 위해 사용할 수 있는 Infura 라는 서비스가 있다.

Infura

Infura 는 빠른 읽기를 위한 캐시 계층을 포함하는 다수의 이더리움 노드를 운영하는 서비스이다. 접근을 위한 API 를 무료로 사용할 수 있다. Infura 를 프로바이더로 사용하면, 나만의 이더리움을 설치하고 계속 유지할 필요 없이 이더리움 블록체인과 메세지를 확실히 주고받을 수 있다.

다음과 같이 Web3 에 나의 Web3 프로바이더 로 Infura 를 쓰도록 설정할 수 있다 :

하지만 많은 사용자들이 우리의 DApp 을 사용할 것이기에, 그리고 이 사용자들은 단순히 읽기만 하는 게 아니라 블록체인에 뭔가 쓰기도 할 것이기에 우리는 이 사용자들이 그들의 개인 키로 트랜잭션에 서명을 할 수 있도록 해야 할 것이다.

참고 : 이더리움(그리고 일반적인 블록체인)은 트랙잭션에 전자 서명을 하기 위해 공개/개인 키 쌍을 사용한다. 말하자면 전자 서명을 위해 엄청나게 안전한 비밀번호 같은 것이다. 이런 방식으로 내가 만약 블록체인에서 어떤 데이터를 변경하면, 나의 공개 키를 통해 내가 거기 서명을 한 사람이라고 증명 할 수 있다. 하지만 아무도 내 개인 키를 모르기 때문에 내 트랜잭션을 누구도 위조할 수 없다.

이런 암호학은 복잡하다. 그러니 우리의 앱 프론트엔드에서 사용자들의 개인 키를 관리하려 하는 것은 좋은 생각이 아니다.

그리고 이를 대신 처리해주는 서비스가 이미 있다. 이중 가장 유명한 것은 메타마스크(Metamask) 이다.

메타마스크(Metamask)

메타마스크 는 사용자들이 이더리움 계정과 개인 키를 안전하게 관리할 수 있게 해주는 크롬과 파이어폭스의 브라우저 확장 프로그램이다. 그리고 해당 계정들을 써서 Web3.js 를 메타트레이더 4란 ? 사용하는 웹사이트들과 상호작용을 할 수 있도록 해준다. (메타마스크를 설치하면 브라우저에서 Web3 가 작동하고, 이더리움 블록체인과 통신하는 어떤 웹사이트와도 상호작용을 할 수 있다.)

그리고 누군가가 개발자로서, 사용자들이 웹 브라우저를 써서 웹 사이트를 통해 DApp 과 상호작용을 하길 원한다면(크립토좀비와 같이), 분명 그는 자기의 DApp 을 메타마스크와 호환할 수 있게 하고 싶을 것이다.

참고 : 메타마스크는 내부적으로 Infura 의 서버를 Web3 프로바이더 로 사용한다. 위의 내용처럼 말이다. 하지만 사용자들에게 그들만의 Web3 프로바이더 를 선택할 수 있는 옵션을 주기도 한다. 즉 메타마스크의 Web3 프로바이더 를 사용한다면, 사용자에게 선택권을 주는 것이기도 하면서 앱에서 걱정할 거리를 하나 줄일 수 있게 되는 것이다.

메타마스크의 Web3 프로바이더 사용하기

메타마스크는 web3 라는 전역 메타트레이더 4란 ? 자바스크립트 객체를 통해 브라우저에게 Web3 프로바이더 를 주입한다. 그러니 내 앱에서 web3 가 존재하는지 확인하고, 만약 존재한다면 web3.currentProvider 를 프로바이더로서 사용하면 된다.

여기 메타마스크에서 제공하는 템플릿 코드가 있다. 사용자가 메타마스크를 설치했느지 확인하고 설치가 안 된 경우 앱을 사용하려면 메타마스크를 설치해야 한다고 알려준다 :

나는 내가 만드는 모든 앱에서 이 예제 코드를 사용할 수 있다. 사용자들이 내 앱을 사용하려면 메타마스크를 사용하도록 하기 위해서 말이다.

참고 : 메타마스크 말고도 사용자들이 쓸 수 있는 다른 개인 키 관리 프로그램도 있다. 미스트(Mist) 웹 브라우저 같은 것들이다. 하지만 그것들도 모두 web3 변수를 주입하는 동일한 형태를 사용한다. 그러니 사용자들이 다른 프로그램을 쓰더라도 여기서 설명하는 방식으로 사용자의 Web3 프로바이더 를 인식할 수 있을 것이다.

3. 컨트랙트와 대화하기

Web3.js 가 나의 스마트 컨트랙트와 통신을 하기 위해서는 2가지를 필요로 할 것이다 : 컨트랙트의 주소 와 ABI 이다.

컨트랙트 주소

스마트 컨트랙트를 모두 작성한 다음, 컴파일한 후 이더리움에 배포할 것이다. 배포는 다음 레슨에서 다룰 것이다. 이는 코드를 작성하는 것과는 꽤나 다른 절차이기 때문에 순서를 바꿔 Web3.js 를 먼저 다루기로 한 것이다.

컨트랙트를 배포한 후, 해당 컨트랙트는 영원히 존재하는 이더리움 상에서 고정된 주소를 얻을 것이다. lesson2 를 상기해보면, 이더리움 메인넷에서 크립토키티의 주소는 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d 였다.

나의 스마트 컨트랙트와 통신을 하기 위해 배포 후 이 주소를 복사해야 할 것이다.

컨트랙트 ABI

컨트랙트와의 통신을 위해 Web3.js 에서 필요로 하는 다른 하나는 바로 컨트랙트의 ABI 이다.

ABI 는 Application Binary Interface 의 줄임말이다. 기본적으로 JSON 형태로 나의 컨트랙트 메소드를 표현하는 것이다. 나의 컨트랙트가 이해할 수 있도록 하려면 Web3.js 가 어떤 형태로 함수 호출을 해야 하는지 알려주는 것이다.

이더리움에 배포하기 위해 컨트랙트를 컴파일할 때(lesson7에서 다룰 내용), 솔리디티 컴파일러가 나에게 ABI 를 줄 것이다. 그러니 컨트랙트 주소와 함께 이를 복사하여 저장해야 한다.

Web3.js 컨트랙트 인스턴스화하기

컨트랙트의 주소와 ABI 를 얻고 나면, 다음과 같이 Web3 에서 인스턴스화 할 수 있다 :

4. 컨트랙트 함수 호출하기

컨트랙트의 설정이 끝났으니 이제 우리는 Web3.js 로 컨트랙트와 통신할 수 있다. Web3.js 는 컨트랙트의 함수를 호출하기 위해 사용할 수 있는 두 개의 메소드를 가지고 있다. 바로 call 과 send 이다.

Call

call 은 view 와 pure 함수를 위해 사용한다. 로컬 노드에서만 실행하고, 블록체인 트랜잭션을 만들지 않는다.

복습 : view 와 pure 함수는 읽기 전용이고 블록체인에서 상태를 변경하지 않는다. 가스를 전혀 소모하지 않고, 메타마스크에서 트랜잭션에 서명하라고 사용자에게 창을 띄우지도 않는다.

Web3.js 를 사용하여, 다음과 같이 123 을 매개변수로 myMethod 라는 이름의 함수를 call 할 수 있다 :

Send

send 는 트랜잭션을 만들고 블록체인 상의 데이터를 변경한다. view 메타트레이더 4란 ? 와 pure 가 아닌 모든 함수에 대해 send 를 사용해야 하는 것이다.

참고 : 트랜잭션을 send 하는 것은 사용자에게 가스를 지불하도록 하고, 메타마스크에서 트랜잭션에 서명하고 창을 띄울 것이다. Web3 프로바이더 로 메타마스크를 사용할 때, send() 를 호출하면 자동으로 이 모든 것이 이루어지고, 우리의 코드에 어떤 특별한 것도 추가할 필요가 없다.

Web3.js 를 사용하여, 다음과 같이 123 을 매개변수로 myMethod 라는 이름의 함수를 호출하는 트랜잭션을 send 할 수 있다 :

구문은 call() 과 거의 똑같다.

좀비 데이터 받기

이제 컨트랙트에서 데이터에 접근하기 위해 call 을 사용하는 에졔를 살펴볼 것이다.

우리가 좀비 배역을 public 으로 만들었던 것을 기억하자 :

솔리디티에서 public 으로 변수를 선언하면 자동으로 같은 이름의 퍼블릭 "getter" 함수를 만들어 낸다. 그러니 ID 15 인 좀비를 찾길 원한다면, 변수를 함수인 것처럼 호출할 수 있다 : zombies(15)

여기에 우리의 프론트엔드에서 좀비 ID 를 받아 해당 좀비에 대해 컨트랙트에 질의를 보내고, 결과를 반환하는 자바스크립트 함수르 작성하는 방법이 있다 :

참고 : 이번 레슨에서 우리가 사용하는 모든 코드 예제들은 콜백 대신 Promise 를 사용하는 Web3.js 1.0 버전 을 사용하고 있다. 만약 다른 튜토리얼에서 코드를 복사해온다면 같은 버전을 사용하고 있는지 확인해봐야 한다.

여기서 일어나고 있는 것들을 알아보도록 하자.

cryptoZombies.methods.zombies(id).call() 은 Web3 프로바이더 와 통신하여 우리 컨트랙트의 Zombie[] public zombies 에서 인덱스가 id 인 좀비를 반환하도록 할 것이다.

이는 외구 서버로 API 호출을 하는 것처럼 비동기 적으로 일어난다는 것을 알아두자. 즉 Web3 는 여기서 Promise 를 반환한다.

Promise 가 만들어지면(이는 Web3 프로바이더 로부터 응답을 받았다는 것을 의미) 우리 예제 코드는 then 문장을 실행하고, 여기서 result 를 콘솔에 로그로 기록한다.

result 는 다음과 같이 생긴 자바스크립트 객체가 될 것이다 :

이후 이 겍체를 해석하기 위한 프론트엔드 로직을 만들어 의미 있는 방향으로 이 객체를 프론트엔드에 표시할 것이다.

5. 메타마스크 & 계정

이제 각 요소들을 하나로 합쳐나가보도록 하겠다. 우리 앱의 홈페이지에 사용자의 전체 좀비 군대를 보여주고 싶다고 가정해보자.

현재 사용자가 가지고 있는 모든 좀비들의 ID 를 찾기 위해 우리는 분명 첫 번째로 getZombiesByOwner(owner) 함수를 사용해야 할 것이다.

하지만 우리의 솔리디티 컨트랙트는 owner 에 솔리디티 address 를 보내도록 되어 있다. 그렇다면 우리가 어떻게 우리 앱을 사용하는 사용자의 주소를 알 수 있겠는가?

메타마스크에서 사용자 계정 가져오기

메타마스크는 확장 프로그램 안에서 사용자들이 다수의 계정을 관리할 수 있도록 해준다.

우리는 주입되어 있는 web3 변수에 현재 활성화된 계정이 무엇인지 다음과 같이 확인할 수 있다 :

사용자가 언제든지 메타마스크에서 활성화된 계정을 바꿀 수 있기 때문에, 우리 앱은 이 변수의 값이 바뀌었는지 확인하기 위해 계속 감시를 하고 값이 바뀌면 그에 따라 UI 를 업데이트해야 할 것이다. 예를 들어, 사용자들의 홈페이지에서 그들의 좀비 군대를 표시하고 싶다면, 메타마스크에서 계정을 바꾸었을 때 바뀐 계정에 대한 좀비 군대를 보여주기 위해 페이지를 업데이트해야 할 것이다.

이를 위해 다음과 같이 setInterval 을 쓸 수 있다 :

여기서는 userAccount 가 여전히 web3.eth.accounts[0] 과 같은지 위해 100밀리초마다 확인하고 있다. (즉 사용자가 해당 계정을 활성화해 놓았는지 확인하는 것이다) 그렇지 않다면, userAccount 에 현재 활성화된 계정을 다시 할당하고, 화면을 업데이트하기 위한 함수를 호출한다.

6. 좀비 군대 보여주기

컨트랙트로부터 받은 데이터를 실제로 보여줄 수 없다면 지금까지 한 것은 아직 완전하다고 할 수 없다.

React 나 Vue.js 같은 편리한 프론트엔드 프레임워크들이 있지만 여기서 이 것들을 다루기에는 너무 광범위하다.

그래서 CryptoZombies.io 의 초점을 이더리움과 스마트 컨트랙트에 맞추기 위해, 우리는 jQuery 를 이용한 간단한 예제를 통해 어떻게 스마트 컨트랙트에서 전달받은 데이터를 파싱하고 표현할 수 있을지 살펴볼 것이다.

좀비 데이터 보여주기 - 간단한 예제

현재 작업 중인 html 문서에 빈 와 빈 displayZombies 함수를 추가했다.

지난 챕터에서 startApp() 내에서 getZombiesByOwner 의 호출 결과를 써서 호출한 displayZombies 를 떠올려 보자. 그 함수의 결과로 아래와 같이 생긴 좀비 ID 배열을 전달받을 수 있을 것이다 :

따라서 displayZombies 함수는 다음과 같은 것을 할 것이다 :

먼저 이미 무언가가 #zombies div 의 안에 들어 있아면 이 div 의 내용을 비운다. (이렇게 함녀 사용자가 그들의 활성화된 MetaMask 계정을 변경하면 새로운 좀비 군대를 로딩하기 전에 기존의 것을 삭제할 것이다.)

반복을 통해 각 id 마다 getZombieDetail(id) 를 호출해서 우리의 스마트 컨트랙트에서 좀비에 대한 모든 정보를 찾는다.

화면에 표시하기 위해 HTML 템플릿에 좀비에 대한 정보를 집어넣고, 메타트레이더 4란 ? 해당 템플릿을 #zombies div 에 붙여넣는다.

여기서도 우린 기본 템플릿 엔진이 없는 jQuery 를 이용하기 때문에, 보기 싫을 수 있지만, 다음의 간단한 예제처럼 각 좀비에 대한 정보를 출력할 수 있다 :

좀비 스프라이트는 어떻게 표현하나요?

위 예제에서는 DNA를 문자열로 간단히 표현해 보았다. 이것을 이미지로 바꿔서 좀비를 표현하려면 어떻게 해야될까?

우린 DNA 문자열을 부분 문자열로 나누고, 모든 2자리 숫자를 이미지에 대응시켜 아래와 같이 이 작업을 처리 했었다 :

각 컴포넌트는 CSS 의 절대 좌표 포지셔닝을 이용해 다른 이미지 위에 위치할 것이다.

7. 트랜잭션 보내기

이제 우리의 UI 는 사용자의 메타마스크 계정을 감지하고, 자동으로 좀비 군대를 홈페이지에 표현할 것이다.

이제 send 함수를 이용해서 스마트 컨트랙트의 데이터를 변경하는 방법을 살펴보자.

이 함수에는 call 함수와는 꽤 다른 부분이 있다 :

트랜잭션을 전송( send )하려면 함수를 호출한 사람의 from 주소가 필요하다. (솔리디티 코드에서는 msg.sender 가 될 것이다.) 이는 우리 DApp 의 사용자가 되아야 할 것이니, 메타마스크가 나타나 그들에게 서명을 하도록 할 것이다.

트랜잭션 전송( send )은 가스를 소모한다.

사용자가 트랜잭션 전송을 하고 난 후 실제로 블록체인에 적용될 때까지는 상당한 지연이 발생할 것이다. 트랜잭션이 블록에 포함될 때까지 기다려야 하는데, 이더리움의 평균 블록 시간이 15초이기 때문이다. 만약 이더리움에 보류 중인 거래가 많거나 사용자가 가스 가격을 지나치게 낮게 보낼 경우, 우리 트랜잭션이 블록에 포함되길 기다려야 하고 ,이는 몇 분씩 걸릴 수 있다.

그러니 이 코드의 비동기적 특성을 다루기 위한 로직이 필요하게 될 것이다.

좀비 만들기

이제 사용자가 호출할 우리 컨트랙트 내의 첫번째 함수를 예제로 살펴보자 :

메타마스크를 사용해 Web3.js 에서 위 함수를 호출하는 방법의 예제 :

위 함수는 우리의 Web3 프로바이더 에게 트랜잭션을 전송( send )하고, 몇 가지 이벤트 리스너들을 연결한다 :

  • receipt 는 트랜잭션이 이더리움의 블록에 포함될 때, 즉 좀비가 생성되고 우리의 컨트랙트에 저장되었을 때 발생하게 된다.
  • error 는 트랜잭션이 블록에 포함되지 못했을 때, 예를 들어 사용자가 충분한 가스를 전송하지 않았을 때 발생하게 된다. 우리는 우리의 UI 를 통해 사용자에게 트랜잭션이 전송되지 않았음을 알리고, 다시 시도할 수 있도록 할 것이다.

참고 : send 를 호출할 때 gas 와 gasPrice 를 선택적으로 지정할 수 있다. .send(< from: userAccount, gas: 3000000 >) 와 같이 말이다. 만약 지정하지 않는다면, 메타마스크는 사용자가 이 값들을 선택할 수 있도록 할 것이다.

8. Payable 함수 호출하기

이제 Web3.js 에서 특별한 처리가 필요한 다른 종류의 함수를 살펴볼 것이다. 바로 payable 함수이다.

레벨업!

ZombieHelper 를 다시 생각해보면, 우린 사용자가 레벨업할 수 있는 곳에 payable 함수를 추가했었다 :

함수를 이용해 이더를 보내는 법은 간단하지만, 이더가 아니라 wei 로 얼마를 보낼지 정해야하는 제한이 있다.

Wei란?

wei 는 이더의 가장 작은 하위 단위이다 - 하나의 이더는 10^18개의 wie 이다.

이건 세기에는 너무 많다. 하지만 운이 좋게도 Web3.js 에는 이러한 작업을 해주는 변환 유틸리티가 있다.

우리 DApp 에서, 우리는 levelUpFee = 0.001 ether 로 설정했다. 그러니 메타트레이더 4란 ? levelUp 함수를 호출할 때, 아래의 코드를 써서 사용자가 0.001 이더를 보내게 할 수 있다 :

9. 이벤트(Event) 구독하기

Web3.js 를 통해 컨트랙트와 상호작용 하는 것은 꽤 간단하다. 한번 환경을 구축하고 나면, 함수를 호출하고 트랜잭션을 전송하는 것은 일반적인 웹 API 와 크게 다르지 않다.

여기 우리가 다루고자 하는 것이 하나 더 있다. 바로 컨트랙트에서 이벤트를 구독하는 것이다.

새로운 좀비 수신하기

zombiefactory.sol 을 다시 생각해보면, 새로운 좀비가 생성될 때마다 매번 호출되던 NewZombie 라는 이벤트가 있었다 :

Web3.js 에서 이벤트를 구독하여 해당 이벤트가 발생할 때마다 Web3 프로바이더 가 나의 코드 내의 어떠한 로직을 실행시키도록 할 수 있다 :

이건 DApp 에서 어떤 좀비가 생성되든지 항상 알림을 보낼 거라는 걸 명심하자. 현재 사용자의 좀비만이 아니라는 것이다. 현재 사용자가 만든 것에 대해서만 알림을 보내고 싶다면 어떻게 해야할까?

indexed 사용하기

이벤트를 필터링하고 현재 사용자와 연관된 변경만을 수신하기 위해, 우리의 ERC721 을 구현할 때 Transfer 이벤트에서 했던 것처럼 우리의 솔리디티 컨트랙트에 indexed 키워드를 사용해야 한다.

이 경우, _from 과 _to 가 indexed 되어 있기 때문에, 우리 프론트엔드의 이벤트 리스너에서 이들을 필터링할 수 있다 :

event 와 indexed 영역을 사용하는 것은 나의 컨트랙트에서 변화를 메타트레이더 4란 ? 감지하고 프론트엔드에 반영할 수 있게 하는 유용한 방법이다.

지난 이벤트에 대해 질의하기

우린 getPastEvents 를 이용해 지난 이벤트들에 대해 질의를 하고, fromBlock 과 toBlock 필터들을 이용해 이벤트 로그에 대한 시간 범위를 솔리디티에 전달할 수 있다. (여기서 block은 이더리움 블록 번호를 나타낸다.)

위 메소드를 사용해서 시작 시간부터의 이벤트 로그들에 대해 질의를 할 수 있기 때문에, 이를 통해 흥미로운 사용 예시를 만들 수 있네: 이벤트를 저렴한 형태의 storage로 사용하는 것이다.

다시 생각해보면, 데이터를 메타트레이더 4란 ? 블록체인에 기록하는 것은 솔리디티에서 가장 비싼 비용을 지불하는 작업 중 하나였다. 하지만 이벤트를 이용하는 것은 가스 측면에서 훨씬 더 저렴하다.

여기서 단점이 되는 부분은 스마트 컨트랙트 자체 안에서는 이벤트를 읽을 수 없다는 것이다. 하지만 히스토리로 블록체인에 기록하여 앱의 프론트엔드에서 읽기를 원하는 데이터가 있다면, 이는 새겨놓아야 할 중요한 사용 예시이다.

예를 들어, 우린 이것을 좀비 전투의 히스토리 기록용으로 사용할 수 있다. 좀비가 다른 좀비를 공격할 때마다, 그리고 누군가 이길 때마다 메타트레이더 4란 ? 우린 이벤트를 생성할 수 있다. 스마트 컨트랙트는 추후 결과를 계산할 때 이 데이터가 필요하지 않지만, 사용자들이 앱의 프론트엔드에서 찾아볼 수 있는 유용한 데이터이다.

Author And Source

저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.

우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)

메타트레이더 4란 ?

메타크래프트, 노벨피아 지적재산권 활용한 신사업 진출…“100억 규모 프로젝트” - 공모전 개최로 신인 작가 및 IP 확보 총력…다양한 콘텐츠 개발 - 자사 웹소설 IP 활용해 게임, 웹툰, 오디오, 웹드라마 등 콘텐츠 사업 확장

박상혁 기자

  • 기사등록 2022-07-22 15:23:47

메타크래프트(대표이사 유정석)가 국내 OSMU(원소스 멀티유즈) 사업에 나섰다. OSMU란 하나의 콘텐츠를 영화, 게임, 음반 등 다양한 방식으로 제작해 부가가치를 극대화하는 방식이다.

메타크래프트는 자사 웹소설 플랫폼 ‘노벨피아’의 웹소설 IP(지식재산권)를 활용해 OSMU(원소스 멀티유즈) 사업에 진출한다고 22일 밝혔다. 이를 위해 하반기에는 100억원 규모의 투자도 진행할 계획이라고 밝혔다.

메타크래프트CI. [이미지=메타크래프트]

지속적인 공모전도 개최해 신인 작가 발굴과 IP 확보에 투자하고 있다. 최근 개최한 마스터피스 성인 공모전에 ‘노벨툰상’을 신설했으며, 수상작에게 소설 연재와 웹툰 제작의 기회를 동시에 제공하는 등 적극적인 투자를 이어가고 있다.

회사는 소설 감상 시 화면을 보지 않고도 청각으로 경험할 수 있는 TTS(문자음성변환) 서비스를 하반기 선보일 예정이다. 이를 통해 문자를 읽지 못하는 사용자도 편리하게 이용하고 이동 시 웹소설을 청취할 수 있어 접근성을 높인다는 전략이다.

현재 메타크래프트는 국내 OSMU 사업 확장과 함께 지난 6월에 설립한 일본법인 노벨피아 재팬을 기반으로 올해 3분기내 일본 웹소설 플랫폼 서비스를 시작할 예정이다.

컴퓨터의 이해 ) (가) 홈네트워킹과 스마트홈에 대하여 설명하라. (나) 메타버스에 대하여 설명하라. (다) 마이크로프로세서에 대하여 설명하라.

1. 다음 문제에 대하여 주요 내용을 ①, ②, ③, ④ 번호를 붙여서 4가지 이상 설명하고 관련된 그림이나 사진을 설명문 본문에 한 장씩만 덧붙인다(1번 과제 그림 총 3장). 단, 1번 과제 전체분량은 A4 용지 1페이지 이상 2페이지 이내.

1. 다음 문제에 대하여 주요 내용을 ①, ②, ③, ④ 번호를 붙여서 4가지 이상 설명하고 관련된 그림이나 사진을 설명문 본문에 한 장씩만 덧붙인다(1번 과제 그림 총 3장). 단, 1번 과제 전체분량은 A4 용지 1페이지 이상 2페이지 이내이다. (15점)
(가) 홈네트워킹과 스마트홈에 대하여 설명하라.
(나) 메타버스에 대하여 설명하라.
(다) 마이크로프로세서에 대하여 설명하라.
※ 기본 개념은 교재 1,2,3장에 나와 있으며 그밖에 더 자세한 내용은 참고문헌이나 인터넷 검색을 이용하여 추가 작성한다.
2. 컴퓨터에서 데이터의 입출력 방식에 대한 다음 내용을 (가)와 (나) 각각 A4 용지 1~2페이지, 총 3페이지 이내로 작성하라. (15점)
(가) 웨어러블 기기 중 한 가지를 선택하여 ① 그 기기의 주요 용도, ② 그 기기에 포함된 입력장치, ③ 그 기기에 포함된 출력장치에 대하여 설명하라.
(나) 여러 가지 매트릭스 코드 중 QR코드를 포함하여 두 가지를 조사하여 설명하고, 본인의 학과, 본인의 이름, (가)에서 선택한 웨어러블 기기의 명칭 및 입출력장치 명칭이 들어 있는 QR코드를 만들어 보고서에 첨부하라.

1. 다음 문제에 대하여 주요 내용을 ①, ②, ③, ④ 번호를 붙여서 4가지 이상 설명하고 관련된 그림이나 사진을 설명문 본문에 한 장씩만 덧붙인다(1번 과제 그림 총 3장, 가로세로 5센치. 이미지 속성에서 본문과의 배치는 어울림으로 설정). 단, 1번 과제 전체분량은 A4 용지 1페이지 이상 2페이지 이내이다. (15점)
(가) 홈네트워킹과 스마트홈에 대하여 설명하라.
(나) 메타버스에 대하여 설명하라.
(다) 마이크로프로세서에 대하여 설명하라.

2. 컴퓨터에서 데이터의 입출력 방식에 대한 다음 내용을 (가)와 (나) 각각 A4 용지 1~2페이지, 총 3페이지 이내로 작성하라. (15점)
(가) 웨어러블 기기 중 한 가지를 선택하여 ① 그 기기의 주요 용도, ② 그 기기에 포함된 입력장치, ③ 그 기기에 포함된 출력장치에 대하여 설명하라.
(나) 여러 가지 매트릭스 코드 중 QR코드를 포함하여 두 가지를 조사하여 설명하고, 본인의 학과, 본인의 이름, (가)에서 선택한 웨어러블 기기의 명칭 및 입출력장치 명칭이 들어 있는 QR코드를 만들어 보고서에 첨부하라.

1.
(가) 홈네트워킹과 스마트홈에 대하여 설명하라.
① 홈 네트워킹이란 인터폰, 디지털TV, VTR, 에어컨, 세탁기, 난방, 가스레인지, 조명, 보안 등 디지털 가전기기 등을 유무선 네트워크로 연결하여 가전제품들을 제어하고 기기 간의 콘텐츠를 공유하는 기술이다.
② 집 안은 물론 집 밖에서도 휴대전화, 컴퓨터 등으로 실시간으로 집안환경을 데이터로 볼수 있고 집 내부의 유선 네트워크와 연결하여 가전제품을 조종하고 정보를 파악할 수 있게 한다. 아파트 시공때부터 계획된 서버를 통해 집안환경정보를 전달하여 편리한 생활을 만들어주지만, 빌트인 외의 기능에는 활용도가 어렵다는 단점을 가지고 있다. 점차적으로 발전하여 가전제품을 통해 가정 내ㆍ외부에서 인터넷 접속, 동영상 전송, e-메일 송ㆍ수신까지 가능하게 되어 메타트레이더 4란 ? 진정한 사이버 홈 구축이 가능하도록 각 네트워크 회사들이 합력 네트워크를 통해 실현하고 있다.
③ 스마트 홈이란 홈 네트워킹기반으로 여러 형태의 자동화된 서비스를 제공하는 주거형태를 의미한다.
④ 가스 원격제어, 냉난방제어, 조명제어, 도어락 등이 가능하며, 사용자와 집 메타트레이더 4란 ? 안의 여러 가전기기들과 소통이 가능하다. 따라서 사용자가 집안에 있지 않아도 자동으로 작동이 가능한 다양한 서비스 들이 포함되어 있다.

(나) 메타버스에 대하여 설명하라.
① 그리스어로 ‘초월’이나 ‘가공’을 뜻하는 ‘메타Meta’와 ‘현실 세계’ 또는 ‘우주’를 뜻하는 ‘유니버스 Universe’의 합성어로 현실같이 구현되는 가상세계를 말한다.
② 메타버스는 가상 세계이기에 어떤 방식으로든 구현될 수 있다. 가상 세계 공간에서 자신을 투영하는 나만의 ‘아바타’를 생성하여 가상의 세계에서 현실에서 할 수 있는 다양한 활동을 한다. 가상의 공간에서 여가를 즐기고, 사람들과 소통하고, 문화생활을 즐긴다. 회의도 하고, 미팅 등의 업무도 할 수 있다.
③ 유형으로는 증강현실, 라이프로깅, 거울세계, 가상현실등이 있다.
-증강현실은 수년 전 세계를 열풍으로 몰아넣은 포켓몬GO가 대표적으로 현실세계 기반에 가상의 이미지나 정보를 합성하여 사용자에게 거부감은 줄이고 몰입감을 높인 것이다.
-라이프로깅은 사물과 사람에 대한 일상적 경험과 정보를 기록, 저장, 배포하는 기술로 3D아바타를 통해 다른 사용자들과 솥오하거나 다양한 가상현실을 경험할 수 있다.

이 메타버스 코인이 유일한 소식으로 뛰어올랐습니다! 무엇 향후 계획?

인기 메타버스 코인 에이프코인(ApeCoin)이 유가랩스(Yuga Labs)의 메타버스 세계 아더사이드(Otherside) 데모 버전을 발표했다. 따라서 구매 압력이 크게 증가했습니다. 자세한 내용은 다음과 같습니다.

이 메타버스 코인이 유일한 소식으로 뛰어올랐습니다! 무엇 향후 계획?

이 메타버스 코인이 유일한 소식으로 뛰어올랐습니다! 무엇 향후 계획?

인기 메타버스 코인 ApeCoin, 강세 모멘텀 확보

ApeCoin은 Yuga Labs가 매우 기대되는 Otherside Metaverse의 데모를 출시한 후 등장한 것 같습니다. Bored Ape Yacht Club 제작자는 주말 동안 Otherside의 데모 버전을 공유했습니다. 수천 명의 게임 NFT 소유자를 초대하여 Metaverse를 처음으로 살펴보았습니다. 데모 버전은 "First Outings" 중 하나였으며, 이를 통해 Otherdeeds라는 게임의 가상 토지 소유자가 게임에 참여할 수 있었습니다.

Yuga가 Otherside 데모를 중단한 직후 프로젝트 진행 방식에 대한 초기 힌트를 제공하는 라이트페이퍼를 발표했습니다. 개발의 첫 번째 단계에는 "어더사이드 우주에 나타난 신비한 오벨리스크를 둘러싼" 스토리 게임 모드가 포함됩니다. 두 번째와 세 번째 단계는 아직 출시되지 않았습니다. 그러나 플레이어는 "플랫폼의 핵심 기능"을 형성하는 데 중요한 역할을 합니다. 주제에 메타트레이더 4란 ? 대한 진술에는 다음 진술이 포함됩니다.

성공적인 커뮤니티의 씨앗을 뿌리기 위해 우리는 첫 번째 조언자이자 신봉자인 보이저스와 함께 다른 사람을 개발하기 시작했습니다. 그들은 OTHERSIDE의 역사에서 중요한 부분이며 VOYAGER'S JOURNEY에 참여하도록 초대되었습니다.

ApeCoin은 Otherside의 중요한 부분입니다

ApeCoin은 게임의 공식 통화이기 때문에 Otherside에서 중요한 역할을 합니다. Yuga는 Otherdeeds NFT를 매각했는데, 이는 4월에 이더리움 네트워크를 막히게 하는 재앙적인 경매로 바뀌었습니다. 당시 관심 있는 구매자는 APE를 사용하여 가상 토지에 대한 비용을 지불해야 했습니다. 이제 ApeCoin은 토요일에 데모가 출시된 이후 가격이 거의 36% 상승했습니다. APE는 월요일 이른 4.60달러에서 6.30달러로 올랐다. 현재 가격 수준에서 더 많은 구매 압력이 가해지면 광범위한 암호화폐 시장이 새로운 역풍을 즐기면서 상당한 이익을 얻을 수 있습니다.

분석가인 Nathan Batchelor에 따르면 ApeCoin은 12시간 차트에서 상승하는 삼각형에서 나온 것으로 보입니다. 이 기술 구성은 가격이 $5.30 이상으로 유지되는 한 $7.50까지 42% 증가합니다. $5.30 이상을 유지하지 못하면 이익이 급증합니다. 이것은 ApeCoin이 $4.30로 떨어질 수 있음을 의미합니다. 낙관적 견해를 잠재적으로 무효화할 수 있습니다. APE는 지난 7일 동안 31.2% 증가하여 전면에 나타났습니다. 또한 지난 7일 동안 최저 수준인 $4.20, 최고 수준인 $6.17까지 볼 수 있었습니다.


0 개 댓글

답장을 남겨주세요