본문 바로가기

개발 학습74

시퀄라이즈로 테이블내 새 컬럼 추가하기 시퀄라이즈로 현재 마이그레이션 되어 생성된 DB-테이블내에 새로운 컬럼 추가하기 $ npx sequelize migration:create --name add-column 실행시 마이그레이션 폴더안에 새로운 파일이생성된다. "use strict"; module.exports = { up: async (queryInterface, Sequelize) => { return queryInterface.addColumn("users", "mnemonic", { type: Sequelize.STRING, }); }, down: async (queryInterface, Sequelize) => { return queryInterface.removeColumn("users", "mnemonic"); /** * Add.. 2021. 12. 24.
S4: Web3에 ABI로 contract 와 personal 쓰기 Contract 키워드 배포 된 컨트랙트의 함수가 어떻게 사용될지에 대한 Abi와 배포 된 컨트랙트의 주소를 가지고 new Contract 메소드로 배포가 아닌 새 contract를 만든다. 해당 컨트랙트로 내부에 있는 함수를 call( ) 하여 실행하면 함수가 실행되게 된다. const contract = new Contract(abi, address); 이렇게 만들어진 컨트랙트 객체에 있는 함수를 사용하기 위해서는 contract.methods.함수명().call() 와 같이 사용할 수 있습니다. contract.methods.함수명()은 컨트랙트에 있는 함수를 실행하는 트랜잭션 객체를 생성합니다. 또한 contract.methods.함수명().call() 은 트랜잭션을 실행한 결과를 Promise .. 2021. 12. 8.
S4: Web3.js로 InfuraApi를 사용해 데이터 읽기 Web3.js 설치 npm init npm install web3 InfuraApi로 Web3 jsonRPC사용 설정 // getBalance.js const Web3 = require('web3'); const rpcURL = "https://ropsten.infura.io/v3/{PROJECT_ID}"; // 원격 이더리움 노드에 접속할 수 있는 주소 const web3 = new Web3(rpcURL); // web3 객체 생성 잔액을 읽는 getBalance.js 생성해보기 ( 실행 node getBalance.js ) const account = "0xDd41dB13a6edc9eEce69174B0797eBcd707b574B"; web3.eth.getBalance(account) .then((ba.. 2021. 12. 7.
S4: Infura로 이더리움 노드 접근 데이터 읽기 geth나 페리티로 이더리움 노드에 접근하여 데이터를 가져오기위해서는 동기화를 거쳐야하며 많은 데이터를 다운 받아야한다는 불편한점이 있다. infura를 통해 api로 이더리움노드에 접근하여 정보를 받아올 수 있다. curl https://ropsten.infura.io/v3/{자신의 API Key} \ -X POST \ -H "Content-type: application/json" \ -d '{"jsonrpc": "2.0", "method": "eth_getBalance", "params": ["자신의 메타마스크 계정 주소", "latest"], "id":1}' 특정 메타마스크 주소의 잔고를 받아오는 요청이다. 2021. 12. 7.
S4: 다른컨트랙트 와 상호작용하기 블록체인상에 올라와있는 다른 컨트랙트와 상호작용하여 해당 컨트랙트 내부에 있는 함수를 사용할 수 있다. contract NumberInterface { function getNum(address _myAddress) public view returns (uint); } 다음과 같이 컨트랙트에서 인터페이스를 이용할 수 있지: contract MyContract { address NumberInterfaceAddress = 0xab38... // ^ 이더리움상의 FavoriteNumber 컨트랙트 주소이다 NumberInterface numberContract = NumberInterface(NumberInterfaceAddress) // 이제 `numberContract`는 다른 컨트랙트를 가리키고 있다... 2021. 12. 2.
S4: public/private/internal/external public과 private 이외에도 솔리디티에는 internal과 external이라는 함수 접근 제어자가 있지. internal은 함수가 정의된 컨트랙트를 상속하는 컨트랙트에서도 접근이 가능하다 점을 제외하면 private과 동일하지. external은 함수가 컨트랙트 바깥에서만 호출될 수 있고 컨트랙트 내의 다른 함수에 의해 호출될 수 없다는 점을 제외하면 public과 동일하지. 나중에 external과 public이 각각 왜 필요한지 살펴 볼 것이네. 2021. 12. 2.