Skip to content

Commit

Permalink
AVSS work in process mode
Browse files Browse the repository at this point in the history
Benchmarking ready

Addressed review comments

updated code to work with toms change

fixed pep8 issue
  • Loading branch information
smkuls authored and amiller committed May 8, 2019
1 parent 8732b80 commit a498941
Show file tree
Hide file tree
Showing 14 changed files with 299 additions and 25 deletions.
33 changes: 27 additions & 6 deletions aws/aws-config.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"mpc" : {
"command": "python -m honeybadgermpc.ipc",
"command": "python -m honeybadgermpc.hbavss_batch",
"t": 1,
"n": 4,
"k": 8,
"k": 1,
"num_faulty_nodes": 0,
"num_triples": 1000,
"port": 7000
Expand All @@ -14,11 +14,32 @@

"region":{
"us-east-1": {
"vm_count": 4,
"vm_count": 2,
"security_group_ids": ["sg-0faaf975"],
"image_id": "ami-0ac019f4fcb7cb7e6",
"key_file_path": "./aws/us-east1.pem",
"key_name": "us-east1"
"key_file_path": "./aws/rahul-us-east1.pem",
"key_name": "rahul-us-east1"
},
"sa-east-1": {
"vm_count": 1,
"security_group_ids": ["sg-0dfef222a2d4b2d2f"],
"image_id": "ami-03c6239555bb12112",
"key_file_path": "./aws/rahul-sa-east1.pem",
"key_name": "rahul-sa-east1"
},
"eu-central-1": {
"vm_count": 1,
"security_group_ids": ["sg-0c25c1a9b4cb83d5a"],
"image_id": "ami-0bdf93799014acdc4",
"key_file_path": "./aws/rahul-eu-central1.pem",
"key_name": "rahul-eu-central1"
},
"ca-central-1": {
"vm_count": 1,
"security_group_ids": ["sg-0eca21d071e9647c8"],
"image_id": "ami-0427e8367e3770df1",
"key_file_path": "./aws/rahul-ca-central1.pem",
"key_name": "rahul-ca-central1"
}
},

Expand All @@ -31,6 +52,6 @@
},

"docker": {
"image_path": "dsluiuc/honeybadgermpc:latest"
"image_path": "rahulsm2/honeybadgermpc:latest"
}
}
20 changes: 19 additions & 1 deletion aws/run-on-ec2.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,15 @@ def get_ipc_setup_commands(s3manager, instance_ids):
return setup_commands


def get_hbavss_setup_commands(s3manager, instance_ids):
setup_commands = [[instance_id, [
"sudo docker pull %s" % (AwsConfig.DOCKER_IMAGE_PATH),
"mkdir -p benchmark-logs",
]] for i, instance_id in enumerate(instance_ids)]

return setup_commands


def get_butterfly_network_setup_commands(max_k, s3manager, instance_ids):
from honeybadgermpc.preprocessing import PreProcessedElements, PreProcessingConstants
n, t = AwsConfig.TOTAL_VM_COUNT, AwsConfig.MPC_CONFIG.T
Expand Down Expand Up @@ -191,6 +200,12 @@ def trigger_run(run_id, skip_setup, max_k, only_setup, cleanup):
elif AwsConfig.MPC_CONFIG.COMMAND.endswith("butterfly_network"):
instance_configs = get_instance_configs(
instance_ips, {"k": AwsConfig.MPC_CONFIG.K, "run_id": run_id})
elif AwsConfig.MPC_CONFIG.COMMAND.endswith("hbavss_batch"):
instance_configs = get_instance_configs(
instance_ips, {"k": AwsConfig.MPC_CONFIG.K, "run_id": run_id})
elif AwsConfig.MPC_CONFIG.COMMAND.endswith("hbavss_light"):
instance_configs = get_instance_configs(
instance_ips, {"k": AwsConfig.MPC_CONFIG.K, "run_id": run_id})
else:
logging.error("Application not supported to run on AWS.")
raise SystemError
Expand Down Expand Up @@ -218,7 +233,10 @@ def trigger_run(run_id, skip_setup, max_k, only_setup, cleanup):
elif AwsConfig.MPC_CONFIG.COMMAND.endswith("butterfly_network"):
setup_commands = get_butterfly_network_setup_commands(
max_k, s3manager, instance_ids)

elif AwsConfig.MPC_CONFIG.COMMAND.endswith("hbavss_batch"):
setup_commands = get_hbavss_setup_commands(s3manager, instance_ids)
elif AwsConfig.MPC_CONFIG.COMMAND.endswith("hbavss_light"):
setup_commands = get_hbavss_setup_commands(s3manager, instance_ids)
logging.info("Triggering setup commands.")
run_commands_on_instances(ec2manager, setup_commands, False)

Expand Down
Empty file modified aws/setup.sh
100644 → 100755
Empty file.
18 changes: 18 additions & 0 deletions conf/avss/local.0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"N": 4,
"t": 1,
"my_id": 0,
"peers": [
"localhost:7000",
"localhost:7001",
"localhost:7002",
"localhost:7003",
"localhost:7004"
],
"extra": {
"k": 32,
"run_id": "82d7c0b8040f4ca1b3ff6b9d27888fef",
"public_key": "gANjX19tYWluX18KVEJMU1B1YmxpY0tleQpxACmBcQF9cQIoWAEAAABscQNLBFgBAAAAa3EESwJYAgAAAFZLcQVDVWOtlZ1Ns2/KbccoQ0somPzJfJw+UK9tcMnh9aRGHOEDXgoKzNJ1heQ9e9ZeyMDcxgC31gbI/Pmtej3MJ8f5qdHpILC/5tb+jPKivxJ6D5BZs4dW+ABxBlgDAAAAVktzcQddcQgoQ1Ulox8fmCgO8Lh92WEZAgW9xlkmolSOh4OgMs0WHY3Is5mLpjFWALP/0ghWk5i5gR4jqyQ/lgJ5EQL0chfMgCAHsW4k8YAvRP4IEg6lu70p2qNY5KcBcQlDVToorXqzQpuGfsqHDMqGNRCOf1bnzh8scULqbDFxWT7hAIA2mers8STlP0QiuCd7GW4PT+AWYCuWQZHr3EUDBkQ3JyEslHZpx84YIacXt6dXcK5IvQFxCkNVMOrp4Q7YNNV5qsH++3jkM0hzAUHW+gWYopN1IFSmooXv3uk5xvo4m9b4zZQ9FGr39LWSZD0I92ht3mndOkHKilUGV22z4Wm1+sAU3WNdWX3tnNiNAXELQ1Ufmpi4bhSz6c+SEFBiBeC6v5ThcKTM3FExaJuHSO1wT6Xa1tBBCmKdPFFqUA6BEx6AyLMihBNkdQGk5gAAnjfK6HXox3Zikb8MwKVid56zzRdpvfwBcQxldWIu",
"private_key": "gANjX19tYWluX18KVEJMU1ByaXZhdGVLZXkKcQApgXEBfXECKFgBAAAAbHEDSwRYAQAAAGtxBEsCWAIAAABWS3EFQ1VjrZWdTbNvym3HKENLKJj8yXycPlCvbXDJ4fWkRhzhA14KCszSdYXkPXvWXsjA3MYAt9YGyPz5rXo9zCfH+anR6SCwv+bW/ozyor8Seg+QWbOHVvgAcQZYAwAAAFZLc3EHXXEIKENVJaMfH5goDvC4fdlhGQIFvcZZJqJUjoeDoDLNFh2NyLOZi6YxVgCz/9IIVpOYuYEeI6skP5YCeREC9HIXzIAgB7FuJPGAL0T+CBIOpbu9KdqjWOSnAXEJQ1U6KK16s0Kbhn7KhwzKhjUQjn9W584fLHFC6mwxcVk+4QCANpnq7PEk5T9EIrgnexluD0/gFmArlkGR69xFAwZENychLJR2acfOGCGnF7enV3CuSL0BcQpDVTDq6eEO2DTVearB/vt45DNIcwFB1voFmKKTdSBUpqKF797pOcb6OJvW+M2UPRRq9/S1kmQ9CPdobd5p3TpByopVBldts+FptfrAFN1jXVl97ZzYjQFxC0NVH5qYuG4Us+nPkhBQYgXgur+U4XCkzNxRMWibh0jtcE+l2tbQQQpinTxRalAOgRMegMizIoQTZHUBpOYAAJ43yuh16Md2YpG/DMClYnees80Xab38AXEMZVgBAAAAaXENSwBYAgAAAFNLcQ5DHEBitQwnmtBTmLgWDcrngXWZKO2uXnwOCgkAvlpxD3ViLg=="
}
}
18 changes: 18 additions & 0 deletions conf/avss/local.1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"N": 4,
"t": 1,
"my_id": 1,
"peers": [
"localhost:7000",
"localhost:7001",
"localhost:7002",
"localhost:7003",
"localhost:7004"
],
"extra": {
"k": 32,
"run_id": "82d7c0b8040f4ca1b3ff6b9d27888fef",
"public_key": "gANjX19tYWluX18KVEJMU1B1YmxpY0tleQpxACmBcQF9cQIoWAEAAABscQNLBFgBAAAAa3EESwJYAgAAAFZLcQVDVWOtlZ1Ns2/KbccoQ0somPzJfJw+UK9tcMnh9aRGHOEDXgoKzNJ1heQ9e9ZeyMDcxgC31gbI/Pmtej3MJ8f5qdHpILC/5tb+jPKivxJ6D5BZs4dW+ABxBlgDAAAAVktzcQddcQgoQ1Ulox8fmCgO8Lh92WEZAgW9xlkmolSOh4OgMs0WHY3Is5mLpjFWALP/0ghWk5i5gR4jqyQ/lgJ5EQL0chfMgCAHsW4k8YAvRP4IEg6lu70p2qNY5KcBcQlDVToorXqzQpuGfsqHDMqGNRCOf1bnzh8scULqbDFxWT7hAIA2mers8STlP0QiuCd7GW4PT+AWYCuWQZHr3EUDBkQ3JyEslHZpx84YIacXt6dXcK5IvQFxCkNVMOrp4Q7YNNV5qsH++3jkM0hzAUHW+gWYopN1IFSmooXv3uk5xvo4m9b4zZQ9FGr39LWSZD0I92ht3mndOkHKilUGV22z4Wm1+sAU3WNdWX3tnNiNAXELQ1Ufmpi4bhSz6c+SEFBiBeC6v5ThcKTM3FExaJuHSO1wT6Xa1tBBCmKdPFFqUA6BEx6AyLMihBNkdQGk5gAAnjfK6HXox3Zikb8MwKVid56zzRdpvfwBcQxldWIu",
"private_key": "gANjX19tYWluX18KVEJMU1ByaXZhdGVLZXkKcQApgXEBfXECKFgBAAAAbHEDSwRYAQAAAGtxBEsCWAIAAABWS3EFQ1VjrZWdTbNvym3HKENLKJj8yXycPlCvbXDJ4fWkRhzhA14KCszSdYXkPXvWXsjA3MYAt9YGyPz5rXo9zCfH+anR6SCwv+bW/ozyor8Seg+QWbOHVvgAcQZYAwAAAFZLc3EHXXEIKENVJaMfH5goDvC4fdlhGQIFvcZZJqJUjoeDoDLNFh2NyLOZi6YxVgCz/9IIVpOYuYEeI6skP5YCeREC9HIXzIAgB7FuJPGAL0T+CBIOpbu9KdqjWOSnAXEJQ1U6KK16s0Kbhn7KhwzKhjUQjn9W584fLHFC6mwxcVk+4QCANpnq7PEk5T9EIrgnexluD0/gFmArlkGR69xFAwZENychLJR2acfOGCGnF7enV3CuSL0BcQpDVTDq6eEO2DTVearB/vt45DNIcwFB1voFmKKTdSBUpqKF797pOcb6OJvW+M2UPRRq9/S1kmQ9CPdobd5p3TpByopVBldts+FptfrAFN1jXVl97ZzYjQFxC0NVH5qYuG4Us+nPkhBQYgXgur+U4XCkzNxRMWibh0jtcE+l2tbQQQpinTxRalAOgRMegMizIoQTZHUBpOYAAJ43yuh16Md2YpG/DMClYnees80Xab38AXEMZVgBAAAAaXENSwFYAgAAAFNLcQ5DHF8IxDi+fpchoNuyDYCNrDKI6gOBi7g0u5dJe3NxD3ViLg=="
}
}
18 changes: 18 additions & 0 deletions conf/avss/local.2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"N": 4,
"t": 1,
"my_id": 2,
"peers": [
"localhost:7000",
"localhost:7001",
"localhost:7002",
"localhost:7003",
"localhost:7004"
],
"extra": {
"k": 32,
"run_id": "82d7c0b8040f4ca1b3ff6b9d27888fef",
"public_key": "gANjX19tYWluX18KVEJMU1B1YmxpY0tleQpxACmBcQF9cQIoWAEAAABscQNLBFgBAAAAa3EESwJYAgAAAFZLcQVDVWOtlZ1Ns2/KbccoQ0somPzJfJw+UK9tcMnh9aRGHOEDXgoKzNJ1heQ9e9ZeyMDcxgC31gbI/Pmtej3MJ8f5qdHpILC/5tb+jPKivxJ6D5BZs4dW+ABxBlgDAAAAVktzcQddcQgoQ1Ulox8fmCgO8Lh92WEZAgW9xlkmolSOh4OgMs0WHY3Is5mLpjFWALP/0ghWk5i5gR4jqyQ/lgJ5EQL0chfMgCAHsW4k8YAvRP4IEg6lu70p2qNY5KcBcQlDVToorXqzQpuGfsqHDMqGNRCOf1bnzh8scULqbDFxWT7hAIA2mers8STlP0QiuCd7GW4PT+AWYCuWQZHr3EUDBkQ3JyEslHZpx84YIacXt6dXcK5IvQFxCkNVMOrp4Q7YNNV5qsH++3jkM0hzAUHW+gWYopN1IFSmooXv3uk5xvo4m9b4zZQ9FGr39LWSZD0I92ht3mndOkHKilUGV22z4Wm1+sAU3WNdWX3tnNiNAXELQ1Ufmpi4bhSz6c+SEFBiBeC6v5ThcKTM3FExaJuHSO1wT6Xa1tBBCmKdPFFqUA6BEx6AyLMihBNkdQGk5gAAnjfK6HXox3Zikb8MwKVid56zzRdpvfwBcQxldWIu",
"private_key": "gANjX19tYWluX18KVEJMU1ByaXZhdGVLZXkKcQApgXEBfXECKFgBAAAAbHEDSwRYAQAAAGtxBEsCWAIAAABWS3EFQ1VjrZWdTbNvym3HKENLKJj8yXycPlCvbXDJ4fWkRhzhA14KCszSdYXkPXvWXsjA3MYAt9YGyPz5rXo9zCfH+anR6SCwv+bW/ozyor8Seg+QWbOHVvgAcQZYAwAAAFZLc3EHXXEIKENVJaMfH5goDvC4fdlhGQIFvcZZJqJUjoeDoDLNFh2NyLOZi6YxVgCz/9IIVpOYuYEeI6skP5YCeREC9HIXzIAgB7FuJPGAL0T+CBIOpbu9KdqjWOSnAXEJQ1U6KK16s0Kbhn7KhwzKhjUQjn9W584fLHFC6mwxcVk+4QCANpnq7PEk5T9EIrgnexluD0/gFmArlkGR69xFAwZENychLJR2acfOGCGnF7enV3CuSL0BcQpDVTDq6eEO2DTVearB/vt45DNIcwFB1voFmKKTdSBUpqKF797pOcb6OJvW+M2UPRRq9/S1kmQ9CPdobd5p3TpByopVBldts+FptfrAFN1jXVl97ZzYjQFxC0NVH5qYuG4Us+nPkhBQYgXgur+U4XCkzNxRMWibh0jtcE+l2tbQQQpinTxRalAOgRMegMizIoQTZHUBpOYAAJ43yuh16Md2YpG/DMClYnees80Xab38AXEMZVgBAAAAaXENSwJYAgAAAFNLcQ5DHH2u02VVYl3vqP9ODTYz1u94qxlUuPRbbSWSOIxxD3ViLg=="
}
}
18 changes: 18 additions & 0 deletions conf/avss/local.3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"N": 4,
"t": 1,
"my_id": 3,
"peers": [
"localhost:7000",
"localhost:7001",
"localhost:7002",
"localhost:7003",
"localhost:7004"
],
"extra": {
"k": 32,
"run_id": "82d7c0b8040f4ca1b3ff6b9d27888fef",
"public_key": "gANjX19tYWluX18KVEJMU1B1YmxpY0tleQpxACmBcQF9cQIoWAEAAABscQNLBFgBAAAAa3EESwJYAgAAAFZLcQVDVWOtlZ1Ns2/KbccoQ0somPzJfJw+UK9tcMnh9aRGHOEDXgoKzNJ1heQ9e9ZeyMDcxgC31gbI/Pmtej3MJ8f5qdHpILC/5tb+jPKivxJ6D5BZs4dW+ABxBlgDAAAAVktzcQddcQgoQ1Ulox8fmCgO8Lh92WEZAgW9xlkmolSOh4OgMs0WHY3Is5mLpjFWALP/0ghWk5i5gR4jqyQ/lgJ5EQL0chfMgCAHsW4k8YAvRP4IEg6lu70p2qNY5KcBcQlDVToorXqzQpuGfsqHDMqGNRCOf1bnzh8scULqbDFxWT7hAIA2mers8STlP0QiuCd7GW4PT+AWYCuWQZHr3EUDBkQ3JyEslHZpx84YIacXt6dXcK5IvQFxCkNVMOrp4Q7YNNV5qsH++3jkM0hzAUHW+gWYopN1IFSmooXv3uk5xvo4m9b4zZQ9FGr39LWSZD0I92ht3mndOkHKilUGV22z4Wm1+sAU3WNdWX3tnNiNAXELQ1Ufmpi4bhSz6c+SEFBiBeC6v5ThcKTM3FExaJuHSO1wT6Xa1tBBCmKdPFFqUA6BEx6AyLMihBNkdQGk5gAAnjfK6HXox3Zikb8MwKVid56zzRdpvfwBcQxldWIu",
"private_key": "gANjX19tYWluX18KVEJMU1ByaXZhdGVLZXkKcQApgXEBfXECKFgBAAAAbHEDSwRYAQAAAGtxBEsCWAIAAABWS3EFQ1VjrZWdTbNvym3HKENLKJj8yXycPlCvbXDJ4fWkRhzhA14KCszSdYXkPXvWXsjA3MYAt9YGyPz5rXo9zCfH+anR6SCwv+bW/ozyor8Seg+QWbOHVvgAcQZYAwAAAFZLc3EHXXEIKENVJaMfH5goDvC4fdlhGQIFvcZZJqJUjoeDoDLNFh2NyLOZi6YxVgCz/9IIVpOYuYEeI6skP5YCeREC9HIXzIAgB7FuJPGAL0T+CBIOpbu9KdqjWOSnAXEJQ1U6KK16s0Kbhn7KhwzKhjUQjn9W584fLHFC6mwxcVk+4QCANpnq7PEk5T9EIrgnexluD0/gFmArlkGR69xFAwZENychLJR2acfOGCGnF7enV3CuSL0BcQpDVTDq6eEO2DTVearB/vt45DNIcwFB1voFmKKTdSBUpqKF797pOcb6OJvW+M2UPRRq9/S1kmQ9CPdobd5p3TpByopVBldts+FptfrAFN1jXVl97ZzYjQFxC0NVH5qYuG4Us+nPkhBQYgXgur+U4XCkzNxRMWibh0jtcE+l2tbQQQpinTxRalAOgRMegMizIoQTZHUBpOYAAJ43yuh16Md2YpG/DMClYnees80Xab38AXEMZVgBAAAAaXENSwNYAgAAAFNLcQ5DHA2f5ZwEFHhC+5FcojW4UlIB2nOLscvy/FqUephxD3ViLg=="
}
}
18 changes: 18 additions & 0 deletions conf/avss/local.4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"N": 4,
"t": 1,
"my_id": 4,
"peers": [
"localhost:7000",
"localhost:7001",
"localhost:7002",
"localhost:7003",
"localhost:7004"
],
"extra": {
"k": 32,
"run_id": "82d7c0b8040f4ca1b3ff6b9d27888fef",
"public_key": "gANjX19tYWluX18KVEJMU1B1YmxpY0tleQpxACmBcQF9cQIoWAEAAABscQNLBFgBAAAAa3EESwJYAgAAAFZLcQVDVWOtlZ1Ns2/KbccoQ0somPzJfJw+UK9tcMnh9aRGHOEDXgoKzNJ1heQ9e9ZeyMDcxgC31gbI/Pmtej3MJ8f5qdHpILC/5tb+jPKivxJ6D5BZs4dW+ABxBlgDAAAAVktzcQddcQgoQ1Ulox8fmCgO8Lh92WEZAgW9xlkmolSOh4OgMs0WHY3Is5mLpjFWALP/0ghWk5i5gR4jqyQ/lgJ5EQL0chfMgCAHsW4k8YAvRP4IEg6lu70p2qNY5KcBcQlDVToorXqzQpuGfsqHDMqGNRCOf1bnzh8scULqbDFxWT7hAIA2mers8STlP0QiuCd7GW4PT+AWYCuWQZHr3EUDBkQ3JyEslHZpx84YIacXt6dXcK5IvQFxCkNVMOrp4Q7YNNV5qsH++3jkM0hzAUHW+gWYopN1IFSmooXv3uk5xvo4m9b4zZQ9FGr39LWSZD0I92ht3mndOkHKilUGV22z4Wm1+sAU3WNdWX3tnNiNAXELQ1Ufmpi4bhSz6c+SEFBiBeC6v5ThcKTM3FExaJuHSO1wT6Xa1tBBCmKdPFFqUA6BEx6AyLMihBNkdQGk5gAAnjfK6HXox3Zikb8MwKVid56zzRdpvfwBcQxldWIu",
"private_key": "gANjX19tYWluX18KVEJMU1ByaXZhdGVLZXkKcQApgXEBfXECKFgBAAAAbHEDSwRYAQAAAGtxBEsCWAIAAABWS3EFQ1VjrZWdTbNvym3HKENLKJj8yXycPlCvbXDJ4fWkRhzhA14KCszSdYXkPXvWXsjA3MYAt9YGyPz5rXo9zCfH+anR6SCwv+bW/ozyor8Seg+QWbOHVvgAcQZYAwAAAFZLc3EHXXEIKENVJaMfH5goDvC4fdlhGQIFvcZZJqJUjoeDoDLNFh2NyLOZi6YxVgCz/9IIVpOYuYEeI6skP5YCeREC9HIXzIAgB7FuJPGAL0T+CBIOpbu9KdqjWOSnAXEJQ1U6KK16s0Kbhn7KhwzKhjUQjn9W584fLHFC6mwxcVk+4QCANpnq7PEk5T9EIrgnexluD0/gFmArlkGR69xFAwZENychLJR2acfOGCGnF7enV3CuSL0BcQpDVTDq6eEO2DTVearB/vt45DNIcwFB1voFmKKTdSBUpqKF797pOcb6OJvW+M2UPRRq9/S1kmQ9CPdobd5p3TpByopVBldts+FptfrAFN1jXVl97ZzYjQFxC0NVH5qYuG4Us+nPkhBQYgXgur+U4XCkzNxRMWibh0jtcE+l2tbQQQpinTxRalAOgRMegMizIoQTZHUBpOYAAJ43yuh16Md2YpG/DMClYnees80Xab38AXEMZVgBAAAAaXENSwBYAgAAAFNLcQ5DHEBitQwnmtBTmLgWDcrngXWZKO2uXnwOCgkAvlpxD3ViLg=="
}
}
28 changes: 23 additions & 5 deletions honeybadgermpc/hbavss.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import logging
import asyncio
from pickle import dumps, loads
from honeybadgermpc.betterpairing import ZR, interpolate_g1_at_x
from honeybadgermpc.betterpairing import ZR, interpolate_g1_at_x, G1
from honeybadgermpc.polynomial import polynomials_over
from honeybadgermpc.poly_commit_const import PolyCommitConst
from honeybadgermpc.poly_commit_lin import PolyCommitLin
from honeybadgermpc.symmetric_crypto import SymmetricCrypto
from honeybadgermpc.protocols.reliablebroadcast import reliablebroadcast
from honeybadgermpc.protocols.avid import AVID
from honeybadgermpc.utils import wrap_send
import time

# TODO: Move these to a separate file instead of using it from batch_reconstruction.py
from honeybadgermpc.batch_reconstruction import subscribe_recv
Expand All @@ -17,7 +18,7 @@
logger = logging.getLogger(__name__)
logger.setLevel(logging.ERROR)
# Uncomment this when you want logs from this file.
# logger.setLevel(logging.NOTSET)
logger.setLevel(logging.NOTSET)


class HbAVSSMessageType:
Expand Down Expand Up @@ -92,6 +93,7 @@ def multicast(msg):
str(shared_key).encode(), encrypted_blobs[self.my_id])
if self.poly_commit.batch_verify_eval(
commitments, self.my_id+1, shares, witnesses):
logger.info(f"OK_timestamp: {time.time()}")
multicast((HbAVSSMessageType.OK, ""))
else:
multicast((HbAVSSMessageType.IMPLICATE, self.private_key))
Expand Down Expand Up @@ -393,6 +395,7 @@ def multicast(msg):
multicast((HbAVSSMessageType.IMPLICATE, self.private_key, k))
break
if all_shares_valid:
logger.info(f"OK_timestamp: {time.time()}")
multicast((HbAVSSMessageType.OK, ""))

ok_set = set()
Expand Down Expand Up @@ -559,22 +562,37 @@ async def avss(self, avss_id, values=None, dealer_id=None, client_mode=False):
# dispersal_msg_list: the list of payload z
broadcast_msg, dispersal_msg_list = self._get_dealer_msg(values, n)

tag = f"{dealer_id}-{avss_id}-B-AVID"
tag = f"{dealer_id}-{avss_id}-B-RBC"
send, recv = self.get_send(tag), self.subscribe_recv(tag)

logger.debug("[%d] Starting reliable broadcast", self.my_id)
rbc_msg = await reliablebroadcast(
tag, self.my_id, n, self.t, dealer_id, broadcast_msg, recv, send)

tag = f"{dealer_id}-{avss_id}-B-AVID"
send, recv = self.get_send(tag), self.subscribe_recv(tag)

logger.debug("[%d] Starting AVID disperse", self.my_id)
avid = AVID(n, self.t, dealer_id, recv, send, n)
# start disperse in the background
self.avid_msg_queue.put_nowait((avid, tag, dispersal_msg_list))

if client_mode and self.my_id == dealer_id:
# In client_mode, the dealer is not supposed to do
# anything after sending the initial value.
await avid.disperse(tag, self.my_id, dispersal_msg_list, client_mode=True)
self.shares_future.set_result(True)
return

# start disperse in the background
self.avid_msg_queue.put_nowait((avid, tag, dispersal_msg_list))

# avss processing
await self._process_avss_msg(avss_id, dealer_id, rbc_msg, avid)


def get_avss_params(n, t):
g, h = G1.rand(seed=[0, 0, 0, 1]), G1.rand(seed=[0, 0, 0, 1])
public_keys, private_keys = [None]*n, [None]*n
for i in range(n):
private_keys[i] = ZR.random(0)
public_keys[i] = pow(g, private_keys[i])
return g, h, public_keys, private_keys
56 changes: 56 additions & 0 deletions honeybadgermpc/hbavss_batch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
from honeybadgermpc.config import HbmpcConfig
from honeybadgermpc.ipc import ProcessProgramRunner
from honeybadgermpc.poly_commit_const import gen_pc_const_crs
from .hbavss import get_avss_params, HbAvssBatch
from honeybadgermpc.betterpairing import ZR
import asyncio
import time
import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.ERROR)
# Uncomment this when you want logs from this file.
logger.setLevel(logging.NOTSET)


async def _run(peers, n, t, my_id, batch_size):
g, h, pks, sks = get_avss_params(n + 1, t)
async with ProcessProgramRunner(peers, n+1, t, my_id) as runner:
send, recv = runner.get_send_recv('HBAVSS_BATCH')
crs = gen_pc_const_crs(t, g=g, h=h)
values = None
dealer_id = n
if my_id == dealer_id:
# Dealer
values = [ZR.random(0)] * batch_size
logger.info("Starting DEALER")
logger.info(f"Dealer timestamp: {time.time()}")
else:
logger.info("Starting RECIPIENT: %d", my_id)

with HbAvssBatch(pks, sks[my_id], crs, n, t, my_id, send, recv) as hbavss:
begin_time = time.time()
if my_id != dealer_id:
hbavss_task = asyncio.create_task(hbavss.avss(
0, dealer_id=dealer_id, values=values, client_mode=True))
await hbavss.output_queue.get()
end_time = time.time()
logger.info(f"Recipient time: {(end_time - begin_time)}")
hbavss_task.cancel()
else:
await hbavss.avss(
0, dealer_id=dealer_id, values=values, client_mode=True)
end_time = time.time()
logger.info(f"Dealer time: {(end_time - begin_time)}")


if __name__ == '__main__':
asyncio.set_event_loop(asyncio.new_event_loop())
loop = asyncio.get_event_loop()

try:
loop.run_until_complete(
_run(HbmpcConfig.peers, HbmpcConfig.N,
HbmpcConfig.t, HbmpcConfig.my_id, HbmpcConfig.extras['k']))
finally:
loop.close()
Loading

0 comments on commit a498941

Please sign in to comment.