화이트리스트 구현 #1 : https://serverdown.tistory.com/537

영상링크: https://youtu.be/jEpKPYbctlg

mapping 과 배열을 이용한 자료구조를 설명하려고 예를 든것일뿐
이렇게 복잡하게 구현할 필요는 굳이 없을것 같습니다.

소스코드 입니다.

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Storage {

    uint public count = 0;

    mapping(address => uint) private map_addr;
    address[] list_addr;
    bool use_whitelist = true;

    constructor() {
        address a = 0x1e0A33d97f7793035704F5B0d896c631fb47BbE4;
        // map_addr[a] = 1;
        add_whitelist(a);
    }

    function is_whitelist(address addr) public view returns(uint) {
        return map_addr[addr];
    }

    function get_whitelist_by_no(uint no) public view returns(address) {
        return list_addr[no-1];
    }

    function get_whitelist_by_addr(address a) public view returns(uint) {
        return map_addr[a];
    }
    
    function is_whitelist_2() public view returns(uint) {
        return map_addr[msg.sender];
    }

    function add_whitelist(address a) public {
        require(map_addr[a] == 0);

        list_addr.push(a);
        uint no = list_addr.length;
        map_addr[a] = no;
    }
    
    function del_whitelist(address a) public {
        require(map_addr[a] != 0);

        uint no = map_addr[a];
        uint index = no - 1;
        uint last_no = list_addr.length;
        uint last_index = last_no - 1;
        address last_a = list_addr[last_index];
        list_addr[index] = last_a;
        list_addr.pop();

        delete map_addr[a];
        // map_addr[a] = 0;
        if(index == last_index) {
            return;
        }
        
        map_addr[last_a] = no;
    }

    function set_use_whitelist(bool b) public {
        use_whitelist = b;
    }
    
    function mint_a() public {
        if(use_whitelist) {
            require(is_whitelist_2() != 0);
        }

        count++;
        // _mint(no, link);
    }
}

 

화이트리스트를 추가 / 삭제할때마다 이벤트를 남기면 스마트컨트랙트를 굳지 조회할 필요없이
이벤트로그를 모아 보면 현재 화이트리스트에 무엇이 저장되어있는지 알 수 있습니다.
이벤트 구현은 이 부분을 참고해주세요 

이벤트 구현 참고자료: https://serverdown.tistory.com/498

 

코딩자습서/019 스마트컨트렉트 이벤트 모니터 만들어봅시다. / caver-js

이 기능은 이벤트 모니터 라고도 부르고 이벤트 감시기 라고도 부릅니다. 영어로는 watch 나 monitor 라고 부르더군요. 영상주소: https://www.youtube.com/watch?v=HxGpjz9LCc8 소스코드: https://github.com/Go..

serverdown.tistory.com

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상링크: https://www.youtube.com/watch?v=cWM3704pUns

mapping 을 사용했습니다.

단순한 형태로 작성한거구요

솔리디티 코드:

// SPDX-License-Identifier: GPL-3.0
// 0x281725fc1AD9AEDeFb8ADb1f4572E97CA918ED00

pragma solidity >=0.7.0 <0.9.0;

contract Storage {

    mapping(address => uint) private map_addr;
    bool use_whitelist = true;
    uint count = 0;
    
    constructor() {
        address a = 0x1e0A33d97f7793035704F5B0d896c631fb47BbE4;
        add_whitelist(a);
    }

    function is_whitelist(address addr) public view returns(uint) {
        return map_addr[addr];
    }

    function is_whitelist_2() public view returns(uint) {
        return map_addr[msg.sender];
    }

    function add_whitelist(address a) public {
        require(map_addr[a] == 0);

        map_addr[a] = 1;
    }
    
    function del_whitelist(address a) public {
        require(map_addr[a] != 0);

        // map_data[a] = 0;
        delete map_addr[a];
    }

    function set_use_whitelist(bool b) public {
        use_whitelist = b;
    }
    
    function mint_a() public {
        if(use_whitelist) {
            require(is_whitelist_2() != 0);
        }

        count++;
        // _mint(no, link);
    }
}

WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




이 기능은 이벤트 모니터 라고도 부르고 이벤트 감시기 라고도 부릅니다.
영어로는 watch 나 monitor 라고 부르더군요.

영상주소: https://www.youtube.com/watch?v=HxGpjz9LCc8
소스코드: 
https://github.com/GoToTheMetaverse/klay-tutorial-v2/tree/main klaytn-08-event-monitor 폴더입니다.

이벤트 모니터가 있어야 좀더 괜찮은 서비스를 만들수 있습니다.
스마트컨트렉트는 수정이 안되기 때문에 어려운 기능을 구현하다가 버그라도 생기면 리스크가 크기 때문에 적당히 쉬운 기능을 구현하고 이벤트를 이용해서 외부에서 어려운 기능을 구현하는 편이 수정이 용이 합니다.

이 소스는contract.getPastEvents() 를 활용합니다.
 
contract.events.allEvents() 를 이용하는 코드는 제대로 동작이 안되서 생략했습니다.
참고해주세요

 

디스코드봇과 연동했습니다. 디스코트로와서 구경해보세요

가위바위보 게임 페이지: https://klaytngame-1.gunillee.repl.co/
디스코드 초대링크: https://discord.gg/7REtkPHHJX

 

Join the SIDNFT Discord Server!

Check out the SIDNFT community on Discord - hang out with 10 other members and enjoy free voice and text chat.

discord.com

결과 스샷:

 

추후 개발 예정:
1. 전적관리
2. 웹페이지에 실시간 내역 추가
3. 차트나 그래프 추가

의견있으시면 디스코드로와서 이야기해주세요


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




 

2022년 05월 09 업데이트

5월중에 가상화폐에 큰 하락빔이 있을 예정이라고 합니다.
주식 하락에 따른 마진콜을 막기위해 현금화가 필요한 기관들이 많아서
돈이 되는 가상화폐먼저 던지게 된다는 시나리오입니다.

큰하락을 보고 들어오는게 좋을꺼 같습니다. 에정일은 5월말 이내라고 하네요.

출처: https://www.youtube.com/watch?v=fcMX8C0S4so&t=1525s 

 

 

2022년 05월 03일 첫작성

클레이튼의 현재 가격은 874원이군요. 클레이튼만의 문제는 아니고 최근 다들 내리고 있긴합니다.
수수료인상 이야기가 나왔을때 가격이 1400원 정도 였습니다. 많이 하락했죠.

750ston 인 현재 장난질 했다간 코인이 녹나내리를 수준이라 사용하기 어렵습니다. 거기다 코인 가격 자체도 내리는 문제가 있어서 이러지도 저리지도 못하는 가두리 상황 비슷하군요.

그래서 5월 첫째주에 소각도 진행하고 다시 수수료를 30배에서 10배 수준으로 내린다고 하네요
참고내용: https://www.dstreet.io/blockchain/flash-news/2022/04/51938/

미국 금리 인상 상황도 있어서 현재 많은 자산들이 바닥권을 형성하고 있습니다.
금리가 결정나면 당분간은 오르고 다시 금리이슈가 나와서 또 떨어지고를 반복할것 같습니다.

다음번 하락 저점이 이번 하락 저점보다 높다면 장기적으로도 바닥이 아닐까 생각되구요
코인 원가가 이렇게 내리면 수수료 인상 이슈도 같이 희석됩니다.

클레이튼 측에서도 움직임이 있으니 더이상의 하락을 볼수만은 없다는 신호로 판단하구요.
(더 하락하면 회사에서 추가적인 움직일 것이라는 전제가 깔려있습니다.)

이 가격대가 지지되지 않을까 생각하구요.
다시 들어가봅니다. 코인 자산의 10% 정도만요 

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




블록체인에 흥미를 가질 수 있게 가위바위보 게임을 만드는 강좌를 만들었습니다.  (만들만들)

블록체인에 흥미를 가지게 하는게 목적이긴한데 재미 있냐고 하면 그건잘 모르겠군요

 

 

https://www.youtube.com/watch?v=pF5-foXc_kw&t=1s 

첫번째는 truffle 로 스마트컨트렉트를 올려봅시다.

 

 

 

https://www.youtube.com/watch?v=vrWV66J9B0g&t=2s 

두번째는 vue 와 tailwind 로 웹페이지를 만들는 강좌 입니다.

 

 

 

 

세번째로는 UI 를 강화 시키는 강좌 입니다.

https://www.youtube.com/watch?v=wXUi4CsAf8E&t=110s 

 

 

 

 

이후로 실시간 로그를 넣어서 좀더 업그레이드 시켜볼까 생각중입니다.

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상만드는 중에 조코딩님이 먼저 올리셔서 허망하게 날림으로 만들어졌습니다.

뭔가 좀더 업그레이드 해서 쓸모있게 만들어보려구요

 

웹호스팅으로 replit 을 사용하였고

웹프로그래밍은 vue 를 이용했습니다.

클레이튼은 truffle 개발하였습니다.

 

 

https://www.youtube.com/watch?v=RqZ4pUPF3Rc&t=166s 

첫번째 강좌는 truffle 로 스마트컨트렉트를 올리는 강좌입니다.

 

 

 

 

https://www.youtube.com/watch?v=GF5YL0ycW7c&t=402s 

두번째 강좌는 웹페이를 만들어서 올라간 스메트컨트렉트와 연동하는 작업입니다.

vue 와 tailwind 를 이용했습니다.

 

 

이후에는 유니티로 좀더 간지나게 사이트를 만들려고 준비중입니다.

 

 

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




window.ethereum.request({
          method: "wallet_addEthereumChain",
          params: [
            {
              chainId: "0x2019", // 8217
              chainName: "Klaytn Mainnet 8217",
              nativeCurrency: {
                name: "Klaytn",
                symbol: "KLAY",
                decimals: 18,
              },
              rpcUrls: ["https://public-node-api.klaytnapi.com/v1/cypress"],
              blockExplorerUrls: ["https://scope.klaytn.com"],
            },
          ],
        });

이런식으로 요청합니다 해당코드는
클레이튼 메인넷 추가하는 코드입니다.

window.ethereum 앞에 await 같은건 붙이지 마세요
제대로 동작안합니다.
리턴이 promise 이긴한데 이상하게 안되네요

0x02019 는 십진수로 8217 입니다.
클레이튼이 2019 년에 나왔나봅니다. ㅎㅎ


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




봇이 다 가져갔다던 그 민팅현장

"아 저렇게 하는구나" 정도를 구경해 봅니다.

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,