Skip to content

Instantly share code, notes, and snippets.

View victorrica's full-sized avatar
💭
Wolfy

Pho victorrica

💭
Wolfy
View GitHub Profile

피르마체인 기술 백서

서론

이더리움의 합의 방식과 수수료 체계로는 FirmaChain 의 구조를 만들 수 없다. 계약 당사자들이 계약에 대해 서명을 하고, 그 파일 고유 식별 값을 업로드하며, 별개 저장소의 주소를 모니터링하고, 계약 자체의 상태를 관리하는 것까지 이더리움의 Smart Contract 로 설계를 진행했다. 하지만 이를 실제로 개발하고 구동하니 수수료가 터무니없이 비싼 문제가 있었다. 또한 근본적으로 우리는 계약에 대한 증명 내역과 파일 그 자체를 모든 사용자가 가지고 있을 필요가 없었고, 선출된 검증자(validator) 들만이 갖고 있어도 충분히 우리가 생각하는 구조를 만들 수 있을 것이라 생각했습니다. 따라서 이더리움 이 아닌 우리가 사용할 수 있는 다른 블록체인 네트워크에서 토큰을 발급하여 사용하는 방법, 독자적인 메인넷을 구축하는 방법 중 한 가지로 토큰을 스왑하려고 했다. 우리는 추후 추가될 수 있는 다양한 기능들을 구현하기 위해서는 메인넷을 구축하는 방법이 옳다고 판단해 Tendermint BFT 합의를 사용한 Framework인 Cosmos SDK 를 사용해 메인넷을 구축하기로 하였습니다.

합의 방식

피르마체인은 DPOS(Delegated Proof of Stake) 방식으로 이루어져 있습니다. Cosmos 블록체인 기반으로 개발 되었으며, 피르마체인에 특화된 E-Contract(전자계약) 상의 서명과 검증 하는 고유 알고리즘이 개발 되어있습니다. DPOS는 위임 지분 증명으로 피르마체인 정책에 따라 선정된 팀 또는 기업만 노드와 검증자로 참가 및 출마 할 수 있습니다. 검증자(validator)로 참가하게 되면 위임자에게 지분을 위임 받아 수익을 분배 할 수 있습니다. 또한 PBFT(Practical Byzantine Fault Tolerance) 비잔틴 장군 문제를 통해 합의 알고리즘을 사용하며 이를 통해 불성실하거나 악의적인 검증자를 걸러냅니다.

@victorrica
victorrica / confluencer_to_notion_migration.md
Created May 15, 2019 08:59
Confluence to Notion migration

컨플루언스 -> 노션 마이그레이션 작업

Step 1. 컨플루언스에서 import 작업

  1. 컨플루언스에서 공간 클릭후 회사에서 사용하는 공간 선택.
  2. 스페이스 설정 에서 내용 도구-> 내보내기 클릭
  3. HTML -> 일반내보내기 선택후 내보내기 버튼 클릭
  4. html들과 여러 assets들이 모여있는 zip파일을 압축풀기

Step 2. html 에서 markdown으로 변경

  1. 기존 프로젝트에서 버그가 있어, 직접 수정한 리포 ( https://github.com/victorrica/Confluence-to-Github-Markdown ) 클론 후, 사용.
@victorrica
victorrica / bypass_ssl_pining.js
Last active November 20, 2021 08:33
Shifty 앱 리버스 엔지니어링
Java.perform(function() {
var array_list = Java.use("java.util.ArrayList");
var ApiClient = Java.use('com.android.org.conscrypt.TrustManagerImpl');
ApiClient.checkTrustedRecursive.implementation = function(a1, a2, a3, a4, a5, a6) {
// console.log('Bypassing SSL Pinning');
var k = array_list.$new();
return k;
}
```
#!/bin/sh
domain=$1
ip=$2
file="/etc/nginx/conf.d/$domain.conf"
/bin/cat <<EOM >$file
server {
listen 80;
#!/bin/sh
hostName=$1
sshPort=$2
webPort=$3
OS=$4
lxc-create --name=$hostName --template=$OS
lxc-start --name=$hostName
sleep 10
IP=$(lxc-info -n $hostName -iH)