아르고는 기업의 블록체인 기술 도입을 위한 엔터프라이즈 블록체인 플랫폼입니다. 아르고는 블록체인을 도입하고자 하는 기업과 개발자들에게 개발과 운영이 간편하고 강력한 기능을 갖춘 프라이빗 블록체인을 제공하는 퍼블릭 블록체인 플랫폼을 목표로 합니다. 아르고는 클라우드 아키텍쳐를 도입하여 프라이빗 블록체인에서도 퍼블릭 블록체인에 연결하여 이의 이점을 가져갈 수 있도록 하는 하이브리드 모델을 지향하며, 이를 통해 기업이 블록체인 기술을 쉽게 도입할 수 있도록 지원합니다. 아르고 체인은 SQL을 지원하여 개발자 친화적인 환경을 제공하며, 사이드체인을 지원하여 엔터프라이즈급 성능과 프라이빗 블록체인의 개발을 가능케 합니다. 동명의 토큰 AERGO는 아르고 블록체인에서 스마트 컨트랙트의 실행과 DPoS를 위한 스테이킹 및 서비스 활용을 위해 사용되는 토큰입니다.

아르고는 현재 2018년 pre-testnet 단계로 2019년 1분기에 메인넷 런칭을 앞두고 있습니다. 

총 발행량: 500,000,000 AERGO

프라이빗 세일

32.88%

AERGO 커뮤니티 및 전략적 파트너

27.78%

토큰발행자 리저브

24.84%

어드바이저리 및 주요 지지자

7.00%

임직원

7.50%



스마트 컨트랙트는 Nick Szabo가 1994년 최초 제안한 개념입니다. 기존 계약서(Contract)는 서면으로 되어있어 계약 조건을 이행하려면 실제 사람이 계약서 대로 수행을 해야 하지만 디지털 명령어로 계약을 작성하면 조건에 따라 계약 내용을 자동으로 실행할 수 있다고 주장하였습니다.


디지털로 된 계약서는 조건에 따른 계약 결과가 명확하고, 계약 내용을 즉각 이행할 수 있습니다. 각자의 자산이 연결된 디지털로 양자 합의를 하고 계약서를 작성하고 실행하기로 한다면 계약을 이행하는데 복잡한 프로세스를 엄청나게 간소화 될 것 입니다. 또한 다양한 그러나 디지털로 된 자료들은 쉽게 복사되고 조작이 쉬워 1994년에 제안한 스마트 컨트랙트는 개념으로만 존재하고 구체적인 서비스에 이용될 수 없었습니다.


스마트 컨트랙트는 이러한 블록체인과 함께 급부상하게 됐습니다. 스마트 컨트랙트를 만들 수 있는 환경이 20여 년이 지나 구체화 된 것이죠. 최초의 블록체인 기반 스마트 컨트랙트는 비트코인 스크립트입니다. 비트코인 트랜잭션에 원시 언어인 OPCODE로 스크립트를 작성해서 보내면 조건에 따라 자동으로 거래를 수행합니다. 스크립트가 정상이면(기존에 보유한 비트코인의 잔액이 정확하고 거래를 보낸 사람의 서명이 정확한지 보는 것이 가장 기본적인 스크립트) 거래를 정상으로 본다는 일종의 계약(Contract) 개념이 있으므로 Contract Code로 불리기도 합니다.


하지만 비트코인 스크립트는 반복문을 사용할 수 없고, 비트코인 잔고 외의 다른 정보를 관리 할 수 없는 한계가 있습니다. 이는 블록체인의 특이한 구조 때문인데 비트코인 스크립트에서 반복문을 허용할 경우 만약 스크립트 조건 때문에 무한 루프가 발생할 경우 네트워크 전체가 멈출 수 있습니다. 사용자는 무한루프를 통해 쉽게 DoS(Denial of Service) 공격을 할 수 있습니다.


이더리움(Ethereum)은 이러한 비트코인 스크립팅 시스템의 한계를 극복하고자 나온 스마트 컨트랙트 특화 블록체인 플랫폼입니다. 사실 스마트 컨트랙트란 용어가 본격적으로 사용하기 시작한 것은 이더리움 이후라고 보면 됩니다. 이더리움은 비트코인 스크립팅 시스템의 한계인 다양한 상태 저장과 반복문을 허용한 스마트 컨트랙트를 만들었습니다. 여기에 각 라인을 실행할 때마다 수수료를 발생시키고 네트워크상에 수수료의 한계를 설정하여 무한루프를 막았습니다. 무한히 반복되는 조건을 만들어 스마트 컨트랙트를 실행시키면 돌다가 중간에 수수료 한계점에 도달하면 중단됩니다.


이는 기발하지만 뜻밖에 간단한 논리에 의해 구현되게 되었는데 블록체인을 통해 함수 내용과 함수의 입력을 공유하면서 무결성을 보장한다면, 함수의 결과는 별도로 공유하지 않더라도 그 무결성이 보장된다는 것이죠. 이더리움은 함수를 컴파일된 코드 형태로 거래에 포함하여 블록체인을 통해 동기화합니다. 이때 거래에 포함된 정보를 함수의 입력으로 하여 코드로 표현된 함수를 실행한 후 그 결과를 별도의 상태로 보관하는 방식으로 스마트 컨트랙트를 구현하게 되었습니다.


그리하여 독자 코인인 이더 외에 다른 디지털 객체의 상태를 저장하는 방식을 허용하여 다양한 재화를 이더리움 네트워크 위에 만들고 거래할 수 있게 되었습니다. 이더리움 상에서의 가장 유명한 스마트 컨트랙트의 예는 DAO(Decentralized Autonomous Organization)라고 불리는 탈중앙화된 자율 조직입니다. 이는 회사의 의결권을 토큰(DAO Token)으로 행사할 수 있도록 크라우드 펀딩을 통해 토큰을 이더로 구입할 수 있도록 판매하였고 그 과정에서 모인 약 2000억원 가량의 이더를 어떻게 사용할지 토큰을 기반으로 투표할 수 있도록 한 스마트 컨트랙트로서 특정 운영주체가 없이 참여자의 투표로 운영되도록 했습니다.


참고로 DAO는 DAO 스마트 컨트랙트 코드의 논리 오류 때문에 해커의 공격을 당해 엄청난 피해가 발생하게 되자 이더리움 전체를 Hard fork, 즉 롤백하는 등 우여곡절이 있었습니다. 


비트코인의 경우 스마트 컨트랙트가 지원되지는 않지만, 비트코인이라는 자산이 이동되는 단 하나의 송금 어플리케이션이 블록체인에 올라간 서비스라고 볼 수 있습니다.


Ethereum 같은 스마트 컨트랙트 지원 블록체인의 경우 스마트 컨트랙트의 상태를 변경시키는 트랜잭션 보관 데이터베이스와 스마트 컨트랙트의 최신 상태를 보관하고 있는 스마트컨트랙트 데이터베이스를 가지고 있습니다.


여기서 스마트 컨트랙트는 상태를 변경할 수 있는 어플리케이션이라고 할 수 있고 스마트 컨트랙트의 상태는 해당 어플리케이션에서 사용하는 변수라고 할 수 있으며 이를 변경하기 위한 입력값은 트랜잭션에 포함되어 있다고 볼 수 있습니다.


스마트 컨트랙트 상태(State)를 저장하는 데이터베이스의 경우 Ethereum처럼 높은 압축률을 위해 트랜잭션을 저장하는 데이터베이스와 합쳐져 있는 경우도 있고 아니면 분산합의와 스마트 컨트랙트의 낮은 의존성을 달성하기 위해 완전히 분리된 경우도 있습니다.


출처 : https://blog.theloop.co.kr/2017/03/28/%EC%8A%A4%EB%A7%88%ED%8A%B8-%EC%BB%A8%ED%8A%B8%EB%9E%99%ED%8A%B8smart-contract-%EA%B0%9C%EC%9A%94-1/

https://blog.theloop.co.kr/2017/04/04/%EC%8A%A4%EB%A7%88%ED%8A%B8-%EC%BB%A8%ED%8A%B8%EB%9E%99%ED%8A%B8smart-contract-%EA%B0%9C%EC%9A%94-2/

대시는 사토시 나카모토의 비트코인에 기반한 첫 번째 익명성을 갖는 암호 화폐로 2014년 1월 Xcoin으로 출시 후 2월 Darkcoin으로 변경되었으며, 2015년 3월 대시 코인으로 명칭이 바뀌었다.


비트코인과의 차이점


1). 알고리즘

비트코인은 채굴 방식이 SHA-256 알고리즘을 사용한 POW(Proof Of Work) 방식이지만, 대시는 채굴 방식이 X11 알고리즘을 사용한 POW 방식이다.


2). 채굴 방식

대시는 POW 방식 뿐만 아니라 마스터노드(Masternode)를 이용해서도 채굴이 가능하다. 대시의 마스터노드를 구축하기 위해 동일한 IP 주소에 대시 코인이 1,000개가 필요하며, 1시간 이상 연결 지연 없이 24시간 운영이 가능해야 한다. POW 방식과 마찬가지로 매 블록마다 45%의 블록 보상을 얻을 수 있으며 각 마스터노드는 1주일에 약 2개의 대시 코인을 받을 수 있다.2016년 기준, 연 이율이 11%이었지만 시간이 지나면서 떨어질 예정이다. 하지만, 공급의 감소로 대시의 가치가 증가해서 이를 만회할 수 있다.


3). 총 발행량과 발행 종료 시점

비트코인의 총 발행량은 2,100만 개, 발행 종료 시점은 약 2150년으로 예상되고 있다. 반면에, 대시의 경우 총 발행량은 2,250만 개, 발행 종료 시점은 2075년이다. 2075년 이후로는 기존의 마스터노드 방식을 통해 지속적으로 발행이 가능하다.


4). 빠른 송금 기능

비트코인의 경우 이중 지불(Double spending) 문제를 방지하기 위해 채굴을 통해 확인에 집중하여 의존하고 있어 송금이 느리다. 그러나 대시의 경우, 마스터노드 합의를 통해(잠금이 적용된 거래 기술) 신용 카드처럼 수 초 내로 거래를 할 수 있다.

권위가 있는 노드를 제외한 전체 노드에 잠금이 적용된 거래를 사용한 상인 A로부터 사용자 A가 상품과 서비스를 구입하기 위해 대시 코인을 전송할 때 일어나는 과정을 나타낸 것이다.

마스터노드 중에서 빠른 전송을 위해 권위 있는 마스터노드를 선출하고, 권위 있는 마스터노드는 잠금이 걸린 거래에 서명을 한다. 이를 통해 합의를 형성하여 상인 A에게 합의 메시지를 보낸다. 사용자 A에게 거래가 확인되었다고 보고가 된다. 즉, 권위가 있는 일부 노드만으로 거래를 확인하므로 수 초 내로 송금이 가능하다.

만약 사용자 A가 이중 지불을 시도한다면 네트워크에 의해 거절되어 이중 지불 문제를 막을 수 있다.


5). 익명성

빠른 송금 기술에 적용되는 것처럼 마스터노드를 통해 프라이빗센드(PrivateSend) 기술을 적용한다. 프라이빗센드 기술이란 수신자와 발신자 및 거래 정보를 모호하게 하여 익명성을 강화한다.


6). 탈중앙화된 자율 조직(DAO, Decentralized Autonomous Organization)

블록 보상의 90%는 POW와 마스터노드에 대한 보상으로 지급되고 10%는 대시의 발전을 위해 기금으로 쓰이고 있다. 이 기금을 통해서 대시의 직원과 봉사자들이 혜택을 받을 수 있다.

각 마스터 노드는 https://www.dash.org/에서 현재 제안에 투표할 수 있다.




출처 https://tokenpost.kr/terms/11141


https://www.dash.org/


https://github.com/dashpay/dash/wiki/Whitepaper

ZEC(Zcash,제트캐쉬)는 제로코인(Zerocoin)이라는 프로젝트로 시작하여 2013년에 공개되었고 파생된 암호 화폐로 개발과정에서는 제로캐시(Zerocash)로 불리다가 2016년 최종적으로 제트캐시(ZCash)로 이름이 확정되었습니다.


제트캐시(ZCASH)는 미국의 주코 윌콕스가 설립해 2016년 10월 28일에 런칭했습니다.


비트코인 수석 개발자인 가빈 안데르센과 이더리움의 설립자인 비탈릭 부테린 등이 고문으로 있으며 과학자, 직원 등 총 32명이 운영하고 있습니다.


제트캐시(ZCASH)는 비트코인의 소스코드를 이용해 만들어졌기 때문에 유사한 점이 많습니다. 총 발행량이 2,100만 개로 같으며 POW 채굴 방식으로 채굴(Mining)을 통해 발행되고 있습니다.


하지만, 겉모습은 유사할지 몰라도 속은 완전히 다릅니다. 비트코인은 SHA-256 알고리즘을 사용하는 반면, 제트캐시(ZCASH)는 Equihash 알고리즘을 사용합니다. 또한, 블록크기도 비트코인보다 2배 증가한 2MB입니다. 그러므로 처리속도 또한 비트코인보다 빠릅니다. 비트코인과 제트캐시(ZCASH)의 가장 큰 차이점은 블록체인에 모든 거래를 등록하는 비트코인에 반해, 제트캐시(ZCASH)는 영지식증명 방식을 통해 거래의 익명성을 보장한다는 것입니다.




익명성을 보장한다는 것 때문에 제트캐시(ZCASH)는 모네로(Monero), 대쉬(Dash)와 더불어 다크코인이라고 불리우고 있습니다. 비트코인이나 기존 블록체인 기술은 모든 거래내용이 오픈되어 있어 그 자체가 장점에도 불구하고 은행이나 기업들이 도입을 꺼리는 반면, 제트캐시는 강한 익명성으로 인해 인기를 끌고 있습니다.




제트캐시는 영지식증명(Zero-knowledge proof)을 통해서 익명성을 구현합니다. 영지식증명이란것은 정보를 공유하지는 못하지만, 자신이 그것을 알고 있단 것을 증명해야 할 때에 쓰이는 암호화 프로토콜입니다. 여러 가지 영지식증명 중에서, 제트캐시는 zk-SNARK를 프로토콜로 사용합니다. 제트캐시를 통해서 하는 거래는 공개블록체인에 기록되지만, 거래 시 보낸 사람, 받는 사람, 금액 등은 완벽하게 보안 됩니다. 이렇게 지급 정보가 암호화되므로 프로토콜은 새로운 암호화 방법으로 유효성을 검증하여야 하고, 이것을 zk-SNARK란 프로그램이 실행하는 겁니다.




ZK-Snark 알고리즘은 이루어진 거래들을 추적하지 못하게 만들어 미래의 양자 컴퓨터가 도입되더라도 거래를 해독할 수 없게 설계되었다고 합니다.




제트캐시에서는 두 가지의 지갑을 제공하는데 하나는 T-Address라는 투명한 지갑이고 다른 하나는 Z-Address라는 보호된 지갑입니다. 투명한 지갑은 기존의 방식대로 블록체인에 모든 거래 내역이 기록되는 반면에 보호된 지갑은 누가, 누구에게, 얼마나 전송했는지 블록체인에 기록되지 않습니다. 따라서 자금의 이동경로를 파악할 수 없게 됩니다.




제트캐시(ZCASH)을 얻을 수 있는 방법은 크게 두 가지로 나눌 수 있습니다. 첫 번째는 가상화폐 거래소를 통해 시중에서 거래되는 코인을 구입하는 것이고, 두 번째는 채굴을 통해 제트캐시(ZCASH)를 발행하고 이에 대한 수수료로 제트캐시(ZCASH)를 얻는 방법입니다.




제트캐시(ZCASH)는 시중에서 구하기 어려운 ASIC 채굴기보다 비교적 손쉽게 구할 수 있는 GPU 채굴기를 통해 채굴할 수 있습니다. GPU 채굴기는 이더리움, 이더리움 클래식, 비트코인 골드 등 다양한 코인 채굴을 지원하기 때문에 GPU 채굴이 가능한 제트캐시(ZCASH)는 채굴인들 사이에서도 인기 있는 코인입니다.




제트캐시는 총공급량에 도달하기 위해 비트코인과 같이 채굴보상에 대해서 4년마다 반감기를 줍니다. 현재는 블록 1개당약 12.5개의 제트캐시가 채굴되고 있습니다.




개발자 포상(Founder's Award) 개념이 있어서, 코인 시작 후 첫 4년 동안 채굴한 가치의 10%가 지캐시 개발자들에게 보상으로 자동지급됩니다. 그 이후 채굴자들에게 모든 보상이 돌아갑니다.




공식사이트:https://z.cash/


https://cobak.co.kr/community/3/post/36314

# 이메일을 보내기 위한 smtplib 모듈을 import 한다


import smtplib



# 이메일에 이미지를 첨부하기 위한 모듈들을 import 한다


from email.mime.image import MIMEImage

from email.mime.multipart import MIMEMultipart


COMMASPACE = ', '



# 이메일 메세지 컨테이너를 만든다


msg = MIMEMultipart()

msg['Subject'] = 'Our family reunion'


# me == 보내는 사람의 주소


# family = 받는 사람들의 모든 주소


msg['From'] = me

msg['To'] = COMMASPACE.join(family) # join 함수로 받는 사람들의 주소를 합친다

msg.preamble = 'Our family reunion'



# 전송하고자 하는 이미지 파일들이 모두 PNG 파일이라고 가정하자


for file in pngfiles:

    # 바이너리 모드로 전송할 파일들을 연다.

    # MIMEImage 클래스가 자동으로 이미지의 타입을 알아낼 것이다.


    fp = open(file, 'rb')

    img = MIMEImage(fp.read())

    fp.close()

    msg.attach(img)




# 위와 같은 형태로 멀티파트에 MIME 부품을 추가하는 식으로 더 많은 정보를 넣을 수 있다

# MIMEText 등도 추가할 수 있다.



# 로컬 서버를 통해 메일을 보낸다.


s = smtplib.SMTP('localhost')

s.sendmail(me, family, msg.as_string())

s.quit()



# 로컬 SMTP 서버가 없을 경우 계정이 있는 다른 서버를 사용하면 된다.


s = smtplib.SMTP_SSL('smtp.gmail.com',465)

s.login("아이디", "비밀번호")

s.sendmail(me, you, msg.as_string())

s.quit()

import feedparser


urls = (

    "http://bomsoft.com/rss",

    "http://abc.com/rss"

)


def crawl_rss (url) :

    d = feedparser.parse(url)

    print( type(d))

    print( d.feed["title"] )

    for e in d.entries :

        print ("title = " + e.title)

        print ("link = " + e.link)

        print ("description = " + e.description)

        print ("pubDate = " + str(e.published) )


if __name__ == "__main__" :

    for url in urls:

        crawl_rss(url)



# shutil 모듈은 이미 파이썬 배포판에 포함돼 있으므로 직접 설치할 필요가 없습니다. 이 모듈을 사용하려면 모듈을 import하기만 하면 됩니다.

import shutil

#디렉토리 복사
shutil.copytree('Original', 'Original-Copy')

#Original의 모든 내용과 구조를 똑같이 가진 Original-Copy 디렉터리가 새로 생긴 것을 확인할 수 있습니다.

# 디렉토리 이동
shutil.move('Original', 'Original-Copy')

# 디렉토리 삭제
shutil.rmtree('Original-Copy')

# 파일, 디렉토리 다루는 OS 함수

import os
os.listdir(‘.’)

os.path.isabs(파일경로) – 파일명이 절대경로이면 True
os.path.isdir(파일경로) – 파일이 디렉토리이면 True
os.path.isfile(파일경로) – 레귤러 파일인 경우 True
os.path.islink(파일경로) – 심볼릭 링크 파일인 경우 True
os.path.ismount(파일경로) – 파일 경로가 마운트 포인트인 경우 True

os.rename() – 파일명 변경 및 이동

os.stat() – 파일의 상태 확인

os.stat(파일명)[stat.ST_CTIME] – 생성 시간
os.stat(파일명)[stat.ST_ATIME] – 접근 시간
os.stat(파일명)[stat.ST_MTIME] – 수정 시간
time.ctime(시간) 시간 정보를 문자열로
os.stat(파일명)[stat.ST_UID] – UID
os.stat(파일명)[stat.ST_GID] – GID
os.stat(파일명)[stat.ST_SIZE] – 파일 크기(Bytes)
os.stat(파일명)[stat.ST_UID] – UID
os.stat(파일명)[stat.ST_NLINK] – inode 링크 수
os.stat(파일명)[stat.ST_MODE] – 파일 모드 확인


tempfile.mktemp() – 임시 파일명 생성 (실제로 파일을 만드는 것은 아님)



+ Recent posts