BTC
ETH
HTX
SOL
BNB
시장 동향 보기
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Ethereum 스마트 계약을 실제로 이해

蓝狐笔记
特邀专栏作者
이 기사는 약 3437자로, 전체를 읽는 데 약 5분이 소요됩니다
스마트 계약을 정말로 이해하고 있습니까?
AI 요약
스마트 계약을 정말로 이해하고 있습니까?

편집자 주: 이 기사의 출처는블루 폭스 노트편집자 주: 이 기사의 출처는

블루 폭스 노트

블루 폭스 노트

(ID: lanhubiji), 저자: GjermundBjaanes, 편집: Dyna, 허가를 받아 출시됨.

"스마트 컨트랙트"에 대해 들어보셨을 것입니다. 그리고 이것이 블록체인에서 실행되는 코드라는 것도 알고 계실 것입니다.

하지만 블록체인에서 어떻게 코드를 실행할 수 있습니까? 이것은 쉽게 이해할 수 있는 단순한 개념이 아닙니다.

이 기사는 이더리움 블록체인에서 스마트 계약이 작동하는 방식을 설명합니다. 이 기사에는 예제 목적을 위한 몇 가지 간단한 코드가 포함되어 있으므로 프로그래밍에 대한 기본적인 이해가 도움이 될 것입니다. 기술 세부 사항 중 일부는 명확성을 위해 약간 단순화되었지만 개념은 유효합니다.

보조 제목

블록체인 - 빠른 시작

여기서 너무 많은 세부 사항을 다루지 않고 블록체인 기술의 핵심 개념은 분산 원장입니다. 많은 참여자들이 공유하는 특수한 유형의 데이터베이스입니다.

이 특수 데이터베이스는 네트워크에서 발생하는 모든 트랜잭션을 기록하는 트랜잭션 목록입니다. 누구나 사본을 가지고 있습니다. 강력한 금전적 인센티브와 결합된 이 분산된 분배는 당사자 간의 신뢰에 대한 필요성을 제거합니다.

전통적으로 당사자 간의 신뢰는 중개자, 즉 Paypal 및 은행과 같은 제3자를 통해 해결됩니다. 신뢰하지 않는 사람과의 거래는 양 당사자가 신뢰하는 중개자를 통해 이루어집니다.

모든 사람이 동일한 목록을 가지고 있기 때문에 네트워크를 속여 잘못된 트랜잭션을 수락하도록 하는 것은 매우 어렵습니다. 이를 규칙 준수에 대한 일부 암호화 및 금전적 보상과 결합하면 매우 안전한 네트워크를 갖게 됩니다.

스마트 계약이란 무엇입니까?

이 모든 것은 또한 블록체인을 거의 불변으로 만듭니다. 기록을 변경하는 유일한 방법은 전체 네트워크의 대다수의 동의를 얻는 것이기 때문입니다.

보조 제목

스마트 계약이란 무엇입니까?

Ethereum과 Bitcoin의 가장 큰 차이점은 스마트 계약 개념의 도입입니다. Bitcoin은 디지털 통화이고 Ethereum은 디지털 통화이지만 그 이상입니다.

  • "스마트 계약"이라는 이름은 약간 오해의 소지가 있습니다. 그것들은 실제 계약이 아니며 특별히 똑똑하지도 않습니다. 그것들은 블록체인에서 실행될 수 있는 코드 조각 또는 컴퓨터 논리 연산일 뿐입니다.

  • 먼저 이더리움 네트워크에서 특별한 종류의 계정인 스마트 계약에 대해 설명하겠습니다. 사용자 계정이 있고 스마트 계약 계정도 있습니다.

사용자 계정은 다음으로 구성됩니다.

  • 주소(은행 계좌 번호와 유사 - 비트코인에도 있음)

  • 잔액(내가 가진 돈이 얼마인지)

  • 스마트 계약 계정에는 다음이 포함됩니다.

  • 주소

잔액(이더리움)

상태

코드

주소는 일반 계정과 동일하며 계정의 고유 식별자입니다.

잔액과 일반 계정도 같은 개념입니다. 유일한 흥미로운 점은 스마트 계약의 균형이 코드가 돈을 소유할 수 있음을 의미한다는 것입니다. 돈을 처리할 수도 있고 코딩 오류로 인해 잘못 처리할 수도 있습니다.

스마트 계약 계정의 상태는 스마트 계약에서 선언된 모든 필드 및 변수의 현재 상태입니다. 대부분의 프로그래밍 언어에서 클래스의 필드 변수와 동일한 방식으로 작동합니다. 실제로 클래스의 개체를 인스턴스화하는 것이 스마트 계약을 이해하는 가장 쉬운 방법일 것입니다. 유일한 차이점은 이 개체가 지속된다는 것입니다(자살하도록 프로그래밍되지 않은 경우).

 

스마트 계약에 대한 재미있는 사실: 다른 스마트 계약을 호출할 수 있습니다. 이것은 스스로 돈을 쓰고 거래를 수행할 수 있는 자율적인 에이전트를 만들 수 있는 능력을 열어줍니다.

위의 코드로 스마트 계약을 생성한다고 가정합니다. 코드에는 uint(정수) 유형의 카운터라는 필드가 있습니다. 카운터 변수의 내용은 계약의 상태입니다. 내가 count() 함수를 호출할 때마다 블록체인에서 이 스마트 계약의 상태가 1씩 증가하는 것을 누구나 볼 수 있습니다.

나중에 더 많은 예를 들어 어떻게 작동하는지 설명하겠지만 먼저 이더리움과 비트코인 ​​트랜잭션으로 돌아가서 몇 가지를 설명하는 데 사용하고 싶습니다.

보조 제목

  • 거래 수준에서 이더리움 VS 비트코인

  1. 비트코인 거래는 매우 간단합니다. 한 가지만 할 수 있습니다. 일종의 트랜잭션입니다. 몇 가지 세부 사항은 제쳐두고 TO(돈을 받는 사람), FROM(에서, 지불하는 사람) 및 AMOUNT(금액, 금액)로 요약됩니다. 이것은 비트코인을 네트워크 참여자 간에 가치를 전송할 수 있는 가치 저장소로 만듭니다.

  2. Ethereum의 차이점은 트랜잭션에도 "DATA"(데이터) 필드가 있다는 것입니다. "DATA" 필드는 세 가지 유형의 트랜잭션을 지원합니다.

  3. 가치 이전(비트코인과 동일)

  4. 받는 사람 주소

  • DATA 필드가 비어 있거나 추가할 메시지가 포함되어 있습니다.

  1. 너에게서

  2. AMOUNT는 보내려는 이더리움의 양입니다.

  3. 스마트 계약 생성

  4. TO 필드가 비어 있음(스마트 계약 생성 트리거)

  • DATA 필드에는 바이트 코드로 컴파일된 스마트 계약 코드가 포함됩니다.

  1. 너에게서

  2. AMOUNT는 0 또는 계약에 넣고 싶은 이더리움 금액이 될 수 있습니다.

  3. 스마트 계약 호출

  4. TO 필드는 스마트 계약 계정 주소입니다.

DATA 필드에는 함수 이름과 매개 변수가 포함되어 있습니다 – 스마트 계약을 호출하는 방법

너에게서

  • AMOUNT는 0 또는 서비스 계약에 대해 지불해야 하는 금액과 같은 이더리움 금액이 될 수 있습니다.

이러한 트랜잭션에는 더 많은 필드와 복잡성이 있지만 위의 내용은 핵심 개념을 잘 설명합니다. 이러한 트랜잭션의 좀 더 구체적인 예를 살펴보겠습니다.

  • 이더리움 트랜잭션

가치 이전

  • 매우 간단합니다. TO는 일정량의 이더리움 토큰을 주소로 보냅니다. 트랜잭션에 메시지를 추가할 수도 있습니다.

위에서 언급했듯이 빈 TO 필드는 스마트 계약 생성을 나타냅니다. DATA 필드에는 바이트 코드로 컴파일된 스마트 계약이 포함됩니다.

전화 계약

이에 대해서는 나중에 다시 다루겠지만 주요 개념은 호출하려는 스마트 컨트랙트 주소로 트랜잭션을 보낸 다음 DATA 필드에 함수 호출을 넣는 것입니다.

보조 제목

비용 및 실행에 주의

코드 실행 비용은 호출자가 가스라는 비용으로 지불합니다. 가스는 Ethereum 가상 머신을 실행하기 위한 연료입니다. 코드 라인과 같은 명령 실행당 요금으로 생각할 수 있습니다.

특정 계약 호출에 사용할 수 있는 최대 가스를 설정해야 합니다. 예를 들어 호출하는 코드가 무한 루프에 들어가면 실행 중에 소비된 가스가 설정된 최대 가스를 초과하지 않도록 합니다.

가스(실행) 비용은 네트워크의 채굴자(코드를 실행하는 노드)에 의해 결정됩니다. 가스와 실행에 대해 아직 배워야 할 것이 많습니다. 그러나 위의 내용은 명심할 가치가 있습니다.

보조 제목

스마트 계약은 어떻게 작동합니까?

myObjectReference.myFunction(parameters);

스마트 계약이 이더리움 네트워크에 배포되면 누구나 스마트 계약의 기능을 호출할 수 있습니다. 이 함수는 보안상의 이유로 사람들이 호출하지 못하게 할 수 있지만 자유롭게 실험해 볼 수 있습니다.

myVariable = myObject.myFunction(parameters);

MyObject 유형의 개체가 있다고 가정합니다. 이 개체에는 myFunction이라는 함수가 있습니다. 호출하려면 호출할 함수와 호출할 매개 변수를 사용하여 개체의 인스턴스를 참조하십시오.

이와 같이:

스마트 계약을 호출하는 것은 개념적으로 동일합니다. 유일한 차이점은 호출에 대한 모든 정보를 트랜잭션에 넣고 서명한 다음 실행을 위해 네트워크로 보내야 한다는 것입니다.

스마트 계약 "0x0123456"에 일부 매개변수가 포함된 myFunction 함수를 호출한다고 가정합니다. 스마트 계약을 호출하는 네 단계가 있습니다.

이제 트랜잭션이 블록체인의 블록에 입력되면 해당 상태 변경이 네트워크 전체에 기록됩니다.

보조 제목

세계 컴퓨터

그러나 스마트 계약은 튜링 완전하고 이론적으로 무엇이든 할 수 있지만 무거운 계산 작업에는 적합하지 않습니다.

 

계약에 필요한 계산이 많을수록 실행 비용이 더 많이 듭니다. 계약이 복잡할수록 보안 허점이 있을 가능성이 높아집니다. 그리고 스마트 계약의 보안 허점은 다루기 어렵습니다. 결국 블록체인은 변경할 수 없습니다.

보조 제목

예: 토큰

텍스트

요점으로 돌아가서 토큰이 어떻게 작동하는지 설명하고 싶습니다.

이러한 토큰의 대부분은 이더리움에서 생성되며 개념은 매우 간단합니다(잘 작동하지만 너무 단순하여 거의 바보에 가깝습니다).

Javascript 또는 다른 프로그래밍 언어를 사용하여 간단한 통화 시스템을 작성하려면 어떻게 하나의 파일에서 모든 작업을 수행할 수 있습니다. 실제로 기록해야 하는 것은 다음과 같습니다.

1. 총 공급량

2. 계정

3. 계정 잔액

4. 자금 흐름

사용자와 잔액 간의 간단한 매핑을 통해 123에 대한 답을 얻을 수 있습니다.


지도는 계정을 돈의 합계에 매핑할 뿐입니다.

생성자를 사용하여 자신의 계정에서 초기 공급을 설정할 수 있습니다(또는 여러 계정에 분산).

자금 이동은 한 계정에서 빼서 다른 계정에 추가하는 간단한 기능을 통해 이루어집니다.

ETH
Odaily 공식 커뮤니티에 가입하세요