26-6-19 스팀 개발 소식

in AVLE 일상9 hours ago

요즘 다시 암호화폐 가격이 하락하고 있습니다. 아마도 주식시장이 상승하면서 돈이 몰리기 때문이 아닌가 하는 생각이 듭니다. 상황이 어려움에도 불구하고 스팀의 개발은 계속되고 있습니다. 간밤에 두가지 개발 소식이 올라왔습니다.

@blaze.apps 의 Steem.js 최신화 작업과 @kafio의 스팀 키체인의 모바일 작업입니다.

https://steemit.com/hive-151113/@blaze.apps/steem-js-modernized-and-published-blazeapps-steem-is-live-on-npm

https://steemit.com/steem-dev/@kafio/steem-keychain-mobile-phase-9-advanced-operations-and-authority-management

스팀가격이 하락하고 있는 상황임에도 불구하고 이런 코어 개발이 계속된다는 것은 스팀의 미래가 밝다는 것을 의미한다고 하겠습니다. 지속적인 개발과 개선 작업이 이루어지고 있기 때문에 언젠가는 스팀이 새로운 상승의 계기를 마련할 것이라고 생각합니다.

위의 포스트 내용은 한글로 번역했습니다.

Steem.js 현대화 7부작 시리즈 최종화

지난 6일 동안 각 엔지니어링 단계를 하나씩 살펴본 끝에, 드디어 오늘 정식 출시합니다. 현대화된 라이브러리가 npm에 배포되었으며, 모든 주요 자바스크립트 런타임에서 즉시 사용할 수 있는 프로덕션 레디(Production-ready) 상태로 동작합니다.

📦 npm: https://www.npmjs.com/package/@blazeapps/steem

🛠️ 코드: https://github.com/blazeapps007/steem-js/tree/BlazeDevelopment

📖 문서: https://blazeapps007.github.io/steem-js/

핵심 변경 사항 요약 (한 화면으로 보기)

영역기존 (Before)변경 후 (After)
런타임 (Runtimes)Node + 브라우저 번들Node 18+, 브라우저, Cloudflare/Vercel Edge, Deno — 단일 패키지 통합
암호화 (Crypto)bigi + ecurve + browserify-aes보안 감사를 마친 순수 JS 기반의 @noble/curves + @noble/hashes + @noble/ciphers
직렬화 (Serializer)bytebuffer레포지토리 내 자체 포함된 bytebuffer-lite (Uint8Array + 네이티브 BigInt 활용)
네트워킹 (Networking)cross-fetch, 정적 ws글로벌 fetch, 지연 로딩(Lazy)/선택적 ws
프로미스 (Promises)bluebird경량 네이티브 프로미스 헬퍼 (기존 콜백/프로미스 듀얼 API 유지)
빌드 (Build)webpack 4 + Babeltsup (esbuild) → ESM + CJS + IIFE + 타입 정의(.d.ts) 동시 출력
타입 정의 (Types)없음dist/index.d.ts 기본 내장 제공
문서 (Docs)부분적 제공소스 코드 기반 100% 자동 생성 + Edge/Deno 활용 가이드 포함
의존성 (Dependencies)약 25개의 레거시 심(Shim) 라이브러리극소수로 단축, 모든 의존성은 독립된 단일 dist 파일로 번들링

바이트 단위까지 완벽한 하위 호환성 유지

이번 전체 리라이트(Rewrite) 과정은 기존 라이브러리의 정확한 출력값—WIF(개인키), 공개키, 정형화된 서명(Canonical signature), 직렬화된 트랜잭션 hex 값, 메모 암호화/복호화 라운드트립—을 그대로 고정해 두고 검증하는 골든 벡터(Golden-vector) 테스트 환경 통제 하에 진행되었습니다. 모든 개발 단계에서 이 출력값들이 완벽히 일치하도록 유지했습니다. 동일한 키, 동일한 서명, 동일한 와이어 포맷을 사용하므로 기존 계정과 트랜잭션 모두 아무런 문제 없이 그대로 동작합니다.

공용 API 역시 기존과 완전히 동일합니다:

steem.api.*, steem.broadcast.*, steem.auth, steem.memo, steem.formatter, steem.utils, steem.config, 콜백 및 프로미스 지원, 싱글톤 패턴 및 Steem 클래스 모두 기존 명세 그대로 유지됩니다.

import steem from '@blazeapps/steem';            // ESM — Vite, Edge, Deno, 최신 Node 환경
// const steem = require('@blazeapps/steem');     // CommonJS 환경

const [account] = await steem.api.getAccountsAsync(['blaze.apps']);
const wif = steem.auth.toWif('alice', 'password', 'active'); // 모든 런타임에서 오프라인으로 작동
await steem.broadcast.voteAsync(wif, 'alice', 'author', 'permlink', 10000);


개발 여정 (6단계의 기록)

  1. 기반 다지기 & 툴링 – 골든 벡터 안전망을 가장 먼저 구축한 후, tsup과 Vitest 환경을 세팅했습니다.
  2. 암호화 코어 부문 – 그래핀(Graphene) 기반의 정형화된 RFC6979 서명을 바이트 단위까지 완벽히 보존하면서 코어를 @noble 라이브러리로 전면 교체했습니다.
  3. 직렬화 부문 – 와이어 포맷을 건드리지 않고, 네이티브 BigInt를 사용하는 bytebuffer-lite로 전환했습니다.
  4. 트랜스포트 & 런타임 – 네이티브 fetch와 지연 로딩 방식의 ws를 도입하고, 글로벌 환경 변수 감지 기능을 추가했으며 Bluebird 의존성을 제거했습니다.
  5. 타입 정의 – 런타임을 구동하는 동일한 디스크립터로부터 .d.ts 파일을 자동 생성하여, 코드와 타입 명세가 어긋나지 않도록 처리했습니다.
  6. 검증 & 문서화 – 크로스 런타임 스모크 테스트를 마쳤으며 Node 18/20/22 및 Deno 환경에서 CI를 구축하고, 문서를 100% 자동 생성했습니다.

출시 전 실전 압축 테스트 완료

실제 배포를 준비하는 과정에서 마주친 까다로운 현실 세계의 엣지 케이스들을 모두 찾아 해결했습니다:

  • Node 18 버전의 globalThis.crypto 부재 문제: 빌드 타임 배너를 통해 비리터럴(Non-literal) node:crypto 지정자로 연결되도록 조치하여, Edge나 Deno 번들 파일이 지저분해지지 않도록 깔끔하게 처리했습니다.
  • @noble v2의 ESM 전용 문제: 의존성들을 dist 안으로 번들링하여 Node 18 CJS 환경에서도 require()로 정상 호출되도록 만들었습니다.
  • Deno 환경의 권한 모델 문제: 직렬화 모듈이 환경 변수 검사 과정을 거치지 않도록 수정하여, --allow-env 옵션 없이도 구동됩니다.
  • CI/CD 파이프라인 구축: npm 배포 프로세스를 자동화하여, 이제 푸시할 때마다 전체 매트릭스 및 Deno 테스트가 구동된 후 새 버전이 자동 배포됩니다.

모든 기능은 실제 Node 18.20.8, Node 20/22 및 Deno 환경에서 검증을 마쳤습니다.


시작하기

npm install @blazeapps/steem

설치 후 공식 문서를 확인해 보세요. Cloudflare Workers 및 Deno 환경을 위한 가이드와 함께 바로 적용할 수 있는 완성된 코드 예제가 준비되어 있습니다.

포크된 이번 프로젝트에 대한 이슈 제보, PR, 피드백은 언제나 환영합니다.


스팀 키체인 모바일(Steem Keychain Mobile) 개발 업데이트

안녕하세요 여러분,

개발자 문서 출시(Developer Docs Launch)에 이어, 스팀 키체인 모바일의 다음 마일스톤을 공유해 드립니다.

9단계 — 고급 작업 & 권한 관리 (Advanced Operations & Authority Management)

모바일 환경에서 7가지의 새로운 작업(Operation)을 이제 완전히 지원합니다. 자산 전환(Conversion), 계정 생성, 계정 가져오기(Import)를 비롯해 스팀에서 보안상 가장 중요한 '권한 관리(Authority Management)' 기능이 포함되었습니다.

🎬 비디오 데모: [링크]


9단계의 새로운 변경 사항

1. 자산 전환 (Conversions)

모바일 기기에서 SBD(스팀달러)를 STEEM으로 직접 전환할 수 있습니다. 확인 화면에는 3.5일의 대기 기간과 중간 가격(Median price) 메커니즘이 명확하게 설명되어 있습니다. 스팀의 핵심 메커니즘을 존중하며, 사용자가 이를 확실히 이해한 후 승인할 수 있도록 설계했습니다.

2. 계정 생성 (Account Creation)

보유 중인 계정 생성 토큰(Claimed account creation tokens)을 사용하여 다른 사용자를 위한 새로운 스팀 계정을 만들 수 있습니다. 확인 화면에는 다음 4가지 키가 명확하게 표시됩니다:

  • Owner(마스터 키)
  • Active(지갑 키)
  • Posting(소셜 키)
  • Memo(암호화 키)

디앱(dApp)에서 탭 한 번만 하면, 지갑이 모든 과정을 안전하게 처리합니다.

3. 권한 관리 (Authority Management — 위험 구역)

이번 업데이트에서 가장 중요한 부분입니다. 권한 관련 작업은 계정에 대한 통제권을 부여하거나 박탈하는 기능입니다. 작업의 위험성을 고려해 모든 화면에 엄격한 시각적 경고 시스템을 구축했습니다:

  • 계정 권한 추가 (Add Account Authority): 다른 계정에 내 대리인으로서 행동할 수 있는 권한을 부여합니다. 화면에 빨간색 위험 배너("경고: 제어 권한을 부여하려고 합니다...")가 표시되며, 액티브(Active) 키가 필요합니다.
  • 계정 권한 제거 (Remove Account Authority): 특정 계정의 권한을 취소합니다. 노란색 주의 배너가 표시됩니다.
  • 키 권한 추가 (Add Key Authority): 계정에 새로운 공개키(STM...)를 추가합니다. 액티브(Active) 키가 필요합니다.
  • 키 권한 제거 (Remove Key Authority): 계정에서 특정 공개키를 제거합니다.

모든 권한 관리 화면은 사용자가 자신이 어떤 것에 서명하는지 정확히 눈으로 확인하도록 강제합니다. 숨겨진 승인이나 사용자 모르게 권한이 부여되는 일은 절대 발생하지 않습니다.

4. 계정 가져오기 (Account Import)

이제 디앱이 스팀 키체인 모바일에 로컬 지갑으로의 새 계정 가져오기를 요청할 수 있습니다. 이는 블록체인에 트랜잭션을 전송(Broadcast)하는 것이 아닙니다. 디앱에서 사용자의 암호화된 키체인 스토리지로 키를 안전하게 전달하는 방식입니다.

이로써 완벽한 온보딩 흐름이 완성되었습니다: 디앱이 계정을 생성 → 즉시 키체인에 전달하여 안전하게 보관.


이번 업데이트가 중요한 이유

  • 모바일 유저 경험의 확장: 지금까지 이러한 고급 작업들은 데스크톱 환경에서만 가능했습니다. 모바일 사용자들은 폰에서 권한을 관리하거나 계정을 만들고, SBD를 전환할 방법이 없었으나 이제는 가능합니다. 모든 작업은 '디앱의 요청 → 지갑의 명확한 경고 및 확인 화면 → 사용자의 결정'이라는 동일한 보안 흐름을 따릅니다.
  • 디앱 개발자 관점: 이제 완벽한 모바일 온보딩 흐름을 설계할 수 있습니다. 딥링크(Deep links)나 인앱 브라우저를 통해 모바일에서 계정을 생성하고, 이를 키체인으로 가져온 뒤, SP(스팀파워)를 임대(Delegate)하는 전 과정을 구현할 수 있습니다.
  • 일반 사용자 관점: 계정 보안 상태를 시각적으로 직관적으로 확인할 수 있습니다. 위험한 작업에는 빨간색 배너가, 주의가 필요한 작업에는 노란색 배너가 표시되므로 내가 무엇에 서명하고 있는지 항상 명확하게 알 수 있습니다.

체험해 보기

📦 베타 APK 다운로드: 다운로드 링크

주: 플레이스토어 외부에서 설치할 때 폰에 보안 경고가 표시될 수 있으나, 이는 정상적인 현상입니다.


소개

안녕하세요! 스팀 생태계를 위한 도구들을 만들고 있는 kafio입니다.

Sort:  

This post has been upvoted by @italygame witness curation trail


If you like our work and want to support us, please consider to approve our witness




CLICK HERE 👇

Come and visit Italy Community



Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.077
BTC 62558.26
ETH 1693.86
USDT 1.00
SBD 0.40