All Projects → pmh-only → blockchain

pmh-only / blockchain

Licence: MIT license
재미로 시작한 p2p 블록체인 개발

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to blockchain

Chainode
Fast, Highly Scalable, and Lightweight Private Blockchain Network based on node.js
Stars: ✭ 55 (+223.53%)
Mutual labels:  p2p, blockchain-technology
p2p-cdn-sdk-android
Free p2p cdn android github sdk to reduce video streaming costs of live and on demand video using webrtc by upto 90% and improve scalability by 6x - 🚀 Vadootv 🚀
Stars: ✭ 39 (+129.41%)
Mutual labels:  p2p, p2p-network
microsocial
Microsocial is an experimental social platform that takes a peer-to-peer approach to social media.
Stars: ✭ 21 (+23.53%)
Mutual labels:  p2p, p2p-network
MithrilShards
.NET 6 extensible P2P Network / Distributed services library.
Stars: ✭ 15 (-11.76%)
Mutual labels:  p2p, blockchain-technology
JeChain
Node for JeChain - an experimental smart contract blockchain network
Stars: ✭ 177 (+941.18%)
Mutual labels:  blockchain-technology, p2p-network
Decentra-Network
This is an open source decentralized application network. In this network, you can develop and publish decentralized applications.
Stars: ✭ 58 (+241.18%)
Mutual labels:  p2p, p2p-network
bittensor
Internet-scale Neural Networks
Stars: ✭ 97 (+470.59%)
Mutual labels:  p2p, p2p-network
rdoc
Conflict-free replicated JSON implementation in native Go
Stars: ✭ 76 (+347.06%)
Mutual labels:  p2p
LibraBrowser
LibraBrowser
Stars: ✭ 37 (+117.65%)
Mutual labels:  blockchain-technology
Horizon
A ZeroNet search engine
Stars: ✭ 15 (-11.76%)
Mutual labels:  p2p
matchbox
Painless peer-to-peer WebRTC networking for rust wasm
Stars: ✭ 276 (+1523.53%)
Mutual labels:  p2p
Satellite-Legacy
Satellite gives you peace of mind with end-to-end encryption without sacrificing quality. Stream in 4k, chat in 500kbs+, share 10GB files.
Stars: ✭ 46 (+170.59%)
Mutual labels:  p2p
cypherpoker.js
An open source peer-to-peer poker platform with cryptocurrency integration written in JavaScript.
Stars: ✭ 72 (+323.53%)
Mutual labels:  p2p
workshop-todo-dapp
A workshop into adding realtime collaboration in a typical To-do app
Stars: ✭ 29 (+70.59%)
Mutual labels:  p2p
conceal-mobile
Conceal Mobile - Encrypted DeFI & Messaging App
Stars: ✭ 15 (-11.76%)
Mutual labels:  p2p
squeaknode
Peer-to-peer status feed 📜 with posts unlocked by Lightning ⚡
Stars: ✭ 29 (+70.59%)
Mutual labels:  p2p
storj.js
Deprecated. Browser library for interacting with Storj.
Stars: ✭ 28 (+64.71%)
Mutual labels:  p2p
tensorpeers
p2p peer-to-peer training of tensorflow models
Stars: ✭ 57 (+235.29%)
Mutual labels:  p2p
open-api
api.openfuture.io
Stars: ✭ 41 (+141.18%)
Mutual labels:  blockchain-technology
remote-lib
💫 Convert your JavaScript library to a remote service.
Stars: ✭ 40 (+135.29%)
Mutual labels:  p2p

pmh-only/blockchain

비효율적일지도 모를 블록체인

디스커션에서 여러가지 토의를 진행중입니다
개선할 점이나 아이디어, 질문이 있을경우 디스커션텝을 활용해 주세요

블럭 구조

각 블럭은 Head, Body, Tail로 구성됩니다.

Head: BlockHead

블럭의 대한 정보가 포함되는 곳입니다.
75 Bytes로 구성되어 있습니다.

type BlockHead struct {
	Index      uint16 // 2 Bytes
	CreatedAt  uint32 // 4 Bytes
	PrevHash   []byte // 64 Bytes limit
	Nonce      uint32 // 4 Bytes
	Difficulty uint8 // 1 Byte
}

Body: BlockBody

블럭의 데이터가 저장됩니다.
길이는 최소 1바이트이며 최대 길이 제한이 없습니다.

type BlockBody struct {
	Flag    BodyFlags // 1 Byte
	Message []byte // no limit
}

열거형 BodyFlags의 대한 설명은 여기를 참고하세요.

Tail: BlockTail

블럭의 Head와 Body를 해시한 값이 저장됩니다.

type BlockTail struct {
	CurrHash []byte // 64 Bytes limit
}

예시

Block Structure:

Block{
  Head: {
    Index: 1,
    CreatedAt: 1618114690,
    PrevHash: "74a4f...",
    Nonce: 98681,
    Difficulty: 4,
  },
  Body: {
    Flag: 2,
    Message: []byte("PMH is handsome"),
  },
  Tail: {
    CurrHash: SHAKE256(Head + Body, 512), // 0000...
  },
}

Serialization:
00000000 00000001 01100000 01110010 10011010 01011100 01110100 10100100 11110001 10111111 11011011 01000100 10101101 00001100 11000001 11111111 10100001 01011101 00010110 00100000 10000011 11101110 01110100 10100100 01101101 11111100 01000100 11101111 00100111 00101011 10111110 11110000 01011100 10011000 11011101 00100000 00001011 00111000 10000110 00111001 00110101 10100110 11011010 00111010 00010110 00101111 01011000 01010001 11110010 11000011 00100110 01011100 01000011 11101000 00110100 00101011 00111101 00001011 10110001 01010111 01101100 00001011 01100111 00110010 11001010 00101101 01011111 11000111 00101100 01010010 00000000 00000001 10000001 01111001 00000100 00000010 01010000 01001101 01001000 00100000 01101001 01110011 00100000 01101000 01100001 01101110 01100100 01110011 01101111 01101101 01100101 00000000 00000000 10101000 00010000 00001111 01101100 11111111 01100010 01000100 01101010 00110100 11011001 11101111 00000101 01110100 11110010 01010110 10001000 01000101 11000000 11111000 11000011 01001100 11111010 01110011 11000111 11100010 10001111 00010000 00110101 11011011 01010100 10111100 00011111 10010010 00010101 00100100 01110101 10001111 00110000 01000100 01101011 01000111 00111111 00101010 00110011 10100001 00001001 00111110 11011101 10010010 00011110 11111101 00001000 10111110 10111110 11110011 00110110 10110011 00000010 11011001 00010010 11100000 10100000

처음 2바이트는 일련번호
다음 4바이트는 생성시각
다음 64바이트는 이전 블럭 해시
다음 4바이트는 Nonce값
다음 1바이트는 채굴난이도
다음 1바이트는 데이터 종류
다음부터 마지막 64바이트 전까지는 데이터
마지막 64바이트는 현재 블럭 해시

블럭 Body 스키마

0. GENESIS

체인의 시작 블록임을 표시

체인 검증시 검증 대상에서 제외된다.
아무런 의미를 가지지 않는다.

0 // 후행 없음, 또는 Garbage값

1. PEER

체인에 참가할 피어의 정보를 서술

체인 주소, 포트, 피어 클라이언트 버전을 저장한다.

1{"address":"192.168.0.10","port":69740,"version":"v0.1"}

2. DATA

체인에 저장될 2진수 데이터 (용도 무상관)

2 // 후행: 2진수 데이터
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].