본문 바로가기

블록체인

(59)
[Solana] PDA가 가진 ATA Transfer시 "signer privilege escalated" 에러 프로그램이 가지고 있는 토큰을 사용자에게 전송할 때 "signer privilege escalated ..." 에러가 발생하였다. #[account(init, seeds = [b"pool", config.key().as_ref(), mint.key().as_ref()], bump, payer = signer, space = 8 + std::mem::size_of::())] pub pool: Box>, ata의 authority를 pool로 지정 한 후 cpi를 호출하기 위해 signer seeds를 만들 때 pool을 init 할 때 지정한 seeds 이외에 bump도 추가적으로 포함시켜주어야 한다. 에러 발생 let seeds = &[ b"pool".as_ref(), ctx.accounts.config..
[Solana] Error: Stack offset of 4200 exceeded max offset of 4096 by 104 bytes... anchor build에서 다음과 같은 에러가 발생했다. Error: Function _ZN8amm_test9__private8__global13add_liquidity17h3a3c80af5dfe6038E Stack offset of 4200 exceeded max offset of 4096 by 104 bytes, please minimize large stack variables 원인 instruction에 포함되는 accounts의 크기가 너무 큰 것이 원인 해결 방법 필요한 경우가 아니라면 Account 사용 및 accounts 수를 줄임
[Solana] Anchor에서 "Error: Unable to read keypair" anchor 에서 테스트를 하려고 했을 때 Error: Unable to read keypair 라고 에러가 발생할 때는 2가지 경우가 있다. 1. solana-cli에서 keygen이 없는 경우 -> solana-keygen new 2. 다른 컴퓨터에서 기존 프로젝트를 받았을 경우 -> Anchor.toml에서 wallet = "/home/아이디/.config/solana/id.json"에서 아이디 수정
[Solana] Error processing Instruction 1: custom program error: 0x1 솔라나의 anchor에서 테스트하던 도중 Error processing Instruction 1: custom program error: 0x1 에러 발생 Initializer program state: Error: failed to send transaction: Transaction simulation failed: Error processing Instruction 1: custom program error: 0x1 at Connection.sendEncodedTransaction (node_modules/@solana/web3.js/src/connection.ts:4594:13) at processTicksAndRejections (node:internal/process/task_queues:96..
트랜잭션의 유효성 트랜잭션이 실행되기 전에 노드는 트랜잭션이 5개의 룰을 통과하는지 검증하며 하나라도 통과하지 못한다면 트랜잭션은 실행되지 않습니다. 1. 트랜잭션은 RLP로 만들어져야 한다. 2. 트랜잭션의 서명이 유효해야 한다. 3. 트랜잭션의 nonce가 sender의 nonce와 일치해야 한다. 4. 트랜잭션의 비용이 gas limit보다 낮아야 한다. 5. sender의 account balance가 트랜잭션을 실행시키는 금액보다 크거나 같아야 한다. 이 5가지 룰에는 포함되지 않지만 한 가지 규칙이 더 있는데 해당 트랜잭션이 블록에 포함되었을 때 트랜잭션들의 total gas limit이 블록의 gas limit을 초과한다면 해당 트랜잭션을 블록에 포함시켜서는 안 됩니다. 1. 트랜잭션은 RLP로 만들어져야 한..
[Hardhat] Invalid hex string ... 에러 하드햇으로 테스트 넷에서 테스트 스크립트를 실행하려 하는데 계속 invalid hex...라는 문구의 에러가 계속 발생 Error: invalid hex string (argument="value", value="-0x02b4a8", code=INVALID_ARGUMENT, 해결 hardhat.config.js 에서 gas 값을 올려주었더니 해결 bsctest: { url: process.env.BSC_TEST || "", chainId: 97, gas : 2100000, //값을 올려서 실행 gasPrice: 20000000000, accounts:{mnemonic: process.env.MNEMONIC} }
[terra.js] CreateTxFailed: First argument must be...에러 terra.js로 컨트랙트를 호출하려고 하는데 ExecuteMsg로 트랜잭션 생성 과정에서 다음과 같은 에러가 발생했다. 원인 package.json 에서 라이브러리는 보통 다음과 같이 표시되는데 "@terra-money/terra.js": "^3.0.4" 원인은 모르지만 특정 버전을 표시하더라도 최신 버전으로 작동하는 경우가 있다고 한다. 해결 버전 앞에 '^'를 제거해주면 된다. "@terra-money/terra.js": "3.0.4"
Re-Entrancy Attack Re-Entrancy Attack? 재진입 공격(Re-Entrancy Attack)이란 재귀적인 방법을 통해 컨트랙트에서 자금을 빼내는 방법이다. 간단하게 작성된 자금을 출금하는 함수가 있는 컨트랙트 A와 re-entrancy 공격을 실행하는 컨트랙트 B가 다음과 같이 작성되어 있다. pragma solidity ^0.8.7; contract A { mapping(address => uint256) balances; . . . function withdraw() public{ msg.sender.call{value :balances[msg.sender]}(""); balances[msg.sender] = 0; } } contract B { A a; constructor(address _a) { a = A..