<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Let's make Everything</title>
    <link>https://rokchain.tistory.com/</link>
    <description>웹과 블록체인 기록을 위한 개발블로그입니다!</description>
    <language>ko</language>
    <pubDate>Sat, 16 May 2026 14:27:36 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>rok92</managingEditor>
    <image>
      <title>Let's make Everything</title>
      <url>https://tistory1.daumcdn.net/tistory/6266012/attach/326de32523b14649ac85c7f99ec04047</url>
      <link>https://rokchain.tistory.com</link>
    </image>
    <item>
      <title>[Defi란?]</title>
      <link>https://rokchain.tistory.com/41</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 1. Defi의 개념&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Defi(Decentralized Finance)는 탈중앙화된 금융&lt;/b&gt;으로 인터넷을 사용할 수 있는 모든 사람에게 열려있는 금융서비스 입니다. 기존의 금융서비스와는 다르게 블록체인 기술을 이용하여 중앙기관 없이 탈중앙화된 환경에서 누구나 자유롭게 이용할 수 있는 금융서비스를 총칭하는 단어입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 2. Defi와 전통 금융서비스의 비교&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 132px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;Defi&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;전통적인 금융서비스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;자금 사용에 대한 권한&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;개인&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;금융서비스 회사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;자금 사용 내용에 대한 조회&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;개인이 직접 조회하고 관리함&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;신뢰할만한 금융회사에 의탁함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;자금 송금의 범위 및 시간&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;국내, 국외 제한없이 빠르게 송금이 가능함&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;국내의 경우 빠르게 송금이 가능함&lt;br /&gt;해외의 경우 절차가 복잡하고 오랜 시간이 걸림&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #efefef; color: #333333; text-align: start;&quot;&gt;서비스 이용에 대한 자격&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;모든 사람들에게 열려있음&lt;br /&gt;국가, 인종 등의 차별이 없음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;국가마다 상ㅇ이함&lt;br /&gt;모든 사람들에게 열려있지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;투명성&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;모든 거래내역이 모든 이들에게 공개됨&lt;br /&gt;서비스가 코드로 만들어져 있으며 오픈소스로 공개되어 있음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;사용자들에게 공개되어 있으며 서비스 회사간 정보를 공유함&lt;br /&gt;오픈소스 등으로 모든 이들에게 열려있는 서비스는 아님&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;위험성&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;오픈소스이고 해킹의 위험이 존재함&lt;br /&gt;아직은 초기시장이라 다양한 리스크에 노출되어 있음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;국가에 따라 상이함&lt;br /&gt;해당 금융서비스 회사에 따라서 파산 시 일부 자금에 대해서 국가가 보장해주는 경우가 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 Defi를 기존의 금융서비스와 비교하기에는 한계가 존재합니다. Defi는 블록체인 기술을 기반으로 탄생하였기 때문에 단순히 과거의 금융서비스와 비교하는 것으로는 Defi를 온전하게 이해하는데 부족함이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 3. Defi 역사&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Defi 역사를 알기 위해서는 비트코인으로 거슬러 올라갑니다. 최초의 디파이가 바로 비트코인입니다. 우리는 비트코인을 사용함으로써 디지털자산을 개인의 권한으로 소유하고 제어할 수 있습니다. 또 세계 어느곳으로 보낼 수 있습니다. 앞서 본 표에서 '자금 사용에 대한 권한, 조회, 범위 및 시간 투명성'의 특징들이 모드 비트코인으로 인해 생겨난 것입니다.&amp;nbsp;&lt;b&gt;어떠한 중개인도 없이 신뢰할 수 있는 비트코인의 원장에 개인의 권한으로 기록&lt;/b&gt;하는 비트코인의 특징을 발전시킨 것이 이더리움 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이더리움은 비트코인의 특징을 모두 가지고 있으면서 조금 더 다양한 형태의 프로그램을 개발할 수 있도록 만들어졌습니다. 비트코인이 Defi의 시초라면 이더리움은 Defi를 기존의 금융서비스와 유사한 형태 그리고 더 발전하여 사용자들에게 다양한 경험을 할 수 있게 발전시킨 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;정리하자면 비트코인은 디지털자산을 소유&amp;middot;관리&amp;middot;지불&amp;middot;전송할 수 있는데 기여했습니다. 그리고 이더리움은 비트코인의 기본적인 기능 위에 디지털자산을 다양한 애플리케이션으로 확장할 수 있게 해준 것입니다. 이더리움으로 인해 예금, 대출, 거래소, 파생상품 등의 금융서비스를 탈중앙화된 환경에서 스마트 컨트랙트 프로그래밍에 의해 자율적으로 운용하고, 사용자들이 직접 자산을 관리할 수 있는 DeFi 서비스가 탄생한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;출처:[&lt;a href=&quot;https://upbitcare.com/academy/education/blockchain/333&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://upbitcare.com/academy/education/blockchain/333&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;</description>
      <category>Block chain/Defi</category>
      <category>defi</category>
      <category>디파이</category>
      <category>블록체인</category>
      <category>비트코인</category>
      <category>스마트컨트랙트</category>
      <category>이더리움</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/41</guid>
      <comments>https://rokchain.tistory.com/41#entry41comment</comments>
      <pubDate>Sat, 8 Jul 2023 12:13:09 +0900</pubDate>
    </item>
    <item>
      <title>[Constructor]</title>
      <link>https://rokchain.tistory.com/40</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;# 1. 생성자란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;생성자는 스마트 컨트랙트가 생성 또는 배포, 인스턴스화 될 때 초기값을 설정해 주는 용도로 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;간단한 예시를 통해 보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1685326057925&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

contract A{
    
    string public name;
    uint256 public age;
    
    constructor(string memory _name, uint256 _age){
        name = _name;
        age = _age;
    }
        
}

contract B{
    
  A instance = new A(&quot;Alice&quot;, 52);

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위의 컨트랙트에서 볼 수 있듯이 A컨트랙트에는 contructor가 있다는 것을 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;생성자를 통해 파라미터를 받아 name과 age에 값을 넣어주고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그리고 B컨트랙트에 A를 인스턴스화 하는데 괄호안에 &quot;Alice&quot;, 52가 있는 것을 알 수 있습니다. 이 말은 즉 A를 인스턴스화(생성하기 위해) 필요한 초기값이라고 생각하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;# 2. 생성자 활용!&lt;/h3&gt;
&lt;pre id=&quot;code_1685326407301&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

contract A{
    
    string public name;
    uint256 public age;
    
    constructor(string memory _name, uint256 _age){
        name = _name;
        age = _age;
    }
        
    function change(string memory _name, uint256 _age) public  {
         name = _name;
         age = _age;
    }
}

contract B{
    
  A instance = new A(&quot;Alice&quot;, 52);
  
  function change(string memory _name, uint256 _age) public  {
        instance.change(_name,_age);
    }
  
  function get() public view returns(string memory, uint256) {
        return (instance.name(), instance.age());
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;컨트랙트 B에 change함수와 get함수를 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;get함수는 여러개를 리턴하기 때문에 return 괄호문에 리턴하고자 하는 타입을 적어주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위 컨트랙트에서는 name과 age를 리턴할 것이기 때문에 string과 uint256입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;또한 change를 보면 컨트랙트 A의 change를 통해 생성자에서 설정한 age, name을 변경함을 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://dayone.tistory.com/m/10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dayone.tistory.com/m/10&lt;/a&gt;&lt;/p&gt;</description>
      <category>Solidity</category>
      <category>constructor</category>
      <category>생성자</category>
      <category>솔리디티</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/40</guid>
      <comments>https://rokchain.tistory.com/40#entry40comment</comments>
      <pubDate>Mon, 29 May 2023 11:21:23 +0900</pubDate>
    </item>
    <item>
      <title>[SBT(Soul Bound Token)]</title>
      <link>https://rokchain.tistory.com/39</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 소울바운드 토큰이란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;소울 바운드 토큰(Soul Bound Token)이란 비탈릭 부테린이 신원 인정이 불가능한 기존 웹3.0의 결점을 보완하기 위해 제시된 개념으로 유명 MMORPG 게임인 월드오브 워크래프트에서 등장하는 희귀 아이템 '소울바운드'에서 명칭을 따왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;소울 바운드 토큰은 특정 지갑 소유자의 신원을 나타내는 정보를 담고 있으며 전송이 불가능하며 판매할 수 없다는 특징을 가지고 있습니다. 이에 혹자는 소울 바운드 토큰을 NTT(Non-Transfer Token)라고 부르기도 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cImBIR/btsg0Wnnw1X/AYe7swWq0QLEkFE5AiWyK1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cImBIR/btsg0Wnnw1X/AYe7swWq0QLEkFE5AiWyK1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cImBIR/btsg0Wnnw1X/AYe7swWq0QLEkFE5AiWyK1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcImBIR%2Fbtsg0Wnnw1X%2FAYe7swWq0QLEkFE5AiWyK1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.웹3.0 생태계에서 소울 바운드 토큰의 역할&amp;nbsp;&lt;/b&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;- NFT&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;NFT는 고유성을 바탕으로 위조 사례를 방지하려는 목표를 가지고 있지만 누구나 타인의 작품을 도용하여 NFT로 만들 수 있다는 것이 현재 NFT의 가장 큰 문제중 하나로 지적되고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;이와 같은 문제점을 보완하기 위해 신원인증이 가능한 소울 바운드 토큰을 사용한다면 원작자가 발행한 NFT만 진품으로 인정받을 수 있어 작품 도용 문제를 해결하는 데 큰 도움이 될 것입니다.&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;- 평판 및 신용 시스템&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;블록체인 디파이(DeFi)플랫폼이 이용자들을 대상으로 하여 거래 실적에 따른 각종 신용 정보와 평판 정보를 담은 소울 바운드 토큰을 발행해 줄 수 있습니다. 이를 통해 이용자는 다양한 형태의 신용 정보를 포인트 모으듯 쌓을 수 있고 디파이 플랫폼은 소울 바운드 토큰을 통해 확인되는 고객의 실적, 평파정보, 신용을 활용하여 좀 더 세분화된 서비스를 기획할 수 있게 될 것입니다. 또한 &quot;전송, 판매면 안되는&quot; 정보로 각종 학위 증명, 대출기록, 인증서 등이 소울 바운드 토큰의 형태롤 사용자의 개인 지갑에 저장되고, 사용자가 상대방에 따라 필요한 정보만 보여주도록 하는 형태가 필요한 다양한 파생 서비스들이 등장할 것으로 기대할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;- 블록체인 민주주의 거버넌스 개선&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;현존하는 블록체인 거버넌스는 1인 1표제가 아닌 1토큰 1표를 따르는 금권 정치라고 할 수 있습니다. PoW는 더 많은 채굴기를 '구매'할 수 있는 조직이, PoS는 더 많은 토큰을 '구매'할 수 있는 조직, DPos는 더 많은 토큰을 위임할 수 있는 조직이 해당 블록체인의 의사결정을 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;블록체인 거버넌스가 금권정치로 흐를 수 밖에 없는 이유중 가장 큰 것은 신원인증의 부재 입니다. 따라서 소울 바운드 토큰으로 거버넌스 참여자의&amp;nbsp; 평판 및 해당 블록체인에 대한 기여등을 기록하여 거버넌스 결정 과정에 참여할 수 있는 권한을 준다면 돈으로 결정되는 기존 블록체인 금권 정치에서 벗어나 진정한 민주주의 방식으로 블록체인의 의사 결정이 가능할 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;소울 바운드 토큰의 활용은 '커뮤니티가 주인인 인터넷'을 표방하는 웹3.0의 흐름에 있어 핵십적인 역할을 하게 될 주요 축으로 작용할 것으로 예상할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.upbitcare.com/academy/education/nft/332&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://m.upbitcare.com/academy/education/nft/332&lt;/a&gt;&lt;/p&gt;</description>
      <category>Block chain/NFT</category>
      <category>nft</category>
      <category>SBT</category>
      <category>소울바운드토큰</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/39</guid>
      <comments>https://rokchain.tistory.com/39#entry39comment</comments>
      <pubDate>Tue, 23 May 2023 10:14:18 +0900</pubDate>
    </item>
    <item>
      <title>[Polygon zk Roll-up에 대해 알아야 할 모든것-1]</title>
      <link>https://rokchain.tistory.com/38</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 1. zk Roll-Up이란?&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;946&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dn3joN/btsdGmQ2GL2/ld61kTAj41hkVlxJLItpm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dn3joN/btsdGmQ2GL2/ld61kTAj41hkVlxJLItpm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dn3joN/btsdGmQ2GL2/ld61kTAj41hkVlxJLItpm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdn3joN%2FbtsdGmQ2GL2%2Fld61kTAj41hkVlxJLItpm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1800&quot; height=&quot;946&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;946&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;폴리곤 영지식 롤업은 다수의 오프체인 트랜잭션을 단일 온체인 트랜잭션으로 집계하기위한 스케일링 솔루션입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;폴리곤 영지식체계는 이더리움 메인넷에서 채굴하는 채굴자가 모든 롤업에 대한 유효한 증명(또는 영지식 증명)을 생성함에 개별적 트랜잭션을 확인할 필요성을 제거하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;유효성 증명은 수학적으로 증명할 수 있기 때문에 이더리움 네트워크는 배치 트랜잭션의 진위를 신뢰없이 확인할 수 있습니다. 악의적인 활동을 제거하는 것이 더욱 어려워짐으로써 롤업의 보안이 향상됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;더 중요한 것은 유효성 증명(또는 영지식 증명)이 메인 체인 위의 롤업 트랜잭션을 즉각적으로 확인할 수 있다는 것 입니다. 사용자는 마찰 또는 지연 없이 롤업과 기본 블록체인 사이에서 자금을 매끄럽게 이동할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;대조적으로 옵티미스틱 롤업(옵티미즘 또는 아비트럼)은 사용자가 자금을 인출하기 전에 웨이팅 기간을 부과합니다. 이러한 제한은 롤업의 효용성과 사용자의 가치를 감소시킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;폴리곤 네트워크는 이전에 ZK 롤업을 통해 이더리움 확장 약속을 반벅하였고 10억 달러 이상을 영지식 기술에 투자하는 계획을 세웠습니다. &lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;ZK rollups, including Zero, Hermez, Miden, and Nightfall을 포함하여&amp;nbsp;&lt;/span&gt;최소한 폴리곤 스택에 있는 4개의 제품을 베이스로 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;--영지식 증명이란--&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영지식 증명은 어떠한 나타내어지는 진술의 공개 없이 타당성을 증명하는데 사용됩니다. 이것은 블록체인 컨택스트의 상태전환과 zkEVM 솔루션의 의사전달에 사용되어 집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 2. Polygon Zero란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Polygon Zero는 유효성 증명 발행 계산비용을 줄이기 위해 특별히 디자인되어진 ZK Rollup Solution입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;ZK Rollup은 확장시킬 수 있지만 집약적 시간과 증명 발행 프로세스의 비용적 측면 때문에 그들의 기능을 제한되게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Polygon Zero는 재귀적 증명을 사용하여 존재하는 증명 시스템 보다 빠르게 문제를 해결합니다. 이러한 재귀적 증명은 미르프로토콜팀이 개발한 기계적 증명인 Plonky2로부터 왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;미르 프로토콜은 팀이 폴리곤에 합병되기까지 분산 응용프로그램(dApp)을 확장하기 위해 재귀적 ZK 증명을 탐색하기 위한 프로젝트 였습니다. 미르 프로토콜 코어팀은 확장 가능한 증명을 지속적으로 연구하여 2022년 1월 초에 &lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;Plonky2를 출시했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J3YCi/btsdJg21f5w/K6IFKmeGtfa5p219wbUCi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J3YCi/btsdJg21f5w/K6IFKmeGtfa5p219wbUCi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J3YCi/btsdJg21f5w/K6IFKmeGtfa5p219wbUCi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ3YCi%2FbtsdJg21f5w%2FK6IFKmeGtfa5p219wbUCi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1490&quot; height=&quot;832&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;832&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;재귀적 증명 시스템은 존재하는 ZK 증명 매커니즘과 다르게 &lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;동작합니다. 기존의 프로젝트에서 아이디어는 한 번에 하나의 일괄 처리 트랜잭션을 생성하는 방식입니다. 그러나 이 방법은 시간이 너무 많이 소요됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;Polygon Zero는 배치에의 모든 트랜잭션에 대해 동시에 증명을 생성함으로써 다른 접근방식을 채택합니다. 그러면 기계는 이더리움 네트워크에 위에 단을 증명으로 제출함으로 &lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;여러 트랜잭션 증명을 집계합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;이 매커니즘은 트랜잭션 롤업에 대한 유효성 증명을 생성하는데 드는 &lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;노력을 &lt;span style=&quot;background-color: #ffffff; color: #0c0c0e; text-align: start;&quot;&gt;많이 줄입니다. Polygon Zero의 Plonky2는 재귀적 증명으로 0.17초안에 생성하며, 오늘날 가장 빠른 ZK 증명방식이라고 할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Polygon Zero는 이더리움 가상머신(EVM)과 호환되게 디자인 되었고 블록당 3000개의 트랜잭션을 처리할 수 있습니다. 비록 Polygon Zero가 아직까지 출시되지 않았지만 암호화 연구의 추가 혁신을 통해 이더리움 생태계에서 지배적인 ZK 롤업 프로젝트로 포지션할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.alchemy.com/overviews/polygon-zk-rollups&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.alchemy.com/overviews/polygon-zk-rollups&lt;/a&gt;(폴리곤 공식문서)&lt;/p&gt;</description>
      <category>Block chain/Polygon</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/38</guid>
      <comments>https://rokchain.tistory.com/38#entry38comment</comments>
      <pubDate>Wed, 3 May 2023 12:23:02 +0900</pubDate>
    </item>
    <item>
      <title>[Off-Chain이란?]</title>
      <link>https://rokchain.tistory.com/37</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;이전 글에서 오프체인이라는 말을 적지않게 보셨을 것 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그래서 이번에는 오프체인이라는 용어에 대해 설명을 하려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 1. On-Chain&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Off-Chain을 설명하기 앞서 On-chain에 대해서 설명부터 드리겠습니다. 정확히는 On-chain Transaction으로 말 그대로 체인위에서 발생하는 트랜잭션을 의미합니다. 여기서 체인은 메인(단일) 블록체인 네트워크를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;대표적인 예로 우리가 흔히 알고 있는 비트코인, 이더리움 등이 있습니다. 이들처럼 자체 네트워크를 구성하고 있는 블록체인 내에서 발생되어 블록에 기록되는 트랜잭션을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 2. Off-Chain&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Off-Chain은 단어에서도 느낄 수 있듯이 On-chain의 반대입니다. On-chain이 메인 블록체인 위에서 발생하는 트랜잭션이라면 Off-chain은 메인 블록체인이 아닌 곳에서 발생하는 트랜잭션을 의미합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예를 들면 이더리움 네트워크 입장에서 보면 비트코인 네트워크에서 발생하는&amp;nbsp; 트랜잭션은 오프체인 트랜잭션이 되고, 비트코인 네트워크 입장에서 이더리움 네트워크에서 발생하는 트랜잭션은 오프체인이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그렇다면 왜 Off-chain을 많이 사용하는 걸까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 3. Off-Chain을 선택하는 이유&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이유는 정말 간단합니다. 온체인 트랜잭션의 문제점을 보안하기 위해 사용되는 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 처리 속도&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;트랜잭션이 발생하고 해당 트랜잭션이 블록체인 네트워크에 전파되어 확정되는데 까지는 상당히 오랜 시간이 소요됩니다. 그래서 빠른 처리가 필요한 서비스는 온체인이 아닌 오프체인에서 처리하는 경우가 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. Privaacy&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;블록체인위에 올라가는 트랜잭션들은 모두 장부에 기록되며 그 장부는 모든 사람들에게 공개되어 있습니다. 하지만 공개를 원치 않는 개인정보와 같은 민감한 정보가 담겨있는 트랜잭션을 발생시켜야 한다면 그 때 오프체인을 활용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 비용과 확장성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;트랜잭션 검증 시 채굴자에게 지불해야하는 비용이 발생합니다. 그런데 초당 처리할 수 있는 트랜잭션의 수가 너무 적기때문에 비번하게 일어나는 서비스들을 온체인에서 수행하게 된다면 수수료를 서비스료보다 더 많이 지불해야 하는 경우가 발생합니다. 그러한 문제점을 보안해줄 수 있는 것이 오프체인입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 4. Off-Chain 트랜잭션 처리 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 상태 / 지불 채널&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;거래하는 두 사용자만의 채널을 열어 오프체인 트랜잭션을 수행합니다. 그리고 최종 결과에 해당하는 트랜잭션만 메인 체인의 트랜잭션으로 만들어 반영하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. Side Chain(사이드 체인)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;TPS가 높은 합의 방식을 채택하는 블록체인 네트워크를 구성하여 오프체인 네트워크에서 트랜잭션을 빠르게 수행하고 최종 결과값을 메인 체인 네트워크에 반영하는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. Child Chain(자식 체인)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;사이드체인은 속도가 빠른 하나의 체인을 이용하는 방식이 었다면, 차일드 체인은 체인을 분산 / 병렬 처리가 가능한 하위체인을 많이 형성하는 방법입니다. 분산하여 빠르게 처리한 후 최종 결과값만 메인 체인에 반영합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://steemit.com/kr-dev/@modolee/onchain-offchain&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://steemit.com/kr-dev/@modolee/onchain-offchain&lt;/a&gt;&lt;/p&gt;</description>
      <category>Block chain/Polygon</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/37</guid>
      <comments>https://rokchain.tistory.com/37#entry37comment</comments>
      <pubDate>Mon, 1 May 2023 16:52:24 +0900</pubDate>
    </item>
    <item>
      <title>[Instance 정의]</title>
      <link>https://rokchain.tistory.com/36</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 1. Instance란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;인스턴스는 주로 하나의 컨트랙트에서 다른 컨트랙트로 접근할 때 쓰입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;객체지향 언어에서 객체와 비슷한 개념이라고 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예를 들어 A컨트랙트와 B컨트랙트가 있다고 가정했을 때, B컨트랙트에서 A에 정의된 함수들을 사용하고 싶다면 A인스턴스를 만들어 B에서 사용하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1682877962907&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// SPDX-License-Identifier:GPL-30
pragma solidity ^0.8.0;

contract A{
    
    uint256 public a = 2;
    
    function change(uint256 _value) public {
        a = _value;
    } 

}

contract B{

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위와 같은 스마트 컨트랙트에서 A에 있는 변수나 함수를 B에서 사용하려면 어떻게 해야 할까요???&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;정답은 우선 A를 인스턴스화해야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1682878063560&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// SPDX-License-Identifier:GPL-30
pragma solidity ^0.8.0;

contract A{
    
    uint256 public a = 2;
    
    function change(uint256 _value) public {
        a = _value;
    } 

}

contract B{
	A aaa = new A();	// 인스턴스화
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위와 같이 인스턴스화를 해주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;자바의 new를 이용해서 인스턴스를 만들어주는 방법과 비슷하죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이제 인스턴스화 했으니 접근해서 사용을 해야할 차례입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;다른 언어와 비슷하게 &lt;b&gt;접근은 .을 이용하여 접근할 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1682878308428&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// SPDX-License-Identifier:GPL-30
pragma solidity ^0.8.0;

contract A{
    
    uint256 public a = 2;
    
    function change(uint256 _value) public {
        a = _value;
    } 

}

contract B{
    
    A aaa = new A();
    
    function get_A() public view returns(uint256) {
        return aaa.a();
    }
    function change_A(uint256 _value) public  {
        aaa.change(_value);
    }    

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위의 스마트 컨트랙트에서 .을 이용하여 접근하는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;★ 주의사항 : 변수에 접근할 때는 ()를 붙어야지 접근이 가능합니다. 위의 예제에서도 aaa.a()의 형태로 접근하는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;인스턴스는 A컨트랙트의 분신과도 같은 존재입니다. 다시말해서 A 스마트 컨트랙트를 배포하고 인스턴스 A를 B를 통해 배포한다고 가정했을 때, 두 개의 스마트 컨트랙트는 완전히 다른 컨트랙트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;따라서 인스턴스를 만들어서 변수 a의 값을 변경한다고 해도 원래의 A 컨트랙트에는 어떠한 영향도 주지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://dayone.tistory.com/m/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dayone.tistory.com/m/9&lt;/a&gt;&lt;/p&gt;</description>
      <category>Solidity</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/36</guid>
      <comments>https://rokchain.tistory.com/36#entry36comment</comments>
      <pubDate>Mon, 1 May 2023 03:18:41 +0900</pubDate>
    </item>
    <item>
      <title>[Polygon zkEVM 개념]</title>
      <link>https://rokchain.tistory.com/35</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 1. Polygon zkEVM이란?&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/svDtr/btsdpzhj1f6/UWl7yQfFT6tqVCszOx6Wa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/svDtr/btsdpzhj1f6/UWl7yQfFT6tqVCszOx6Wa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/svDtr/btsdpzhj1f6/UWl7yQfFT6tqVCszOx6Wa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsvDtr%2Fbtsdpzhj1f6%2FUWl7yQfFT6tqVCszOx6Wa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;500&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Polygon zkEVM은 암호화 영지식 증명을 사용하여 &lt;b&gt;ZK&lt;/b&gt;&lt;b&gt;-Rollup&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이라고 하는 오프체인 트랜잭션 계산에 유효성과 빠른 완결성을 제공하는 분산형 이더리움 레이어 2 확장성 솔루션입니다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;ZK-Rollup은 이더리움 가상 머신과 opcode 호환성을 유지하면서 영지식 유효성 증명을 게시하여 스마트 계약을 투명하게 실행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 2. zkEVM으로 이더리움 확장&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;이더리움이 DLP(분산 원장 기술)&lt;/b&gt;의 트릴레마를 적용받는 점을 생각했을 때 탈중앙화 또는 보안을 희생하지 않고서는 트랜잭션 한계값 이상으로는 확장할 수 없습니다. 여기서 zkEVM이 활약을 하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Polygon zkEVM은 기존에 존재하는&amp;nbsp; 이더리움 스마트 컨트랙트의 투명한 배포를 위해 기존의 모든 EVM opcode를 재생성하여 이더리움 가상머신을 흉내내도록 개발 및 설계가 된 가상머신입니다. 폴리곤은 이더리움 메인넷 위에서 실행되고 이더리움의 확장성과 초당 트랜잭션(TPS)을 기하급수적으로 개선하는 영지식 롤업(ZK-ROLLUPS)를 개발했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;오프체인 계산이 정확하다는 것을 입증하기 위해서 Polygon zkEVM는 검증 가능한 영지식 증명을 유효성 증명으로 사용합니다. 레이어 2 영지식 증명은 비록 복잡한 다항식 계산을 기반으로 오프체인 트랜잭션에 유효성 검사 및 최종성을 제공하지만 유효성 증명은 빠르고 쉽게 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;상태 머신으로서 zkEVM은 사용자가 네트워크로 전송하는 이더리움의 레이어 2 트랜잭션 실행에서 발생하는 상태 변경을 수행하고 이후에 오프체인에서 수행되는 상태 변경 계산의 정확성을 증명하는 유효성 증명을 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 3. Benefit of Polygon zkEVM&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. EVM 등가&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 이더리움 보안성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. ZKP 기반  확장성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Polygon&amp;nbsp;zkEVM은&amp;nbsp;이더리움&amp;nbsp;호환성을&amp;nbsp;유지하면서&amp;nbsp;영지식&amp;nbsp;증명의&amp;nbsp;확장&amp;nbsp;기능을&amp;nbsp;활용하는&amp;nbsp;이더리움용&amp;nbsp;레이어&amp;nbsp;2&amp;nbsp;확장&amp;nbsp;솔루션입니다.&amp;nbsp;Polygon&amp;nbsp;zkEVM의&amp;nbsp;개발자와&amp;nbsp;사용자는&amp;nbsp;Ethereum에서&amp;nbsp;사용하는&amp;nbsp;것과&amp;nbsp;동일한&amp;nbsp;코드,&amp;nbsp;도구,&amp;nbsp;앱&amp;nbsp;등을&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있지만&amp;nbsp;처리량은&amp;nbsp;훨씬&amp;nbsp;높고&amp;nbsp;수수료는&amp;nbsp;낮습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;개발자는 존재하는 컨트랙트를 zkEVM을 통해 배포할 수 있고, 사용자는 이더리움으로 부터 자산을 예치하고 오프체인에서 거래를 할 수 있습니다. 이러한 트랜잭션은 각 트랜잭션의 유효성을 증명하는 영지식 증명을 사용하여 배치로 그룹화 됩니다. 이것은&amp;nbsp;zkEVM&amp;nbsp;운영자가&amp;nbsp;사용자&amp;nbsp;자금을&amp;nbsp;훔칠&amp;nbsp;수&amp;nbsp;없도록&amp;nbsp;보장하므로&amp;nbsp;이더리움의&amp;nbsp;보안을&amp;nbsp;계승한다고&amp;nbsp;말할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이처럼 Polygon zkEVM은 타협없는 호환성과 확장성을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;https://zkevm.polygon.technology/docs/introduction(공식문서)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Block chain/Polygon</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/35</guid>
      <comments>https://rokchain.tistory.com/35#entry35comment</comments>
      <pubDate>Sun, 30 Apr 2023 21:16:31 +0900</pubDate>
    </item>
    <item>
      <title>[Polygon 네트워크]</title>
      <link>https://rokchain.tistory.com/34</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 1. Polygon 이란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Polygon은 이더리움 기반의 Layer 2 스케일링 솔루션 중 하나로 이더리움 네트워크의 확장성 문제를 해결하기 위해 만들어졌습니다. 초기의 Polygon은 Matic Network으로 알려졌으며, 이더리움 네트워크에서 트랜잭션 처리 속도를 대폭 높이는 것을 목표로 개발되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;903&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YvSVU/btsdeHAjNXo/gwbzV5kQudgKnRbHSxj8dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YvSVU/btsdeHAjNXo/gwbzV5kQudgKnRbHSxj8dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YvSVU/btsdeHAjNXo/gwbzV5kQudgKnRbHSxj8dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYvSVU%2FbtsdeHAjNXo%2FgwbzV5kQudgKnRbHSxj8dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;903&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;903&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Polygon은 이더리움 기반의 Layer 2솔루션 답게 PoS(Proof of Staking)방식을 사용하여 효율적으로 블록을 생성하고 최종성을 확보합니다. 또한 이더리움의 단점인 비싼 가스비용을 효율적으로 절감하고, 빠른 트랜잭션 처리속도를 제공하여 더 낮은 수수료로 더 많은 거래를 처리할 수 있도록 해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Polygon은 이더리움 네트워크와 상호운영이 가능하다는 장점이 있으며 이더리움 계정 및 스마트 컨트랙트를 사용할 수 있습니다. 또한 Polygon은 다른 블록체인 네트워크와의 상호운영을 위해 다리 역할을 수행하는 Poly Bridge를 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위와 같은 기능을 활용해 Polygon 네트워크는 게임, 디파이, 실시간 거래 등 다양한 분야에서 사용 될 수 있으며 이더리움 네트워크의 확장성 문제를 해결하는데 큰 역할을 하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 2. Poly Bridge&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;Poly Bridge는 Polygon 네트워크와 다른 블록체인 네트워크 간의 상호 운영을 위한 다리 역할을 수행하는 프로토콜입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;이를 사용하면, 사용자는 다른 블록체인 네트워크에서 발행된 자산을 Polygon 네트워크로 이전할 수 있습니다. 이를 통해 Polygon 네트워크에서 디파이와 같은 다양한 애플리케이션에 참여하고 수익을 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;Poly Bridge는 다양한 블록체인 네트워크와 상호 운영이 가능하게 합니다. 예를 들어 이더리움, 바이낸스 스마트 체인, 아발란체 등 다양한 블록체인 네트워크와 상호 운영함으로써 다른 블록체인 네트워크에서 발행된 자산을 Polygon 네트워크로 이전하여 다양한 프로젝트에 참여 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;또한, Poly Bridge는 안전하고 높은 신뢰성이 있는 다리 역할을 수행합니다. Poly Bridge에서 사용되는 스마트 컨트랙트는 투명하고 안전하여 보안 위협으로 부터 안전하게 보호됩니다. 때문에 사용자는 안전하게 자산을 이전하며 다양한 프로젝트에 참여할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;# 3. Poly Birdge사용 예시 코드&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;글로만 봐서는 사용법을 잘 모르실 것 같아 간단한 스마트 컨트랙트를 만들어 사용법을 만들어 봤습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1682780164260&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Poly Bridge 사용 예시 코드
pragma solidity ^0.8.0;

// Poly Bridge 라이브러리 임포트
import &quot;https://github.com/PolyBridge/PolyBridge/blob/main/contracts/PolyBridge.sol&quot;;

// 토큰 컨트랙트 정의
contract Token {
    string public name = &quot;My Token&quot;;
    string public symbol = &quot;MTK&quot;;
    uint public decimals = 18;
    uint public totalSupply = 1000000 * 10**decimals;

    mapping(address =&amp;gt; uint) public balanceOf;
    mapping(address =&amp;gt; mapping(address =&amp;gt; uint)) public allowance;

    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);

    constructor() {
        balanceOf[msg.sender] = totalSupply;
    }

    function transfer(address _to, uint _value) external returns (bool success) {
        require(balanceOf[msg.sender] &amp;gt;= _value, &quot;Insufficient balance&quot;);
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function approve(address _spender, uint _value) external returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint _value) external returns (bool success) {
        require(balanceOf[_from] &amp;gt;= _value, &quot;Insufficient balance&quot;);
        require(allowance[_from][msg.sender] &amp;gt;= _value, &quot;Insufficient allowance&quot;);
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        allowance[_from][msg.sender] -= _value;
        emit Transfer(_from, _to, _value);
        return true;
    }
}

// Poly Bridge 사용 예시
contract MyContract {
    Token public token;

    // Poly Bridge 라이브러리 선언
    using PolyBridge for address;

    constructor() {
        token = new Token();
    }

    function transferToPolygon() external {
        // Poly Bridge 라이브러리를 사용하여 Binance Smart Chain에서 Polygon 네트워크로 토큰 이전
        address receiver = 0x1234567890123456789012345678901234567890; // Polygon 네트워크의 수신자 주소
        uint256 amount = 1000; // 이전할 토큰 양
        address tokenAddress = address(token); // 이전할 토큰의 주소
        token.approve(address(this), amount); // 이전할 토큰의 승인
        token.transferFrom(msg.sender, address(this), amount); // 이전할 토큰을 이 컨트랙트로 이전
        token.approve(address(this), 0); // 승인 취소
        address(this).transferToPolygon(receiver,amount, tokenAddress); // Poly Bridge 라이브러리를 사용하여 Polygon 네트워크로 토큰 이전
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;위 코드는 Binance Smart Chain에서 MyContract라는 컨트랙트를 생성하고, Polygon 네트워크로 토큰을 이전하는 코드입니다. Poly Bridge 라이브러리를 사용하여 Binance Smart Chain에서 Polygon 네트워크로 토큰을 이전하고 있습니다.&lt;br /&gt;&lt;br /&gt;'address receiver'는 이전할 토큰의 수신자 주소를 나타내고 'uint256 amount'는 이전할 토큰의 양을 나타냅니다. 'address tokenAddress'는 이전할 토큰의 주소를 나타냅니다.&lt;br /&gt;&lt;br /&gt;'token.approve' 함수를 사용하여 이전할 토큰의 승인을 하고 'token.transferFrom' 함수를 사용하여 이전할 토큰을 이 컨트랙트로 이전합니다. 이후 'token.approve' 함수를 다시 호출하여 승인을 취소합니다.&lt;br /&gt;&lt;br /&gt;마지막으로, 'address(this).transferToPolygon' 함수를 사용하여 Poly Bridge 라이브러리를 사용하여 Polygon 네트워크로 토큰을 이전합니다. 이 때, 'address(this)'는 현재 컨트랙트의 주소를 나타냅니다. 'amount'와 'tokenAddress'는 이전할 토큰의 양과 주소를 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Block chain/Polygon</category>
      <category>layer2</category>
      <category>poly bridge</category>
      <category>Polygon</category>
      <category>폴리 브리지</category>
      <category>폴리곤</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/34</guid>
      <comments>https://rokchain.tistory.com/34#entry34comment</comments>
      <pubDate>Sun, 30 Apr 2023 00:04:02 +0900</pubDate>
    </item>
    <item>
      <title>[DApp 댑!!!(Decentralized Application)]</title>
      <link>https://rokchain.tistory.com/33</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 1. 댑(DApp)이란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;댑(DApp)이란 &lt;/b&gt;탈중앙화 애플리케이션의 약자로&amp;nbsp;&lt;b&gt;탈중앙화된 블록체인 플랫폼을 기반으로 작동하는 앱&lt;/b&gt;을 말합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zUjs0/btsdc68SMEm/eQ2jdX7dcX6d4iKnVaakm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zUjs0/btsdc68SMEm/eQ2jdX7dcX6d4iKnVaakm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zUjs0/btsdc68SMEm/eQ2jdX7dcX6d4iKnVaakm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzUjs0%2Fbtsdc68SMEm%2FeQ2jdX7dcX6d4iKnVaakm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;328&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;기존의 중앙화 애플리케이션은 중앙 서버에 데이터를 저장하고 그 운용 또한 중앙 서버를 통해서 이루어졌습니다. 하지만 댑에서는 중앙 서버 없이 서버가 가졌던 신뢰와 권한을 블록체인 네트워크에 참여하는 수많은 컴퓨터(노드)가 나눠서 가지게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;댑은 &lt;b&gt;스마트 컨트랙트가 도입되기 시작하면서 본격적으로 사용된 개념&lt;/b&gt;으로 현재는 DeFi, DAO, NFT마켓플레이스, P2E(Play To Earn)등 다양한 형태로 발전하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;대표적인 예로 가상자산에서 가장 많이 사용되는 댑은 탈중앙화 거래소(DEX, Decentralized Exchange)입니다. 업비트와 같은 특정 운영 주체가 거래를 매개하는 중앙화된 거래방식과는 달리&amp;nbsp;&lt;b&gt;탈중앙화 거래소는 중간 매개자 없이 스마트 컨트랙트를 통해서 유저와 유저가 직접 거래를 하도록 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 2. DApp의 장점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 보안성 및 투명성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;데이터를 중앙화된 데이터베이스에 저장하는 기존의 앱과는 다르게 중요 데이터를 탈중앙화된 블록체인에 저장함으로써 데이터의 보안성과 투명성을 높일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 인센티브&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;사용자의 참여 및 행동에 따라 스마트 컨트랙트를 통해 코인을 제공할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 거버넌스 참여&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;프로젝트 방향성에 대한 제안 및 공동 의사 결정을 코인 보유자들이 투표로 정할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;---거버넌스란---&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;블록체인에서의 거버넌스란 한 사람 또는 기관이 통치하는 개념이 아닌 어떠한 시스템을 운영하기 위해 여러사람 또는 기관이 의사결정을 하는 과정을 의미합니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 3. DApp의 단점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 느린 속도&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;블록체인은 블록생성 시간에 다란 속도가 달라지지만 일반적인 앱보다는 속도가 느리다는 단점이 있습니다. 또한 댑의 사용량이 증가하여 블록체인 처리량을 초과하게 되면 더욱 느려집니다. 스피드를 중요시 하는 대한민국 사회나 빠른 변화를 거듭하고 있는 현 시대에서는 반드시 해결해야 할 중요한 과제입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 높은 비용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;블록체인의 유지비용은 일반 중앙화된 서버에 저장하는 비용보다 비쌉니다. 즉, 블록체인에 데이터를 기록하는데는 비용이 발생하며 이를 가스(Gas)비용이라 부릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 불편한 사용자 경험&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;블록체인을 사용하는 모든 이용자들은 위의 단점들을 경험하게 됩니다. 다시말해 사용자는 느린 블록체인의 속도로 즉각적으로 댑과 상호작용할 수 없으며, 높은 거래비용을 사용자가 직접 지불해야하는 단점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://upbitcare.com/academy/education/blockchain/239&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://upbitcare.com/academy/education/blockchain/239&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Block chain/Basic of Blockchain</category>
      <category>DAPP</category>
      <category>댑</category>
      <category>디앱</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/33</guid>
      <comments>https://rokchain.tistory.com/33#entry33comment</comments>
      <pubDate>Sat, 29 Apr 2023 22:50:52 +0900</pubDate>
    </item>
    <item>
      <title>[String 타입]</title>
      <link>https://rokchain.tistory.com/32</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 1. String 타입&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;String 타입은 모두가 알고 있듯이 문자열을 의미합니다. String 타입을 function 내에서 사용하려면 memory 라는 키워드가 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;memory는 솔리디티내에 있는 저장영역중에 하나 인데요, 솔리디티 저장영역은 4개가 존재합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- &lt;b&gt;memory&lt;/b&gt; : 함수의 파라미터, 리턴값, 레퍼런스 타입이 주로 저장됩니다. 하지만 storage 처럼 영속적이지 않고 함수내에서만 유효하기에 storage보다 가스비용이 쌉니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- &lt;b&gt;storage&lt;/b&gt; : 대부분의 변수, 함수들이 저장되며, 영속적으로 저장이 되기 때문에 가스비용이 비쌉니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- &lt;b&gt;Calldata&lt;/b&gt; : 주로 external function의 파라미터에 사용됩니다. 예를 들어 함수를 실행할 때 파라미터의 값 자체를 calldata로 받을 수 있습니다. calldata로 값을 받게 된다면 값은 변경할 수 없고 읽기만 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- &lt;b&gt;stack&lt;/b&gt; : EVM에서 stack data를 관리할 때 사용하는 영역으로 1024개의 data를 제한적으로 저장하여 사용할 수 있습니다. 예를 들어 함수를 실행할 때 로컬영역의 변수들을 잠시 기억할 때 EVM이 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;String은 레퍼런스 타입으로 볼 수 있습니다. 그래서 memory 키워드를 넣어주어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;간단한 예제를 통해서 보여드리겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1682697577755&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

contract String{
	function get_string(string memory _str) public view return(string memory){
    	return _str;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위의 코드에서 볼 수 있듯이 string을 그대로 받아서 리턴합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;string 매개변수 뒤에 memory를 사용한 것 또한 볼 수 있습니다. 이처럼 memory와 string은&amp;nbsp; 앞으로 한 쌍으로 보면 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://dayone.tistory.com/m/8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dayone.tistory.com/m/8&lt;/a&gt;&lt;/p&gt;</description>
      <category>Solidity</category>
      <category>려</category>
      <author>rok92</author>
      <guid isPermaLink="true">https://rokchain.tistory.com/32</guid>
      <comments>https://rokchain.tistory.com/32#entry32comment</comments>
      <pubDate>Sat, 29 Apr 2023 01:01:52 +0900</pubDate>
    </item>
  </channel>
</rss>