개발 학습/블록체인31 S4: DID / SSI DID란 데이터의 주권이 개개인에게 있고, 필요할때 중앙화된 시스템을 거치지 않고 증명하는 기술이다. SSI는 DID를 이용해 중앙화된 인증방식이 아닌 탈중앙화 된 인증방식으로 신원증명권한이 자신이 갖도록하는 것이다. W3C는 플랫폼기업이 사용자의 데이터를 중앙화하여 가지게 되는것을 서비스의 연동이 불가능하게 때문이라고 했다. 데이터 탈중앙의 가장 중요한 부분은 데이터연동이다. 중앙화 되지 않은 저장소에 데이터를 저정하는데는 데이터의 무결성과 보안성이 중요해졌고 블록체인을 기술을 활용하기 시작했다. DID문서는 특정DID가 어떻게 사용하는지에 대해 설명해놓은 문서이다. 여기에는 인증정보가 들어가 있으며 DID 형식은 did는 DID스키마를 따를것을 나타낸다. example은 did를 어떤 메소드로 처리할.. 2021. 12. 2. S4: KIP17 ganache와 baobab에 배포 KIP17을 Truffle과 ganache와 바오밥네트워크 로 컴파일/배포 바오밥 네트워크 등록을 위한 NPM설치 npm install truffle-hdwallet-provider-klaytn dotenv --save-dev 바오밥 네트워크에서 사용할 지갑의 PRIVATE KEY를 .env로 입력한다. 트러플config에서 ganach와 baobab 을 설정한다. ganache로 배포하는법은 이전 포스트에서 작성했다. 바오밥에 배포하기 ganache에 배포한것처럼 --network 값만 변경하여 다시 컴파일 배포한다. truffle migrate --compile-all --network baobab truffle 콘솔 실행 truffle console --network baobab ganache처럼 .. 2021. 12. 1. S4: mintNFT함수 (NFT 발행) Remix와 openzeppelin의 상속(Import) 사용하여 ERC721작성 ERC721의 변수로 첫번째 MyNFT는 스마트계약의 이름이고 두번째 변수 NFT는 기호이다. 새로운 NFT를 발행하는 mintNFT function mintNFT(address recipient, string memory tokenURI) public onlyOwner //오너만 생성할수 있게한다. returns (uint256) { _tokenIds.increment(); //현재까지 생성된 NTF토큰ID에서 하나올린다. uint256 newItemId = _tokenIds.current(); //현재 만들고있는 NTF으로 새 ID할당 _mint(recipient, newItemId); //받을 사람주소와 새 NTF의 .. 2021. 11. 30. S4: ERC-721 함수 ownerOf(uint256 tokenId) tokenId가 반드시 존재해야하며,tokenId에 해당하는 nft소유자를 리턴한다. function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } setApprovalForAll(address operator, bool _approved) 오퍼레이터의 모든자산을 관리할수 있는 권한을 부여/제거할 수 있다. function setApprovalForAll(.. 2021. 11. 30. S4: 토큰 LOCK 설정 및 제거 bool public _tokenLock; mapping (address => bool) public _personalTokenLock; constructor(string memory getName, string memory getSymbol) { // ~~ _tokenLock = true; } function isTokenLock(address from, address to) public view returns (bool lock) { lock = false; if(_tokenLock == true) { lock = true; } if(_personalTokenLock[from] == true || _personalTokenLock[to] == true) { lock = true; } } _tokenL.. 2021. 11. 29. S4: public 함수 중 관리자만 접근가능함수 OwnerHelper OwnerHelper abstract contract OwnerHelper { address private _owner; event OwnershipTransferred(address indexed preOwner, address indexed nextOwner); modifier onlyOwner { require(msg.sender == _owner, "OwnerHelper: caller is not owner"); _; } constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } function transferOwnership(address newOwner.. 2021. 11. 26. 이전 1 2 3 4 5 6 다음