2014-11-08 1 views
3

나는 Proof Of Work을 자바 스크립트에서 구현할 수 있습니다. 첫째, 나는 hashcash 기반 접근법을 사용하고 싶었지만 이것이 허용 가능한 보호를 제공하지 않을 수도 있음을 깨달았다. 부분 해시 역방향 작업이 CPU를 많이 사용하기 때문에 발생합니다. 여기서 공격자는 바이너리를 사용하여이 부분 역방향 해시를 생성함으로써 모든 브라우저 성능을 능가 할 수 있습니다. (어쩌면 향상된 JIT).Javascript에서 사용하기 위해 메모리 바인딩 된 작업 증명 개념이 있습니까?

따라서 CPU에서 무겁지는 않지만 브라우저의 자바 스크립트가 컴파일 된 것과 훨씬 더 많은 작업이 될 것이라고 생각되는 완성을 위해 일정한 수의 메모리 액세스가 필요합니다. 같은 작업을 해결하는 바이너리. 나는 어떤 메모리 바인딩 된 증명 작업 구현의 구현을 찾을 수있는 힌트를 얻는다.

+0

이것은 자주 묻는 질문 중 하나입니다. 우리는 다른 방법을 사용하여 지역 사회에 검색에 도움을 요청하여 자신 만의 연구를 할 것으로 기대합니다. Stackoverflow는 여기에 반드시 있어야한다고 확신하지만 왜 이미 작성한 코드가 작동하지 않는지 알아내는 데 도움이됩니다. –

+1

@ Mike'Pomax'Kamermans 나는 그 질문이 불완전하다는 것에 동의한다. 사실 Javascript로 메모리 바인딩 된 Proof-Of-Work 솔루션 코드를 개발하게되어 기쁩니다. 그러나 이것이 보안과 관련되어 있기 때문에 사람들은 종종 다른 사람들에게 "자신의 일을 굴려 라"고 경고하고 설립 된 암호, 해시 등과 같은 알려진 것들을 사용하라고 촉구합니다. 또한 그 측면이 실제로 프로그래밍과 연결되어 있고 적합 할 수 있다고 확신합니다. 에. 평가를 요구하는 의사 코드로 질문을 풍부하게하는 것이 더 나은 질문이 될지 궁금합니다. 도움! – humanityANDpeace

+0

도구 rec로 닫는 투표. –

답변

2

JavaScript 기반 작업 증명의 최첨단 기술은 이며 소스 코드는 here입니다.

당신이 제공하는 Wikipedia 링크는 메모리 바인딩 작업 증명을위한 많은 참고 자료를 제공합니다. 기존 프레임 워크를 사용하려면 kaPoW를 대신 사용할 수 있어야합니다.

+1

언뜻보기에 ** kaPoW **는 해시 반전 (최소한 소스는 SHA1을 언급합니다)에 의존하는 것 같습니다. 위키 백과에서 어떤 메소드가 메모리 바인딩 기능을 요구하는 스타일인지 알아야합니다. – humanityANDpeace

+0

@humanityANDpeace 예, kaPoW는 해시를 사용합니다.위키피디아에 대한 흥미로운 논문은 모두 변형 목록에서 "메모리 바인딩 된"항목에 언급되어 있으며, [Coelho 's] (http://eprint.iacr.org/2005/356)는 가장 최근에 [Abadi et al (PDF)] (http://www.isoc.org/isoc/conferences/ndss/03/proceedings/papers/2.pdf) 및 [Dwork et al (대형 PDF)] (http : //www.wisdom .weizmann.ac.il/mathusers/naor/PAPERS/mem.pdf) – hcs

3

증명 작업 https://github.com/tromp/cuckoo

에서 README에서 인용 내 뻐꾸기 사이클을 시도해보십시오

1) 그것은 단지 하나를 매우 수행

"뻐꾸기주기는 세 가지 중요한 방법으로 돌파구를

2) 의도 한 메모리 사용량이 임의로 설정할 수있는 그래프 크기에 따라 선형 적으로 증가합니다. 메모리를 줄일 수있는 기회는 매우 제한적입니다. 과격한 감속없이 현자.

3) 작업 증명은 즉각적으로 2 개의 sha256 및 42x2 사이펀 계산이 필요합니다. 뻐꾸기주기에

런타임 메모리 지연 시간 (67 %)에 의해 지배된다. "

+0

이 문제와 그래프 이론 등의 응용 프로그램을 다루는 사람들을 만나서 반갑습니다. Javascript를 채택 할 수 있기를 바랍니다. 아니면 이미 자바 스크립트 구현이 가능할 것입니다. 내가 간과했던 기존의? – humanityANDpeace

+0

아니요; 아직 자바 스크립트 구현이 없습니다. cuckoo.h와 cuckoo_miner.h를 직접 포팅해야합니다. 그러나 버킷 팅과 같은 최적화를 생략 할 수 있습니다. –

+0

다각형 조작 및/또는 래스터 화 작업과 관련된 * GPU의 * 용으로 특별히 설계된 * 포로가 있었으면합니다. 나에게 그것은 이상적 일 것이다. GPU는 이러한 알고리즘을 ASIC에 견딜 수있는 상용 품목입니다. 대용량 DRAM이 내장 된 ASIC는 실행할 수 있기 때문에 "메모리 하드"알 고는별로 흥미롭지 않습니다. –

0

당신은 일의 증거로 bitcoins를 구울 수 있습니다. 파괴 값 없음 더 나은 증거를. 당신은 아무것도"자바 스크립트 구현을 "입니다 귀여운 ...하지만 체인에 어떤 가치가 있다면 궁극적으로 누군가가 CUDA를 사용하여 더 나은 것을 만들 것이며 자바 스크립트는 쓸모 없게됩니다.

관련 문제