Skip to content

Latest commit

 

History

History
58 lines (37 loc) · 1.76 KB

README.md

File metadata and controls

58 lines (37 loc) · 1.76 KB

FreezeNet

FreezeNet is an attempt at making Proof of Work more computationally useful than it currently is. The idea is to replace Hashcash-like challenges with neural network training. This is not a fully-implemented alternative but only a proof of concept which was presented for a Data Mining project at the University of Stavanger. However, the results are encouraging so it seems worth sharing. Pull requests, questions and criticism are welcome.

For more information, you can read the paper explaining this project or take a look at the slides presenting it.

Simple API

You can apply a watermark to a model at any point.

model = FreezeNet()

some_signature = Signature(b'Some block information', 4096)
another_signature = Signature(b'Some other block information', 4096)

some_signature.sign(model)

some_signature.verify(model)    # True
another_signature.verify(model) # False

another_signature.sign(model)

some_signature.verify(model)    # False
another_signature.verify(model) # True

You can also train a model with a watermark.

model = FreezeNet()
some_signature = Signature(b'Some block information', 4096)
model.fit(x_train, y_train, **train_parameters, signature=some_signature)
some_signature.verify(model) # True

Learning ability

learning ability

Weak tampering resistance

weak tampering resistance

Strong tampering resistance

strong tampering resistance

Cite this work

@misc{freezenet20,
    author    = "Téo Bouvard",
    title     = "Freezenet: Making proof-of-work more useful",
    url       = "https://github.com/teobouvard/freezenet"
}