[TIL] 2023-06-13 DAY56
GIT 주소 : https://github.com/dowoo303/SOLIDITY
오늘 배운것들
- ethers로 컨트랙트 동작시켜보기
- doubleArray
각종 팁
tx.origin: 무조건 처음에 동작시킨 사람 반환 -> 이를 활용하면msg.sender == tx.origin으로 사람만 구별해낼 수 있다.
회고
deployer.deploy(A, 123): 원하는 생성자 입력값을 디플로이 할 때 뒤에 입력
truffle create contract A: A라는 이름의 soildity 파일 만들기
truffle console로 진입var a = await A.deployed()a.abia.a()npm init
npm install --save ethers
node 진입
var {ethers} = require('ethers')
var provider_main = new ethers.InfuraProvider()
var provider_goerli = new ethers.InfuraProvider(network="goerli")
await provider_main.getBlockNumber()
await provider_goerli.getBlockNumber()
var privateKey = '개인키'
var signer = new ethers.Wallet(privateKey, provider_goerli)
var account2 = '0x8f709f555c685da4D04703D66F0a986fcbA9a373'
var tx = {to : account2, value : 100000000000000}
signer.sendTransaction(tx).then(console.log)
var abi =
var c_addr = ''
var contract = new ethers.Contract(c_addr, abi, signer)
await contract.setA(123)
프로바이더
web3 : api키
ethers : 프로바이더(제공자) -> api키 없이도 자기가 알아서 함
지갑설정
web3 : account
ethers : 사이너
var contract = new web3.eth.Contract(abi, c_addr) -> 얘는 default 설정이 되어 있어서 지갑주소를 뒤에 따로 넣을 필요가 없음var contract = new ethers.Contract(c_addr, abi, signer)web3.eth.sendTransaction(tx).then(console.log)signer.sendTransaction(tx).then(console.log)기본적으로 앞 배열이 1씩 증가하지만 위로도 계속 배열을 더 쌓을 수 있다고 이해하면 된다
[들어온 순서의 번째][들어온 순서] -> 코드 배열 순서 기준(리믹스에서는 반대로 보임)
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 <0.9.0;
contract multiArray {
// 기본적으로 앞 배열이 1씩 증가하지만 위로도 계속 배열을 더 쌓을 수 있다고 이해하면 된다
uint[][] public double_A;
function setNumber(uint _a) public {
double_A.push([_a]);
}
function setNumber2(uint _a, uint _b) public {
double_A.push([_a, _b]);
}
function setNumber3(uint[] memory _a) public {
double_A.push(_a);
}
function setNumber4(uint _a, uint _b, uint _c) public {
double_A[_a][_b] = _c;
}
function getLength() public view returns(uint) {
return double_A.length; // 첫번째 배열의 길이를 봄
}
function getLength2(uint _a) public view returns(uint) {
return double_A[_a].length; // 입력한 _a번째의 배열의 길이를 봄
}
}