nirvantyagi / stadium Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Config instructions like: message number, message size, number of servers, chain length
Allows multiply rounds testing different things to be strung together with a Coordinator config file.
Consider adding forward secrecy to onion encryption via ephemeral keys (e.g., using x25519).
This might not be important depending on how often servers rotate their keys.
-Message content is stored in separate message batch that is not verifiably monitored
-Message content batch is hybrid encrypted (symmetrically encrypted with symmetric key encrypted with public key of next server)
Returning the permutation immediately allows messages to be passed to the next server. Servers will more effectively utilize their cores generating all shuffle proofs for a mixing round at once.
-Currently requests paths from senders to self-verify batch that it received
TODO
-Verify random server batches
-Verify merkle paths of sender merkle trees to make received messages are honest
-Verify merkle paths of receiver merkle trees to show senders messages were incorporated
Hello,
I'm trying to replicate your studyresults on my own thesis and I came across this problem.
First some background, I'm running this on the cloud of a german provider (Hetzner) and to run it on Ubuntu 16.04 I've executed the following steps:
apt-get update;
apt-get install git make g++ libssl-dev libgmp3-dev libboost-all-dev libtool libtool-bin;
wget http://www.shoup.net/ntl/ntl-9.8.1.tar.gz;
gunzip ntl-9.8.1.tar.gz;
tar xf ntl-9.8.1.tar;
cd ntl-9.8.1/src;
./configure NTL_THREADS=on NTL_GMP_LIP=on NTL_THREAD_BOOST=on SHARED=on;
make;
make install;
export LD_LIBRARY_PATH=/usr/local/lib/:\$LD_LIBRARY_PATH;
cd /tmp;
wget https://dl.google.com/go/go1.15.1.linux-amd64.tar.gz;
tar -xvf go1.15.1.linux-amd64.tar.gz;
mv go /usr/local;
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/go/bin:$HOME/go/bin;
export GOPATH=$HOME/go;
mkdir -p $GOPATH/src;
cd $GOPATH/src;
git clone https://github.com/nirvantyagi/stadium.git;
cd stadium/groth;
make clean; make lib;
export LD_LIBRARY_PATH=/usr/local/lib/:$HOME/go/src/stadium/groth;
cd stadium/groth/;
chmod +x libshuffle.so;
sudo cp libshuffle.so /usr/local/lib/;
export CGO_CXXFLAGS_ALLOW=".*";
export CGO_LDFLAGS_ALLOW=".*";
export CGO_CFLAGS_ALLOW=".*";
go get stadium/groth stadium/stadium stadium/coordinator stadium/server;
go install stadium/groth stadium/stadium stadium/coordinator stadium/server;
Running make test and ./test goes without error but as soon as I try the 3-server example I run into this:
server -conf config/three-server.conf -id 1
INFO[0000] Initializing Server chainlen=3 id=1 messages=10000 servernum=3
2020/10/14 01:13:30 rpc.Register: method "DestWrap" has 7 input parameters; needs exactly three
2020/10/14 01:13:30 rpc.Register: reply type of method "InitServer" is not a pointer: "stadium.Config"
2020/10/14 01:13:30 rpc.Register: method "SetupConnections" has 2 input parameters; needs exactly three
2020/10/14 01:13:30 rpc.Register: method "Unwrap" has 4 input parameters; needs exactly three
2020/10/14 01:13:30 rpc.Register: method "Wrap" has 4 input parameters; needs exactly three
INFO[0030] Setting up server connections... id=1 num-servers=3
INFO[0030] Connection setup successful.
INFO[0030] Server received Prepare from Coordinator id=1
INFO[0030] Creating message batch...
fatal error: unexpected signal during runtime execution
[signal SIGFPE: floating-point exception code=0x1 addr=0x7f9402e7422c pc=0x7f9402e7422c]
runtime stack:
runtime.throw(0x75f76f, 0x2a)
/usr/local/go/src/runtime/panic.go:1116 +0x72
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:704 +0x4ac
goroutine 10 [syscall]:
runtime.cgocall(0x6c3e90, 0xc00009f4c0, 0xc0001a6008)
/usr/local/go/src/runtime/cgocall.go:133 +0x5b fp=0xc00009f490 sp=0xc00009f458 pc=0x40613b
stadium/groth._Cfunc_get_ciphertexts(0x279dff0, 0xc0001a6004, 0xc0001a6008, 0x0)
_cgo_gotypes.go:301 +0x4e fp=0xc00009f4c0 sp=0xc00009f490 pc=0x6a538e
stadium/groth.__encrypt_proven.func7(0x279dff0, 0xc0001a6004, 0xc0001a6008, 0x0)
/root/go/src/stadium/groth/interface.go:104 +0xcb fp=0xc00009f4f0 sp=0xc00009f4c0 pc=0x6a86eb
stadium/groth.__encrypt_proven(0xc000200000, 0x13880, 0x23ff8, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/root/go/src/stadium/groth/interface.go:104 +0x2a9 fp=0xc00009f5b8 sp=0xc00009f4f0 pc=0x6a68c9
stadium/groth.Groth.EncryptProven(0xc000200000, 0x13880, 0x23ff8, 0x8, 0x1, 0x8, 0x593465, 0x6ce7fa, 0xa, 0x7bb7c0, ...)
/root/go/src/stadium/groth/interface.go:72 +0x79 fp=0xc00009f688 sp=0xc00009f5b8 pc=0x6a6499
stadium/stadium.(*VZServer).Prepare(0xc0000de000, 0xc0000169ab, 0x0, 0x0)
/root/go/src/stadium/stadium/server.go:191 +0x32b fp=0xc00009fbe0 sp=0xc00009f688 pc=0x6b60eb
runtime.call32(0xc0000db1a0, 0xc000010688, 0xc00000f680, 0x1000000020)
/usr/local/go/src/runtime/asm_amd64.s:540 +0x3e fp=0xc00009fc10 sp=0xc00009fbe0 pc=0x46a83e
reflect.Value.call(0xc0000534a0, 0xc000010688, 0x13, 0x74cdb9, 0x4, 0xc000041f08, 0x3, 0x3, 0x40, 0x38, ...)
/usr/local/go/src/reflect/value.go:475 +0x8c7 fp=0xc00009fe28 sp=0xc00009fc10 pc=0x498a67
reflect.Value.Call(0xc0000534a0, 0xc000010688, 0x13, 0xc000030708, 0x3, 0x3, 0x7f940348bd40, 0xc0000168b0, 0xb73e40)
/usr/local/go/src/reflect/value.go:336 +0xb9 fp=0xc00009fea8 sp=0xc00009fe28 pc=0x497f59
net/rpc.(*service).call(0xc000051b40, 0xc000012230, 0xc000016850, 0xc000016860, 0xc0000cc500, 0xc00000f260, 0x702560, 0xba3a88, 0x199, 0x6e2f00, ...)
/usr/local/go/src/net/rpc/server.go:377 +0x189 fp=0xc00009ff70 sp=0xc00009fea8 pc=0x695a09
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1374 +0x1 fp=0xc00009ff78 sp=0xc00009ff70 pc=0x46c261
created by net/rpc.(*Server).ServeCodec
/usr/local/go/src/net/rpc/server.go:474 +0x445
goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x7f940330d058, 0x72, 0x0)
/usr/local/go/src/runtime/netpoll.go:220 +0x55
internal/poll.(*pollDesc).wait(0xc0000cc998, 0x72, 0x0, 0x0, 0x74f2dd)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Accept(0xc0000cc980, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:394 +0x1fc
net.(*netFD).accept(0xc0000cc980, 0x70b4a0, 0x73e760, 0x7f9403310218)
/usr/local/go/src/net/fd_unix.go:172 +0x45
net.(*TCPListener).accept(0xc00000f240, 0xc0000d9bb0, 0xc0000d9bb8, 0x18)
/usr/local/go/src/net/tcpsock_posix.go:139 +0x32
net.(*TCPListener).Accept(0xc00000f240, 0x76a6b8, 0xc000012230, 0x7f9403310218, 0xc0000107b8)
/usr/local/go/src/net/tcpsock.go:261 +0x65
net/rpc.(*Server).Accept(0xc000012230, 0x7b6540, 0xc00000f240)
/usr/local/go/src/net/rpc/server.go:625 +0x69
net/rpc.Accept(...)
/usr/local/go/src/net/rpc/server.go:685
main.main()
/root/go/src/stadium/server/main.go:76 +0x345
goroutine 7 [IO wait]:
internal/poll.runtime_pollWait(0x7f940330cf78, 0x72, 0x7b2680)
/usr/local/go/src/runtime/netpoll.go:220 +0x55
internal/poll.(*pollDesc).wait(0xc0000cca18, 0x72, 0xc0000f9000, 0x1000, 0x1000)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0000cca00, 0xc0000f9000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:159 +0x1b1
net.(*netFD).Read(0xc0000cca00, 0xc0000f9000, 0x1000, 0x1000, 0x203000, 0x203000, 0x203000)
/usr/local/go/src/net/fd_posix.go:55 +0x4f
net.(*conn).Read(0xc0000107a8, 0xc0000f9000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:182 +0x8e
bufio.(*Reader).Read(0xc0000538c0, 0xc000016840, 0x1, 0x9, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:227 +0x222
io.ReadAtLeast(0x7b1a40, 0xc0000538c0, 0xc000016840, 0x1, 0x9, 0x1, 0x0, 0xc0000d5b18, 0x769de8)
/usr/local/go/src/io/io.go:314 +0x87
io.ReadFull(...)
/usr/local/go/src/io/io.go:333
encoding/gob.decodeUintReader(0x7b1a40, 0xc0000538c0, 0xc000016840, 0x9, 0x9, 0x203000, 0xba3a88, 0x5906cb, 0xc0000d5b78)
/usr/local/go/src/encoding/gob/decode.go:120 +0x6f
encoding/gob.(*Decoder).recvMessage(0xc0000cca80, 0x40fe70)
/usr/local/go/src/encoding/gob/decoder.go:81 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc0000cca80, 0x71db00, 0x199)
/usr/local/go/src/encoding/gob/decoder.go:143 +0x10d
encoding/gob.(*Decoder).DecodeValue(0xc0000cca80, 0x6e1200, 0xc00000f640, 0x16, 0x0, 0x0)
/usr/local/go/src/encoding/gob/decoder.go:211 +0xdc
encoding/gob.(*Decoder).Decode(0xc0000cca80, 0x6e1200, 0xc00000f640, 0x1ed60, 0xc000012258)
/usr/local/go/src/encoding/gob/decoder.go:188 +0x173
net/rpc.(*gobServerCodec).ReadRequestHeader(0xc0000dac30, 0xc00000f640, 0x6e2f00, 0xc0000cca80)
/usr/local/go/src/net/rpc/server.go:397 +0x45
net/rpc.(*Server).readRequestHeader(0xc000012230, 0x7b7240, 0xc0000dac30, 0xc0000169ab, 0x16, 0x199, 0x203001, 0x0, 0x0)
/usr/local/go/src/net/rpc/server.go:583 +0x6c
net/rpc.(*Server).readRequest(0xc000012230, 0x7b7240, 0xc0000dac30, 0xc000012230, 0xc000016850, 0xc000016860, 0xc0000cc500, 0xc00000f260, 0x702560, 0xba3a88, ...)
/usr/local/go/src/net/rpc/server.go:543 +0x5a
net/rpc.(*Server).ServeCodec(0xc000012230, 0x7b7240, 0xc0000dac30)
/usr/local/go/src/net/rpc/server.go:458 +0x9d
net/rpc.(*Server).ServeConn(0xc000012230, 0x7f9403310218, 0xc0000107a8)
/usr/local/go/src/net/rpc/server.go:449 +0x165
created by net/rpc.(*Server).Accept
/usr/local/go/src/net/rpc/server.go:630 +0x55
goroutine 8 [IO wait]:
internal/poll.runtime_pollWait(0x7f940330ce98, 0x72, 0x7b2680)
/usr/local/go/src/runtime/netpoll.go:220 +0x55
internal/poll.(*pollDesc).wait(0xc0000ccb18, 0x72, 0xc0000fb000, 0x1000, 0x1000)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0000ccb00, 0xc0000fb000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:159 +0x1b1
net.(*netFD).Read(0xc0000ccb00, 0xc0000fb000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/fd_posix.go:55 +0x4f
net.(*conn).Read(0xc0000107b0, 0xc0000fb000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:182 +0x8e
bufio.(*Reader).Read(0xc000053980, 0xc000016870, 0x1, 0x9, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:227 +0x222
io.ReadAtLeast(0x7b1a40, 0xc000053980, 0xc000016870, 0x1, 0x9, 0x1, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:314 +0x87
io.ReadFull(...)
/usr/local/go/src/io/io.go:333
encoding/gob.decodeUintReader(0x7b1a40, 0xc000053980, 0xc000016870, 0x9, 0x9, 0x203000, 0x0, 0x0, 0x0)
/usr/local/go/src/encoding/gob/decode.go:120 +0x6f
encoding/gob.(*Decoder).recvMessage(0xc0000ccb80, 0x40fe70)
/usr/local/go/src/encoding/gob/decoder.go:81 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc0000ccb80, 0x71db00, 0x0)
/usr/local/go/src/encoding/gob/decoder.go:143 +0x10d
encoding/gob.(*Decoder).DecodeValue(0xc0000ccb80, 0x6e1200, 0xc00000f280, 0x16, 0x0, 0x0)
/usr/local/go/src/encoding/gob/decoder.go:211 +0xdc
encoding/gob.(*Decoder).Decode(0xc0000ccb80, 0x6e1200, 0xc00000f280, 0x0, 0xc000012258)
/usr/local/go/src/encoding/gob/decoder.go:188 +0x173
net/rpc.(*gobServerCodec).ReadRequestHeader(0xc0000dad80, 0xc00000f280, 0x0, 0x0)
/usr/local/go/src/net/rpc/server.go:397 +0x45
net/rpc.(*Server).readRequestHeader(0xc000012230, 0x7b7240, 0xc0000dad80, 0x40fe70, 0x41b1be, 0x203000, 0x203000, 0x203000, 0x7f940348b878)
/usr/local/go/src/net/rpc/server.go:583 +0x6c
net/rpc.(*Server).readRequest(0xc000012230, 0x7b7240, 0xc0000dad80, 0x40fe70, 0xc000051cc0, 0x40, 0x38, 0x730440, 0xc000030720, 0x40fe70, ...)
/usr/local/go/src/net/rpc/server.go:543 +0x5a
net/rpc.(*Server).ServeCodec(0xc000012230, 0x7b7240, 0xc0000dad80)
/usr/local/go/src/net/rpc/server.go:458 +0x9d
net/rpc.(*Server).ServeConn(0xc000012230, 0x7f9403310218, 0xc0000107b0)
/usr/local/go/src/net/rpc/server.go:449 +0x165
created by net/rpc.(*Server).Accept
/usr/local/go/src/net/rpc/server.go:630 +0x55
goroutine 9 [IO wait]:
internal/poll.runtime_pollWait(0x7f940330cdb8, 0x72, 0x7b2680)
/usr/local/go/src/runtime/netpoll.go:220 +0x55
internal/poll.(*pollDesc).wait(0xc0000ccc18, 0x72, 0xc0000fd000, 0x1000, 0x1000)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0000ccc00, 0xc0000fd000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:159 +0x1b1
net.(*netFD).Read(0xc0000ccc00, 0xc0000fd000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/fd_posix.go:55 +0x4f
net.(*conn).Read(0xc0000107b8, 0xc0000fd000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:182 +0x8e
bufio.(*Reader).Read(0xc000053a40, 0xc000016890, 0x1, 0x9, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:227 +0x222
io.ReadAtLeast(0x7b1a40, 0xc000053a40, 0xc000016890, 0x1, 0x9, 0x1, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:314 +0x87
io.ReadFull(...)
/usr/local/go/src/io/io.go:333
encoding/gob.decodeUintReader(0x7b1a40, 0xc000053a40, 0xc000016890, 0x9, 0x9, 0x203000, 0x0, 0x0, 0x0)
/usr/local/go/src/encoding/gob/decode.go:120 +0x6f
encoding/gob.(*Decoder).recvMessage(0xc0000ccd00, 0x40fe70)
/usr/local/go/src/encoding/gob/decoder.go:81 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc0000ccd00, 0x71db00, 0x0)
/usr/local/go/src/encoding/gob/decoder.go:143 +0x10d
encoding/gob.(*Decoder).DecodeValue(0xc0000ccd00, 0x6e1200, 0xc00000f2a0, 0x16, 0x0, 0x0)
/usr/local/go/src/encoding/gob/decoder.go:211 +0xdc
encoding/gob.(*Decoder).Decode(0xc0000ccd00, 0x6e1200, 0xc00000f2a0, 0x0, 0xc000012258)
/usr/local/go/src/encoding/gob/decoder.go:188 +0x173
net/rpc.(*gobServerCodec).ReadRequestHeader(0xc0000daed0, 0xc00000f2a0, 0x0, 0x0)
/usr/local/go/src/net/rpc/server.go:397 +0x45
net/rpc.(*Server).readRequestHeader(0xc000012230, 0x7b7240, 0xc0000daed0, 0x40fe70, 0x41b1be, 0x203000, 0x203000, 0x203000, 0x7f94033125c0)
/usr/local/go/src/net/rpc/server.go:583 +0x6c
net/rpc.(*Server).readRequest(0xc000012230, 0x7b7240, 0xc0000daed0, 0x40fe70, 0xc000051d40, 0x40, 0x38, 0x730440, 0xc000030720, 0x40fe70, ...)
/usr/local/go/src/net/rpc/server.go:543 +0x5a
net/rpc.(*Server).ServeCodec(0xc000012230, 0x7b7240, 0xc0000daed0)
/usr/local/go/src/net/rpc/server.go:458 +0x9d
net/rpc.(*Server).ServeConn(0xc000012230, 0x7f9403310218, 0xc0000107b8)
/usr/local/go/src/net/rpc/server.go:449 +0x165
created by net/rpc.(*Server).Accept
/usr/local/go/src/net/rpc/server.go:630 +0x55
goroutine 12 [IO wait]:
internal/poll.runtime_pollWait(0x7f940330ccd8, 0x72, 0x7b2680)
/usr/local/go/src/runtime/netpoll.go:220 +0x55
internal/poll.(*pollDesc).wait(0xc0000cce18, 0x72, 0xc000121000, 0x1000, 0x1000)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0000cce00, 0xc000121000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:159 +0x1b1
net.(*netFD).Read(0xc0000cce00, 0xc000121000, 0x1000, 0x1000, 0x0, 0x0, 0x492ff3)
/usr/local/go/src/net/fd_posix.go:55 +0x4f
net.(*conn).Read(0xc000010908, 0xc000121000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:182 +0x8e
bufio.(*Reader).Read(0xc000053ce0, 0xc000016d30, 0x1, 0x9, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:227 +0x222
io.ReadAtLeast(0x7b1a40, 0xc000053ce0, 0xc000016d30, 0x1, 0x9, 0x1, 0x418c3b, 0x7f93dacb3e00, 0x100)
/usr/local/go/src/io/io.go:314 +0x87
io.ReadFull(...)
/usr/local/go/src/io/io.go:333
encoding/gob.decodeUintReader(0x7b1a40, 0xc000053ce0, 0xc000016d30, 0x9, 0x9, 0x7b7240, 0x203000, 0x40fe70, 0xc000010688)
/usr/local/go/src/encoding/gob/decode.go:120 +0x6f
encoding/gob.(*Decoder).recvMessage(0xc0000cce80, 0xc000030708)
/usr/local/go/src/encoding/gob/decoder.go:81 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc0000cce80, 0xc000016800, 0xc000030658)
/usr/local/go/src/encoding/gob/decoder.go:143 +0x10d
encoding/gob.(*Decoder).DecodeValue(0xc0000cce80, 0x6e1240, 0xc0000db920, 0x16, 0x0, 0x0)
/usr/local/go/src/encoding/gob/decoder.go:211 +0xdc
encoding/gob.(*Decoder).Decode(0xc0000cce80, 0x6e1240, 0xc0000db920, 0x730401, 0xc0000db920)
/usr/local/go/src/encoding/gob/decoder.go:188 +0x173
net/rpc.(*gobClientCodec).ReadResponseHeader(0xc0000db830, 0xc0000db920, 0x56d079, 0x7b7080)
/usr/local/go/src/net/rpc/client.go:228 +0x45
net/rpc.(*Client).input(0xc000053da0)
/usr/local/go/src/net/rpc/client.go:109 +0xa8
created by net/rpc.NewClientWithCodec
/usr/local/go/src/net/rpc/client.go:206 +0x89
goroutine 14 [IO wait]:
internal/poll.runtime_pollWait(0x7f940330cbf8, 0x72, 0x7b2680)
/usr/local/go/src/runtime/netpoll.go:220 +0x55
internal/poll.(*pollDesc).wait(0xc0000ccf98, 0x72, 0xc000125000, 0x1000, 0x1000)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0000ccf80, 0xc000125000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:159 +0x1b1
net.(*netFD).Read(0xc0000ccf80, 0xc000125000, 0x1000, 0x1000, 0x0, 0x0, 0x492ff3)
/usr/local/go/src/net/fd_posix.go:55 +0x4f
net.(*conn).Read(0xc000010918, 0xc000125000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:182 +0x8e
bufio.(*Reader).Read(0xc000053e60, 0xc000016d70, 0x1, 0x9, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:227 +0x222
io.ReadAtLeast(0x7b1a40, 0xc000053e60, 0xc000016d70, 0x1, 0x9, 0x1, 0x418c3b, 0x7f93dacb3e00, 0x100)
/usr/local/go/src/io/io.go:314 +0x87
io.ReadFull(...)
/usr/local/go/src/io/io.go:333
encoding/gob.decodeUintReader(0x7b1a40, 0xc000053e60, 0xc000016d70, 0x9, 0x9, 0x7b7240, 0x203000, 0x40fe70, 0xc000010688)
/usr/local/go/src/encoding/gob/decode.go:120 +0x6f
encoding/gob.(*Decoder).recvMessage(0xc0000cd000, 0xc000030708)
/usr/local/go/src/encoding/gob/decoder.go:81 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc0000cd000, 0xc000016800, 0xc000030658)
/usr/local/go/src/encoding/gob/decoder.go:143 +0x10d
encoding/gob.(*Decoder).DecodeValue(0xc0000cd000, 0x6e1240, 0xc0000dbbc0, 0x16, 0x0, 0x0)
/usr/local/go/src/encoding/gob/decoder.go:211 +0xdc
encoding/gob.(*Decoder).Decode(0xc0000cd000, 0x6e1240, 0xc0000dbbc0, 0x730401, 0xc0000dbbc0)
/usr/local/go/src/encoding/gob/decoder.go:188 +0x173
net/rpc.(*gobClientCodec).ReadResponseHeader(0xc0000dba70, 0xc0000dbbc0, 0x56d079, 0x7b7080)
/usr/local/go/src/net/rpc/client.go:228 +0x45
net/rpc.(*Client).input(0xc000053f20)
/usr/local/go/src/net/rpc/client.go:109 +0xa8
created by net/rpc.NewClientWithCodec
/usr/local/go/src/net/rpc/client.go:206 +0x89
Create interface to handle distribution hashes and verification. Can fill interface with dummy hash function, for example.
-Need a clean up method to reset data structures and kill ongoing processes
Moving messages to interface will allow to test with dummy interface and then swap in schemes with different size messages.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.