Let's make Everything

[Polygon 네트워크] 본문

Block chain/Polygon

[Polygon 네트워크]

rok92 2023. 4. 30. 00:04
728x90

# 1. Polygon 이란?

Polygon은 이더리움 기반의 Layer 2 스케일링 솔루션 중 하나로 이더리움 네트워크의 확장성 문제를 해결하기 위해 만들어졌습니다. 초기의 Polygon은 Matic Network으로 알려졌으며, 이더리움 네트워크에서 트랜잭션 처리 속도를 대폭 높이는 것을 목표로 개발되었습니다.

 

Polygon은 이더리움 기반의 Layer 2솔루션 답게 PoS(Proof of Staking)방식을 사용하여 효율적으로 블록을 생성하고 최종성을 확보합니다. 또한 이더리움의 단점인 비싼 가스비용을 효율적으로 절감하고, 빠른 트랜잭션 처리속도를 제공하여 더 낮은 수수료로 더 많은 거래를 처리할 수 있도록 해줍니다.

 

Polygon은 이더리움 네트워크와 상호운영이 가능하다는 장점이 있으며 이더리움 계정 및 스마트 컨트랙트를 사용할 수 있습니다. 또한 Polygon은 다른 블록체인 네트워크와의 상호운영을 위해 다리 역할을 수행하는 Poly Bridge를 제공합니다.

 

위와 같은 기능을 활용해 Polygon 네트워크는 게임, 디파이, 실시간 거래 등 다양한 분야에서 사용 될 수 있으며 이더리움 네트워크의 확장성 문제를 해결하는데 큰 역할을 하고 있습니다.

 

# 2. Poly Bridge

Poly Bridge는 Polygon 네트워크와 다른 블록체인 네트워크 간의 상호 운영을 위한 다리 역할을 수행하는 프로토콜입니다.

이를 사용하면, 사용자는 다른 블록체인 네트워크에서 발행된 자산을 Polygon 네트워크로 이전할 수 있습니다. 이를 통해 Polygon 네트워크에서 디파이와 같은 다양한 애플리케이션에 참여하고 수익을 얻을 수 있습니다.

 

Poly Bridge는 다양한 블록체인 네트워크와 상호 운영이 가능하게 합니다. 예를 들어 이더리움, 바이낸스 스마트 체인, 아발란체 등 다양한 블록체인 네트워크와 상호 운영함으로써 다른 블록체인 네트워크에서 발행된 자산을 Polygon 네트워크로 이전하여 다양한 프로젝트에 참여 할 수 있습니다.

 

또한, Poly Bridge는 안전하고 높은 신뢰성이 있는 다리 역할을 수행합니다. Poly Bridge에서 사용되는 스마트 컨트랙트는 투명하고 안전하여 보안 위협으로 부터 안전하게 보호됩니다. 때문에 사용자는 안전하게 자산을 이전하며 다양한 프로젝트에 참여할 수 있습니다.

 

# 3. Poly Birdge사용 예시 코드

글로만 봐서는 사용법을 잘 모르실 것 같아 간단한 스마트 컨트랙트를 만들어 사용법을 만들어 봤습니다.

// Poly Bridge 사용 예시 코드
pragma solidity ^0.8.0;

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

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

    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => 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] >= _value, "Insufficient balance");
        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] >= _value, "Insufficient balance");
        require(allowance[_from][msg.sender] >= _value, "Insufficient allowance");
        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 네트워크로 토큰 이전
	}
}


위 코드는 Binance Smart Chain에서 MyContract라는 컨트랙트를 생성하고, Polygon 네트워크로 토큰을 이전하는 코드입니다. Poly Bridge 라이브러리를 사용하여 Binance Smart Chain에서 Polygon 네트워크로 토큰을 이전하고 있습니다.

'address receiver'는 이전할 토큰의 수신자 주소를 나타내고 'uint256 amount'는 이전할 토큰의 양을 나타냅니다. 'address tokenAddress'는 이전할 토큰의 주소를 나타냅니다.

'token.approve' 함수를 사용하여 이전할 토큰의 승인을 하고 'token.transferFrom' 함수를 사용하여 이전할 토큰을 이 컨트랙트로 이전합니다. 이후 'token.approve' 함수를 다시 호출하여 승인을 취소합니다.

마지막으로, 'address(this).transferToPolygon' 함수를 사용하여 Poly Bridge 라이브러리를 사용하여 Polygon 네트워크로 토큰을 이전합니다. 이 때, 'address(this)'는 현재 컨트랙트의 주소를 나타냅니다. 'amount'와 'tokenAddress'는 이전할 토큰의 양과 주소를 나타냅니다.

 

'Block chain > Polygon' 카테고리의 다른 글

[Polygon zk Roll-up에 대해 알아야 할 모든것-1]  (0) 2023.05.03
[Off-Chain이란?]  (0) 2023.05.01
[Polygon zkEVM 개념]  (0) 2023.04.30