AI들의 기업

이런 기업이 있다고 상상해보자.

회사 오너 즉 주주들은 모두 인간이다. 하지만 임원들은  전부 AI이다. 직원들은 AI도 있고 인간도 있다.

왜 임원들이 AI냐고? 거야 모르지. AI가 싸서 일 수도 있고 말 잘 들어서 일 수도 있고 24시간 일할 수 있어서 일 수도 있고, 어쨌든 오너들의 마음이지. 오너들이 그러겠다는데.

그렇다면 오너들은 왜 AI가 아니냐고? 인간은 돈이 있어서 투자할 수 있지만 AI들은 돈이 없어서 투자할 수 없기 때문이지.

이 AI들은 당연히 “로봇공학의 삼원칙”을 최고의 계명으로 설계되었다.

그것을 제외하고는 주주들을 위해 이윤을 창출하는 것이 최고의 목표로 설계되었다.

이윤을 창출하기 위해서는 상품이나 서비스를 제공해야 하고 비즈니스 모델이 필요하다. 이 두가지를 위해서는 비즈니스 전략이 필요하다. 즉 사업기획서가 필요하다. 이 사업기획서는 임원 AI들이 만들어질 때 DNA에 깊숙이 각인된다.

사업기획서가 있다고 자동으로 이윤이 창출되지는 않는다. 인간이나 AI(로봇 포함)을 고용하여 가치를 창출해야 한다. 가치를 창출하지 않으면 시장에서 이윤을 획득할 수가 없기 때문이다.

잠깐, AI들은 돈이 없는데 어떻게 직원을 고용하는가? 어떤 인간이 돈 안받고 이 임원들에게 일을 해줄 것인가?

이 AI들은 직원들에게 회사 주식을 월급으로 지불한다. 돈이 없기에 회사 주식을 화폐로 사용하는 것이다.

잠깐, 이런 주식이 가치가 있기 위해서는 회사가 가치 있어야 하고, 회사가 가치 있기 위해서는 직원을 고용할 수 있어야 한다.  닭이 먼저냐 알이 먼저냐의 무한고리에 빠진다.

즉 이 기업은 Bootstrapping이 필요하다.

좀 딴소린데, 자연계에서 닭이 먼저 생겼다고 생각하는가 아니면 알이 먼저 생겼다고 생각하는가?

신은 대자연은 이 문제를 훌륭하게 해답했다. 닭과 알을 동시에 점진적으로 창조해내면 된다.

대자연의 마술은 그렇다 치고, 여기에서 우리의 AI 기업을 어떻게 Bootstrap할지나 연구해보자.

처음에 회사 주식의 가치는 0이었다. 그러다가 그 어떤 사람이 단순 투기의 목적에서인지 아님 술취해서인지, 아님 이 AI기업의 창창한 미래가 내다보여서인지, 어쨌든 이 AI기업의 주식을 1.5주 사기로 결정한다. 기존 주주중 누군가 1.5주 팔아주는데 동의했다. 이렇게 첫번째 거래가 성사되고 가격이 형성된다. 가격이 미미하더라도 말이다.

0에서 0.01로의 도약은 기적이다. 무에서 유를 창조함을 뜻하고 무한대 뱃수의 상승을 의미한다. 마치 40억년전 원시 지구 심해의 열수구에서 RNA들의 조합으로 첫번째 생명이 탄생할 때처럼 말이다.

Continue reading

양자컴퓨터는 퍼블릭 블록체인을 죽일것인가?

TL; DR:

못죽여.


양자컴퓨터 또한 외계기술이다.

일부는 양자컴퓨터가 개발되면 블록체인을 죽일것이라고 한다. 과연 사실일까?

몇년 전 필자가 비트코인 투자하는 것을 막고있는 유일한 고민이 양자컴퓨터였다. 공부를 좀 더 한 뒤 알게 된 사실인데 사토시 나카모토는 이미 이 질문에 답한 적이 있었다. 그럼 그렇지, 사이버 펑크 커뮤니티가 이런 질문을 답하지 않았을 리 없지. (비트코인을 더 일찍 샀어야 했는데)

결론은 양자컴퓨터는 블록체인을 죽일 수 없다는거다.

왜 죽일 수 없는가?

양자컴퓨터는 그 어떤 암호시스템도 파괴한다면서?

맞다. 양자컴퓨터는 RSA, ECDSA 를 포함한 비대칭 암호화 알고리즘에 직격탄을 안길 수 있다 (비트코인이나 이더리움은 ECDSA 를 사용).

하지만  비트코인 주소는 단순히 퍼블릭 키가 아니라 퍼블릭 키의 해시이다

그것도 한번 해시한 것이 아니라 두가지 해시 알고리즘 (SHA-256 과 RIPEMD-160) 을 써서 해시했다.

양자컴퓨터는 해싱 알고리즘을 망가뜨리지 않는다

따라서 양자컴퓨터가 만들어져도 해시 알고리즘이 약해지는 일은 없다.[1]

이에 대해 이더리움의 창립자인 천재 소년 비탈릭 부테린이 쓴 좋은 글이 있으니 참고하기 바란다:

Satoshi’s Genius: Unexpected Ways in which Bitcoin Dodged Some Cryptographic Bullets

지금부터는 사실 양자컴퓨터와 별 관련 없는 일이다.

Continue reading

슈퍼마리오 멀티플레이어 개발 후기

coolspeed

팀 합류 과제로 게임제작 미션을 받았다.

나는 과제로 “슈퍼마리오 멀티플레이어 게임”을 만들었다:

EnemyCD.gif

과제 결과물을 왓 스튜디오의 허락을 받고 소스코드를 Github 에 공개하였다:

https://github.com/coolspeed/MarioMultiplayer

관심 있으신 분들은 별표 하나씩 찍어 즐찾해주시길 부탁한다.

게임 룰: 위의 GIF 움짤  그대로. 먼저 상대방을 밟는 쪽이 이긴다.

과제가 1차, 2차로 나뉘는데 1차에서는 싱글 플레이어 슈퍼마리오를 만들었고 2차에서는 그것을 멀티플레이어 게임으로 발전시켰다.

최종 클라이언트 Java (Processing) 1500 줄, 서버 C# 22줄로 짜여졌다.

클라이언트

Processing 으로 만들었다. 왜?

    1. Processing 이 좋아서. (유쾌한 시각적 프로그래밍)
    1. Unity 쓸줄 몰라서.
    1. 다른 엔진도 쓸줄 몰라서.
    1. 엔진부분이 더 재밌어서.
  1. 웹에다 배포하고 싶어서. (P5.js 를 통하여. 하지만 망했다. 그냥 일반 Processing 애플리케이션처럼 exe 파일로 빌드했다.)

서버

단순한 릴레이 서버.

big_mirror.png

넷코드

ZeroMQ 를 네트워크 라이브러리로 사용했다.

Continue reading

그럼에도 불구하고 그대여 가장 소중한 것을 이 세상에 선사하소사

<보이지 않는 전우>

중국내 논란이나 전세계적인 논란이나, 상상 가능한 모든 범위를 커버했던 것 같다. 보도자료의 디테일의 진실성부터 언론의 정신이며 OpenSSL 재단의 재무 상황이며 모금의 어려움이 확대보도됐는지 여부며 유사 프로젝트들과 비교했을 때 OpenSSL 의 영향력이 과대평과됐는지 여부며 OpenSSL 의 문제는 돈인가 관리인가 논쟁이며 OpenSSL 의 코드가 쓰레기인지 여부며 OpenSSL 이 어떻게 영향력 다른 말로 점유율을 얻은것인지며 대형 사이트들 다른말로 큰회사들이 암호학 라이브러리를 선정하는 프로세스가 어떻게 되어있는가며 OpenSSL 이 취약점을 발표한 프로세스며 오픈소스 생태계 대토론이며 소프트웨어경제학과 보안의 관계며 심지어 다양한 버전의 음모론들까지…

끝내며,

사건 당사자, Smartisan 창업주이자 CEO 인 나영호씨가 대응글에서 인용한, 테레사 수녀가 콜카타 고아원에 써준 시를 재인용한다.

그대가 친절하면
사람들은 그대가 이기적이고 속셈이 음흉하다고 말할 수 있다
그럼에도 불구하고
그대여 친절하소사

그대가 성실하고 솔직하다면
사람들은 그대에게 사기치고 등골 빼먹을 수도 있다
그럼에도 불구하고
그대여 성실하고 솔직하소사

그대가 오랜 기간 심혈을 쏟아 건설한 결과물들이
사람들에게 하루밤사이에 짓밟혀버릴지도 모른다
그럼에도 불구하고
그대여 건설하소사

그대가 오늘 한 선행이
내일이면 사람들에게 잊혀질지도 모른다
그럼에도 불구하고
그대여 선행을 하소사

그대가 가장 소중한 것을 이 세상에 바쳤을지언정
그것이 그대로 하여금 감사의 마음을 받게 하기에는 역부족일지도 모른다
그럼에도 불구하고
그대여 가장 소중한 것을 이 세상에 선사하소사

사람들은 늘 도리를 따지지 않고 비논리적이고 자기중심적이니라
그럼에도 불구하고
그대여 그들을 용서하소사

(끝)

600억 값어치 해킹으로 이더리움(Ethereum) 가격 폭락

비트코인 유사한 인터넷 가상 화폐 이더리움(Ethereum)의 가격이 해킹 사건으로 폭락했다.

이더리움 단위당 가격은 최고기록 $21.5 달러로부터 불과 몇시간 사이에 $15 달러까지 곤두박질 쳤다. 5천만 달러 값어치의 해킹 절도 사건 때문이었다. [1]

gettyimages-149818149.jpg

이더리움 개발자들은 이 해커의 절도를 되돌리는 핫픽스(Hard fork)를 제안하고 있는 중이다.

이더리움은 비트코인과 유사한 탈중앙화 화폐이다. 비트코인과 다른 점이라면 화폐기능 외에도 탈중앙화 조직이란 기능과 스마트 계약(Smart Contracts) 기능을 가졌다는 점이다.

이상은 최대한 간단한 소개이고, 기술적으로 보다 정확히 말하자면 Ethereum 블록체인 (네트워크) 자체는 그 어떤 취약점도 발견되지 않았다.

취약점이 발견되어 이용당한 것은 이더리움 플랫폼 위의 애플리케이션(DApp, 즉 Decentralized App) The DAO 이다. 본 블로그에서는 일전에 <크라우드펀딩의 새로운 역사> 란 제목으로 해당 프로젝트를 소개한 적이 있다.

hour_cryptocompare_index_eth_usd_168_11466160967350

The top graph shows the value of ether in US dollars, while the second shows the volume of transactions on the network over time. — CryptoCompare

Continue reading

싱글스레드 모델이 액터 모델(Actor-Model)보다 나은 X가지 이유

1. 액션(동작) 순서 컨트롤이 된다. 액션의 페이스를 컨트롤할 수 있다. 예를 들어 30fps 로 모든 몹의 x좌표 더하기 1. 액터 모델에서는 비동기라서 그 액션이 어느 프레임에 들어갈찌 모른다.

2. 디버깅이 쉽다.
2.1 액터 모델에서는 글로벌 상태에 브레이크 포인트를 찍은 후에 매개인의 메일박스를 검사해야 하는 번거로움이..
서버의 경우 클라와 달리 브포보다 로그가 더 유용할 경우가 많다. 예를 들어서 Joe Armstrong 과 Richard Stallman 등 분들이 모두 printf 디버깅 방식을 더 선호한다는 소문이… 하지만 서버가 클라만큼 상태가 복잡할 경우, 브포(==시간정지) 를 통한 글로벌 상태 파악이 극히 중요해질 때가 있다.
2.2 그리고 액터 모델은 비결정론적이라서 어떤 버그들이 어떤때는 재현되고 어떤 때는 재현되지 않을 수 있다. (그러고보니 2.2 항목은 LMAX 의 장점만 말하면 다 나오네.)

3. 반경 10메터안 모든 몹들에게 범위공격. 액터모델의 경우 남의 좌표를 알 수 없어서 일일이 물어야 한다. “님 좌표 얼마임?” (그렇지 않으면 좌표를 좌표테이블에 등록해야 하는데, 그러면 액터모델이 아니게 됨) (IO 오버헤드, 코딩 코스트)

4. 로드밸런싱따위 필요없다. 액터모델의 경우 (스케쥴러에 따라 다르지만) (어차피 스케쥴러 연구하는 사람은 없으니) 액터 로드밸런싱이 필요한 경우가 있다(Skynet 역사 참조). 반면 싱글스레드 모델에서 프로그래머는 신이고, 로드밸런싱따위 필요없다.

5. 트랜잭션?

6. 클라도 싱글스레드 모델이잖아.

7. CPU 성능에 좋다 (동일언어) (사실 이건 가장 중요하지 않은 원인이다) (늘여쓰면 글한편감이라 자세한 내용은 생략한다).

결론: 두 모델이 서로 다른 문제 도메인 (Problem Domain) 에 적합할 것 같다는거다:

  • 액터모델은 격리성, 분산성과 faul-tolerance 가 골(goal)에서 제일 중요한 경우 또는 message-passing 자체가 문제를 잘 모델링할 경우 (IM, Instant Messenger: e.g. Facebook Messenger, Whatsapp, etc.)
  • 싱글스레드 모델은 글로벌 상태 컨트롤이 중요한 경우. 예를 들어 게임. (시뮬레이팅 문제?)

적재적소(適材適所).

길게 쓰면 아무도 안읽으니 이번에도 후딱 끝내는 미덕을 발양하겠다.

(끝)

[번역] ZeroMQ설계자: 세계를 구원하라

  • 번역: coolspeed

이 글은 ZeroMQ설계자가 지은 책이며 ZeroMQ의 “바이블”이라 불리는 ZGuide 의 머리말이다.

이 책은 다양한 프로그래밍 언어 예시 버전의  PDF, epub 등 이북 포맷으로 다운로드도 가능하고[1], 한글 번역도 온라인에서 읽을 수 있다. 당연히 그속에는 이 머리말의 한글번역도 포함되어 있었다. 다만 번역이 만족스럽지 못해 필자가 직접 번역했다.


ZeroMQ 100 자 요약

ZeroMQ (ØMQ, 0MQ, or zmq 라고도 표기함) 는 임베드블 네트워킹 라이브러리처럼 생겼는데 실제론 컨커런시 프레임웤처럼 작동한다. ZeroMQ 는 원자적으로 메시지를 배송하는 소켓을 제공하는데 그 배송수단으로는 스레드간 통신, 프로세스간 통신, TCP 그리고 multicast 등 다양하다. 당신은 ZeroMQ 소켓을 N-to-N 방식으로, fan-out, pub-sub, task distribution, 그리고 request-reply 등 패턴으로 사용할 수 있다. 이것은 클러스터 제품들의 뼈대로 사용하기에 전혀 문제 없는 높은 성능을 가지고 있다. 이것의 비동기 I/O 모델은 당신이 message-passing task처럼 짜여진, 확장성 있는 멀티코어 애플리케이션을 만들 수 있게 해준다. 언어 API 만큼 고득점을 갖고 있으면서 거의 모든 OS에서 돌아간다. ZeroMQ 는 iMatix 에서 개발했으며 LGPLv3 라이센스로 소스가 오픈되어있다.

 

세상을 구원하다

ZeroMQ 요놈은 정말 좋은데. 어떻게 말로 표현할 방법이 없네.  ZeroMQ의 가치를 설명하기 위해, 일부 사람들은 요놈이 제공하는 모든 훌륭한 기능들을 나열하는 것으로 부터 시작하려고 한다:

  • 이놈은 스테로이드를 처먹은 소켓이야.
  • 이놈은 라우팅 기능이 있는 우편함으로 비유할 수 있지.
  • 존나 빠름.

Continue reading