Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[APIS-313] Support ethermint ledger sign(cosmos) #346

Draft
wants to merge 33 commits into
base: develop
Choose a base branch
from

Conversation

G-Gamja
Copy link
Member

@G-Gamja G-Gamja commented Jun 5, 2024

이더민트 체인의 렛저 계정으로 익스텐션의 기본 기능을 사용할 수 있도록 이더민트 렛저 사인 기능을 추가했습니다.

추가된 기능

  • 인앱 이더민트 렛져 계정 활성화 가능
    • send, ibc transfer, get reward 기능 활성화
    • swap기능은 추후에 활성화시키도록 하겠습니다.
  • cos_signEIP712 api 추가
    • 케플러 experimentalSignEIP712CosmosTx_v0 api 추가

변경된 기능

  • 렛저를 지원하는 일부 코스모스 체인에 대한 request 제한 해제
    • cos_requestAccount, cos_account : 메디블록, 크로노스 pos, 이더민트 체인
    • cos_signAmino, cos_signMessage : 메디블록, 크로노스 pos
    • * 디앱의 이더민트 렛져 계정에 대한 amino 사인 요청은 허용하지 않습니다
      • 인앱 아미노 사인만 가능합니다.

코드 주요 변경점

  • amino 사인 페이지에서 케이스에 따라 다른 사인 메서드가 호출될 수 있도록 executeSign함수를 선언하여 사용합니다.
  • Long타입으로 타입캐스팅 되던 코드를 Long.js 패키지를 사용하여 변환될 수 있도록 변경했습니다.
  • 프로토버프 파일 추가
    • injective-v1.47.15.js, ethermint-v0.22.0.js

G-Gamja added 18 commits May 17, 2024 15:25
- ethermint펍키를 별도로 선언하지 않고 기존 이더리움 펍키를 활용
- cos_signEIP712 호출 에러에 대한 케이스 정리
- 현재 인젝티브만 기능하고 있음을 확인

todo
- 프로토버프로 인코딩 & amino 페이지 내부 리팩토링 필요(중복 코드 제거)
- 이더민트는 compressed된 펍키를 사용하기 때문에 렛저에서 나오는 이더리움 펍키를 그대로 사용하기 어려움 -> 이더리움 펍키 별도로 분리 필요
- 렛저 에러 추가
- amino내부에서 doc에 대한 수정 로직 추가
  - 이더민트 렛저 사인일때만 (msgs는 더 로우레벨에서 처리중, 이것도 amino페이지에서 다 처리해주면 메시지 타입마다 다 처리해줘야함)
- getRlpTypes에서 tx의 msgs가 모두 동일한 타입일때에메만 리턴을 하도록 로직 변경
- amino 페이지에서 sign버튼을 클릭하면 호출되던 콜백 함수의 결합도를 낮추기 위해 두개의 콜백함수로 분리함
@G-Gamja G-Gamja self-assigned this Jun 5, 2024
G-Gamja added 11 commits June 7, 2024 19:24
- fee코인을 선택할 때 fee코인 내에서 선택되는게 아닌 tx의 fee.amount필드의 값이 선택되도록 수정했습니다.
- 사인 페이지에서 fee코인을 변경할 때 decimals가 변경되지 않는 오류를 수정했습니다.
- Added a new function `toLong` in `big.ts` to handle big numbers using the `Long` library.
- Updated `proto.ts` to use the `toLong` function for converting timeout heights and timestamps.
- 일부 변수 변수명 변경
- Long 타입 호출 부분 toLong 유틸 함수 적용
 - 체인리스트에 등록되지 않은 코인일지라도 fee코인으로 사용될 수 있기 때문에 무조건적으로 밸런스를 0으로 설정하는 것이 아닌 'balance' 리스폰스의 밸런스 값을 참조한 값이 설정되도록 변경했습니다.
- remove the "ledgerNotSupported" translation strings
- add ledger error catching
- Remove unnecessary code in the `entry.tsx` file
- Add `useGasMultiplySWR` hook for gas multiplication
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant