public void GimmeWorkMustConsumeAll() { var bin = new byte[] { (byte)fastdee.Devices.WireAlgoFormat.Keccak, // algo lo 0, // algo hi - big endian 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF1, // nonce count, big endian 0xFF }; var pretending = Dummy; Assert.Throws <System.ArgumentException>(() => EventInstantiator.GimmeWork(pretending, bin)); }
public void FoundNonceMustConsumeAll() { var bin = new byte[] { 0x01, 0x23, 0x45, 0x67, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1, // one extra uint given 0xA0, 0xB1, 0xC2, 0xD3, 0x4E, 0x5F, 0x60, 0x71 }; Assert.Throws <System.ArgumentException>(() => EventInstantiator.FoundNonce(bin)); }
public void FoundNonceLoadsCorrectly() { var bin = new byte[] { 0x01, 0x23, 0x45, 0x67, // original workid, big endian 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // increment wrt original base-nonce 2, // this hash produces 2 uints (weird, but it's just a test) - max is 255 uints, unlikely but I guess 192 might be a thing. 0xA0, 0xB1, 0xC2, 0xD3, 0x4E, 0x5F, 0x60, 0x71 // the format of the hash is a function of the algorithm header format }; var magic = EventInstantiator.FoundNonce(bin); Assert.Equal(0x67452301u, magic.workid); Assert.Equal(0x7766554433221100ul, magic.increment); }
public void GimmeWorkLoadsCorrectly() { var bin = new byte[] { (byte)fastdee.Devices.WireAlgoFormat.Keccak, // algo lo 0, // algo hi - big endian 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF1 // nonce count, big endian }; var pretending = Dummy; var magic = EventInstantiator.GimmeWork(pretending, bin); Assert.Same(pretending, magic.originator); Assert.Equal(fastdee.Devices.WireAlgoFormat.Keccak, magic.algoFormat); Assert.Equal(0xF1DEBC9A78563412ul, magic.scanCount); }
public void HelloMustConsumeAll() { const string devuniq = "mdz-hwswmc-udp-bare-zynq"; // mdz hybrid hardware-software-mining-contraption var binuniq = AsciiBlob(devuniq); var devspec = new byte[] { // this is basically arbitrary, the parsing is defined by devuniq (mostly), but can further refine 0xFA, // device-specific-format: next parse is versions 0, 1, 2, 3, // hardware revision 4, 5, 6, 7 // firmware/software revision version }; var hdr = new byte[] { (byte)binuniq.Length, (byte)devspec.Length }; var fake = hdr.Concat(binuniq).Concat(devspec).Concat(new byte[] { 1 }).ToArray(); var pretending = Dummy; Assert.Throws <System.ArgumentException>(() => EventInstantiator.Hello(pretending, fake)); }
public void HelloLoadsCorrectly() { const string devuniq = "mdz-hwswmc-udp-bare-zynq"; // mdz hybrid hardware-software-mining-contraption var binuniq = AsciiBlob(devuniq); var devspec = new byte[] { // this is basically arbitrary, the parsing is defined by devuniq (mostly), but can further refine 0xFA, // device-specific-format: next parse is versions 0, 1, 2, 3, // hardware revision 4, 5, 6, 7 // firmware/software revision version }; var hdr = new byte[] { (byte)binuniq.Length, (byte)devspec.Length }; var fake = hdr.Concat(binuniq).Concat(devspec).ToArray(); var pretending = Dummy; var magic = EventInstantiator.Hello(pretending, fake); Assert.Same(pretending, magic.originator); Assert.Equal(binuniq, magic.identificator); Assert.Equal(devspec, magic.deviceSpecific); }