mirror of
https://github.com/status-im/das-research.git
synced 2025-02-22 11:28:11 +00:00
change to bitmaps
It is faster to store and process data availability as bitmaps. It is also enough, as we will not do anything with the data itself. Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
parent
b48fb6f791
commit
a07be50727
18
DAS/block.py
18
DAS/block.py
@ -1,31 +1,27 @@
|
||||
#!/bin/python3
|
||||
|
||||
import random
|
||||
from bitarray import bitarray
|
||||
from bitarray.util import zeros
|
||||
|
||||
class Block:
|
||||
|
||||
blockSize = 0
|
||||
data = []
|
||||
data = bitarray()
|
||||
|
||||
def __init__(self, size):
|
||||
self.blockSize = size
|
||||
self.data = [0] * (self.blockSize*self.blockSize)
|
||||
self.data = zeros(self.blockSize*self.blockSize)
|
||||
|
||||
def fill(self):
|
||||
for i in range(self.blockSize*self.blockSize):
|
||||
self.data[i] = random.randint(1, 9)
|
||||
self.data[i] = 1
|
||||
|
||||
def getColumn(self, columnID):
|
||||
column = [0] * self.blockSize
|
||||
for i in range(self.blockSize):
|
||||
column[i] = self.data[(i*self.blockSize)+columnID]
|
||||
return column
|
||||
return self.data[columnID::self.blockSize]
|
||||
|
||||
def getRow(self, rowID):
|
||||
row = [0] * self.blockSize
|
||||
for i in range(self.blockSize):
|
||||
row[i] = self.data[(rowID*self.blockSize)+i]
|
||||
return row
|
||||
return self.data[rowID*self.blockSize:(rowID+1)*self.blockSize]
|
||||
|
||||
def print(self):
|
||||
dash = "-" * (self.blockSize+2)
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
import random
|
||||
from DAS.block import *
|
||||
from bitarray import bitarray
|
||||
from bitarray.util import zeros
|
||||
|
||||
class Validator:
|
||||
|
||||
@ -87,15 +89,10 @@ class Validator:
|
||||
self.getColumn(c, broadcasted)
|
||||
|
||||
def sendColumn(self, c, columnID, broadcasted):
|
||||
column = [0] * self.blockSize
|
||||
for i in range(self.blockSize):
|
||||
if broadcasted.data[(i*self.blockSize)+columnID] == 0:
|
||||
broadcasted.data[(i*self.blockSize)+columnID] = self.columns[c][i]
|
||||
broadcasted.data[columnID::self.blockSize] |= self.columns[c]
|
||||
|
||||
def sendRow(self, r, rowID, broadcasted):
|
||||
for i in range(self.blockSize):
|
||||
if broadcasted.data[(rowID*self.blockSize)+i] == 0:
|
||||
broadcasted.data[(rowID*self.blockSize)+i] = self.rows[r][i]
|
||||
broadcasted.data[rowID*self.blockSize:(rowID+1)*self.blockSize] |= self.rows[r]
|
||||
|
||||
def sendRows(self, broadcasted):
|
||||
if self.proposer == 1:
|
||||
|
Loading…
x
Reference in New Issue
Block a user