일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- rust 기초
- 스마트컨트렉트 함수이름 중복 호출
- 체인의정석
- vue기초
- 머신러닝기초
- ethers websocket
- erc4337
- 계정추상화
- 오블완
- SBT표준
- 티스토리챌린지
- 스마트컨트렉트 예약어 함수이름 중복
- ethers type
- 스마트 컨트렉트 함수이름 중복
- Vue
- 러스트 기초
- 러스트 기초 학습
- erc4337 contract
- redux 기초
- 컨트렉트 동일한 함수이름 호출
- chainlink 설명
- ethers
- ethers typescript
- 러스트기초
- multicall
- ambiguous function description
- Vue.js
- git rebase
- ethers v6
- redux toolkit 설명
- Today
- Total
목록개발/backend(go) (8)
체인의정석
블록체인 지갑 주소의 경우 대소문자 구분이 존재하지만 db상에는 소문자 기준으로 저장하거나 하는등의 특별한 기준이 필요하다.이렇게 만들 경우 api에서 지갑 주소에 공백이 들어오거나 대소문자가 들어오게 되면 자동으로 변환해서 검색해주는 부분이 필요하게 된다.filter["wallet_address"] = bson.M{ "$regex": wallet, "$options": "i",}위와 같이 옵션에 i를 넣게 되면 대소문자 무시를 하게 되기 때문에 지갑 검색에 용이해지게 된다. wallet 문자열을 정규표현식으로 검색하되,"0xAaBb..."와 "0xaabb..."와 같이 대소문자를 구분하지 않고 비교합니다.예: 사용자가 "0xAabb"라고 입력해도, DB에 "0xaabb", "0XAABB" 등..
interface를 따로 쓰면 쓰면 따로 응답 값 타입을 지정하지 않고도 리턴이 가능하다고 한다.마치 ts의 any 같다.✅ interface{} = TypeScript의 anyGo에서는 모든 타입이 interface{}를 만족하기 때문에, 아래와 같이 어떤 값이든 담을 수 있다.var v interface{}v = 123 // intv = "hello" // stringv = []string{} // slice🔄 예: TypeScript와 비교TypeScriptGoanyinterface{}Recordmap[string]interface{}any[][]interface{}map[string]interface{} 가 쓰이는 경우는 다음과 같다고 한다.외부 API의 응답 구조가 계속..
1. POST 요청 (생성)기본 흐름클라이언트가 JSON 데이터 보냄서버가 JSON 파싱해서 구조체에 매핑데이터를 저장하거나 처리성공하면 200 OK, 실패하면 에러 응답// CreateExample// @Summary Example 데이터 생성// @Description 새로운 Example 데이터를 생성합니다.// @Tags example// @Accept json// @Produce json// @Param body body CreateExampleRequest true "Example 생성 요청 데이터"// @Success 200 {object} RespHeader// @Failure 400 {object} RespHeader// @Failure 500 {object} RespHeader// @R..

서명 로직 이후에 지갑 서명이 확인되면 해당 지갑의 role을 읽어와서 JWT를 발급해주는 구조지갑 서명이라는 검증 로직이 있기 때문에 Refresh Token은 생략*핵심 로직만 함수화 시켰으며, 함수명 및 변수들은 모두 임의로 지정기능구현JWT 발급 함수 (발급 해주고 리턴)import ( "github.com/golang-jwt/jwt/v5" "time")func GenerateJWT(secret string, userID string, role string, issuer string) (string, error) { claims := jwt.MapClaims{ "user_id": userID, // 사용자 식별자 "role": role, ..

Go-ethereum 모듈 설치서명 검증 로직에서는 고 이더리움 모듈이 필요한다. 안정적인 버전을 설치하지 않으면 다음 에러가 발생한다. go get github.com/ethereum/go-ethereum@latestgo: downloading github.com/ethereum/go-ethereum v1.15.7go: github.com/ethereum/go-ethereum@latest: github.com/ethereum/go-ethereum@v1.15.7: verifying module: checksum mismatch downloaded: h1:MnmJgaVD1LcBd4m6WJnMpLWhl5t5v4yI6zMBwvNv+ic= sum.golang.org: h1:vm1XXru..
MongoDB와 Go를 사용하여서 데이터를 조회할 때는Mongo driver를 사용하면된다.https://github.com/mongodb/mongo-go-driver GitHub - mongodb/mongo-go-driver: The Official Golang driver for MongoDBThe Official Golang driver for MongoDB. Contribute to mongodb/mongo-go-driver development by creating an account on GitHub.github.com이 중 cursor에 대해서 사용해보았다.먼저 위의 공식 문서 상 cursor는 다음과 같이 사용할 수 있게 되어있다. 커서의 경우 스트림 형태로 DB의 접근 1번만 통해서 계속..
Go-Swagger 사용법설치 go get -u github.com/go-swagger/go-swagger/cmd/swagger주석달기 (쳇지피티 시키면 잘달아줌)// CreateUserInfo// @Summary Create new user info// @Description 새 사용자 정보를 DB에 저장합니다.// @Tags account// @Accept json// @Produce json// @Param body body protocol.CreateUserRequest true "사용자 정보"// @Success 200 {object} protocol.RespHeader// @Failure 500 {object} protocol.RespHeader// @Router /v1/users/info..

1. git clone을 해오는 경로go 의 경우 git clone을 해오는 경로가 일반적인 경우와 다르다 go 언어가 설치된 경로의 하위에 src, bin, pkg 가 있는 경로 하위에 있어야 인식이 된다./Users/chohyunki/go/src이런식으로 src기준 하위에 자기만의 분류 기준으로 디렉토리를 만들어서 관리하면 된다.* Go 1.11 이후 `go mod` 기반 프로젝트에서는 반드시 GOPATH 하위가 아니어도 동작하지만, 여전히 전통적인 GOPATH 디렉토리 구조 (`~/go/src/`)를 따르는 경우가 많습니다.2. 외부 깃허브 모듈 중 private한 경로가 있는 경우private한 경로가 있을 경우 ssh키 인증이 필요하다.따라서 깃허브에다가 ssh 공개키를 등록을 먼저 해 둔 후에..