자습서 - 견고성을 갖춘 다른 계약에서 계약 생성
This tutorial is meant for those with a basic knowledge of Ethereum and smart contracts, who have some knowledge of Solidity.
The purpose of building this blog is to write down the detailed operation history and my memo for learning the dApps.
If you are also interested and want to get hands dirty, just follow these steps below and have fun!~
전제 조건
시작하기
먼저 Account라는 계약을 만듭니다.
// SPDX-License-Identifier:MIT
// Adjust your own solc
pragma solidity ^0.8.14;
contract Account {
address public bank;
address public owner;
constructor (address _owner) payable {
bank = msg.sender;
owner = _owner;
}
}
This contract
Account
has two state variablesbank
andowner
and uses apayable
constructor to initialize state variableowner
.
우리는 AccountFactory라는 또 다른 계약을 사용하여 계약 계정을 배포할 것입니다.
...
contract AccountFactory {
Account[] public accounts;
function createAccount(address _owner) external payable {
Account account = new Account{value: 111}(_owner);
accounts.push(account);
}
}
전체 계약 New.Sol:
// SPDX-License-Identifier:MIT
// Adjust your own solc
pragma solidity ^0.8.14;
contract Account {
address public bank;
address public owner;
constructor (address _owner) payable {
bank = msg.sender;
owner = _owner;
}
}
contract AccountFactory {
Account[] public accounts;
function createAccount(address _owner) external payable {
Account account = new Account{value: 111}(_owner);
accounts.push(account);
}
}
We created an Account array
accounts
. When we deploy a new contract (using contract Account), we name it account and send 111 wei to this contract and push it intoaccounts
. We make functioncreateAccount
payable since we want the newly created contract receive ETH.
이제 Remix를 사용하여 스마트 계약을 배포하고 테스트할 시간입니다.
계약 AccountFactory를 선택하고 배포를 클릭하여 배포합니다.
200 Wei와 함께 현재 계정 주소(address(0))를 붙여넣고
createAccount
를 클릭합니다.그런 다음 account[0]을 가져오기 위해 0을 입력하면 방금 배포한 계약 주소를 얻게 됩니다.
이 계약 주소(accounts[0])를 복사하여 At Address에 붙여넣고 계약을 Account로 전환한 다음 At Address를 클릭합니다.
생성자
bank
를 통해 상태 변수owner
및 Account()
로 값을 전송합니다.소유자는 계약 계정[0]을 생성한 주소이고 은행은 계약 AccountFactory의 주소인 msg.sender를 참조합니다.
참조
Reference
이 문제에 관하여(자습서 - 견고성을 갖춘 다른 계약에서 계약 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yongchanghe/tutorial-create-a-contract-from-another-contract-with-solidity-498a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)