견고함으로 돼지 저금통 스마트 계약 구축
2486 단어 blockchainsolidity
소개
돼지 저금통 개념은 오랫동안 사용되어 왔습니다. 원하는 금액을 모을 때까지 지속적으로 동전을 상자에 넣고 상자를 부수어 돈을 모으던 시절부터 지금까지 모바일과 웹 앱이 돈을 절약할 수 있도록 구축된 파기되기 전 명시된 날짜까지 철회되지 않습니다.
현재 web2 언어를 사용하는 대부분의 fintech 프로젝트는 web3 언어를 사용하여 구축되고 있으며 web3 및 블록체인 개발자에 대한 수요가 증가함에 따라 Solidity 개발자로서 현장에서 유용한 방법을 배우는 것이 필요합니다.
이 기사에서는 Solidity를 사용하여 앞서 언급한 작업을 수행하는 간단한 스마트 계약을 만드는 방법을 배웁니다. 누구나 토큰을 은행에 송금할 수 있지만 소유자만 출금할 수 있으며, 이 출금은 자폭 방식을 호출하여 계약을 해지합니다.
시작하기
누구나 토큰을 보낼 수 있는 스마트 계약을 성공적으로 작성하려면 소유자만 출금할 수 있고 출금 후 스스로 파기할 수 있습니다. 이 기사는 당신을 위한 완벽한 안내서입니다.
Remix IDE를 사용하여 .sol
파일을 구성하고 라이센스 ID 및 버전을 언급하여 설정한 다음 원하는 이름으로 계약서를 작성하십시오.
다음 단계는 이벤트를 만드는 것입니다. 이 계약에는 출금 이벤트와 입금 이벤트의 두 가지 이벤트가 있습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
contract Pbank{
event deposit(uint amount);
event withdraw(uint amount);
}
위의 코드는 수신 기능과 나중에 생성할 철회 기능을 트리거합니다.
다음으로 상태 변수와 수정자를 선언합니다. 수정자는 함수 호출 전후에 실행되는 코드입니다. 함수의 동작을 수정하는 데 사용됩니다.
address public owner;
modifier onlyowner(){
require(msg.sender == owner, "not the owner");
_;
}
계약의 소유자 역할을 할 상태 변수를 선언한 다음 수정자 메서드를 사용하여 작성할 함수의 동작을 변경하는 onlyowner
를 생성합니다.
그런 다음 이 계약이 토큰을 수락하도록 허용해야 합니다. 이는 수신 기능을 사용하고 지불 가능한 기능인지 확인하여 수행할 수 있습니다. 그러면 계약은 이 방법을 사용하는 모든 사람의 토큰을 수락할 수 있습니다.
Solidity에서 이 기능을 구현해 보겠습니다.
receive() external payable{
emit deposit(msg.value);
}
이 함수에서 토큰을 받으면 전송된 금액과 함께 이벤트 보증금이 발행됩니다.
다음으로 이 계약에서 가장 중요한 기능인 출금 기능을 만들어야 합니다. 돈을 저축했다가 때가 되어도 인출할 수 없다고 상상해 보십시오. 무섭죠?. 운 좋게도 우리는 이 악몽을 피하고 소유자에게 필요한 액세스 권한을 제공할 수 있습니다.
저희가 개발한 onlyowner
수식어를 이용하여 오너만 계약을 철회할 수 있는 철회 기능을 설계할 수 있습니다. 이 인출 이벤트가 발생하면 주소의 모든 토큰이 방출됩니다.
마지막으로 자기 파괴 방법을 시작하여 돼지 저금통을 파괴해야 합니다. 인출 후 저절로 망가지지 않는 저금통은? 소유자에게 모든 토큰이 제공되었을 때만 자폭 방법을 트리거해야 하며, 그러면 계약이 종료될 수 있습니다.
Solidity에서 함수 구현을 살펴보십시오.
function Withdraw() external onlyowner {
emit withdraw(address(this).balance);
selfdestruct(payable(msg.sender));
}
결론
예금, 인출 및 돼지 저금통 파괴는 모두 저축의 중요한 부분입니다. 이 기사에서는 누구로부터든 토큰을 수락하고, 계약 소유자만 토큰에서 인출할 수 있으며, 비어 있을 때 자체 파괴하는 간단한 스마트 계약을 작성하는 방법을 보여주었습니다.
Reference
이 문제에 관하여(견고함으로 돼지 저금통 스마트 계약 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/princejoel/building-a-piggy-bank-smart-contract-with-solidity-hka
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
contract Pbank{
event deposit(uint amount);
event withdraw(uint amount);
}
address public owner;
modifier onlyowner(){
require(msg.sender == owner, "not the owner");
_;
}
receive() external payable{
emit deposit(msg.value);
}
function Withdraw() external onlyowner {
emit withdraw(address(this).balance);
selfdestruct(payable(msg.sender));
}
Reference
이 문제에 관하여(견고함으로 돼지 저금통 스마트 계약 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/princejoel/building-a-piggy-bank-smart-contract-with-solidity-hka텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)