728x90
1. solc
solc 설치
npm i solc
컴파일 명령어
// npx solc --bin --abi (파일경로)
npx solc --bin --abi test.sol
작성한 test.sol 파일
/* 솔리디티 버전 */
pragma solidity ^0.8.15;
// HelloWorld 컨트랙트
contract HelloWorld {
string text;
constructor(){
text = "Hellooooo World~~~~~";
}
function getText() public view returns(string memory){
return text;
}
function setText(string memory value) public{
text = value;
}
}
2. abi,bin
컴파일을 하게되면 .abi와 .bin 파일이 생성된다.
abi : 스마트 컨트랙트 안에 매개변수나 함수들을 json형식으로 나타낸 리스트
함수를 호출하거나 데이터를 호출해서 받을수 있다.
bin : 컴파일된 바이트 코드내용, 이더리움 네트워크 상에 배포
3. 자바스크립트 콘솔창
geth 서버 열고 attach 로 들어가기
bytecode = "0x 뒤에 솔리디티로 컴파일한 bin파일의 내용 복붙"
abi = 솔리디티로 컴파이란 abi파일의 내용 복붙(객체들어있는 배열)
위처럼 작성하면 let이나 const,var 없이 선언해준다.
txObject = { from : eth.coinbase, data : bytecode};
트랜잭션 객체를 만들어주고
contract = eth.contract(abi)
instance = contract.new(txObject)
인스턴스를 만들어준다.
인스턴스를 통해 컨트랙트 안의 함수들에 접근한다고 보면 된다.
instance.setText('aaaaaaaaa',{from : eth.coinbase})
작성후 마이닝 하면 'aaaaaaaaaa' 이 출력된다.
4. 상태변수
상태변수를 가져오는것과 변경하는것은 차이가 있다.
상태변수의 값을 바꿔준다는건 저장공간의 값이 달라진다는것이다.
네트워크에 저장공간은 한계가 있기 때문에 저장 용량을 바꾸기 위해서 추가로 비용을 지불해야 한다.
결국엔 EVM을 실행 시키기 위해 비용을 지불하는 것이다.
728x90
'개발 > BlockChain' 카테고리의 다른 글
[BlockChain] truffle로 스마트컨트랙트 배포하기 (0) | 2022.12.05 |
---|---|
[BlockChain] 스마트 컨트랙트 배포 (0) | 2022.12.05 |
[BlockChain] geth (0) | 2022.11.28 |
[BlockChain] React 메타마스크 연결하기 (0) | 2022.11.21 |
[BlockChain] RPC web3 테스트 (0) | 2022.11.21 |