diff --git a/nillion-python-starter b/nillion-python-starter new file mode 160000 index 00000000..15e9fe0b --- /dev/null +++ b/nillion-python-starter @@ -0,0 +1 @@ +Subproject commit 15e9fe0b43b980670bf1a97f703a8d2f25ca1afc diff --git a/nohup.out b/nohup.out new file mode 100644 index 00000000..85af3429 --- /dev/null +++ b/nohup.out @@ -0,0 +1,14 @@ +ℹ️ cluster id is 9e68173f-9c23-4acc-ba81-4f079b639964 +ℹ️ using 256 bit prime +ℹ️ storing state in /tmp/.tmp9lvTYz (80.01Gbs available) +🏃 starting nilchain node in: /tmp/.tmp9lvTYz/nillion-chain +⛓ nilchain JSON RPC available at http://127.0.0.1:48102 +⛓ nilchain REST API available at http://localhost:26650 +⛓ nilchain gRPC available at localhost:26649 +🏃 starting node 12D3KooWMvw1hEqm7EWSDEyqTb6pNetUVkepahKY6hixuAuMZfJS +⏳ waiting until bootnode is up... +🏃 starting node 12D3KooWAiwGZUwSUaT2bYVxGS8jmfMrfsanZYkHwH3uL7WJPsFq +🏃 starting node 12D3KooWM3hsAswc7ZT6VpwQ1TCZU4GCYY55nLhcsxCcfjuixW57 +👛 funding nilchain keys +📝 nillion CLI configuration written to /root/.config/nillion/nillion-cli.yaml +🌄 environment file written to /root/.config/nillion/nillion-devnet.env diff --git a/quickstart/nada_quickstart_programs/nada-project.toml b/quickstart/nada_quickstart_programs/nada-project.toml new file mode 100644 index 00000000..da166dde --- /dev/null +++ b/quickstart/nada_quickstart_programs/nada-project.toml @@ -0,0 +1,7 @@ +name = "nada_quickstart_programs" +version = "0.1.0" +authors = [""] + +[[programs]] +path = "src/main.py" +prime_size = 128 diff --git a/quickstart/nada_quickstart_programs/src/main.py b/quickstart/nada_quickstart_programs/src/main.py new file mode 100644 index 00000000..f6477c3f --- /dev/null +++ b/quickstart/nada_quickstart_programs/src/main.py @@ -0,0 +1,81 @@ +from nada_dsl import * + + +def initialize_participants(nr_participants): + """ + Initialize participants with unique identifiers. + + Parameters: + - nr_participants (int): Number of participants. + + Returns: + - participants (list): List of Party objects representing participants. + """ + participants = [] + for i in range(nr_participants): + participants.append(Party(name="Participant" + str(i))) + return participants + + +def inputs_initialization(nr_participants, participants): + """ + Initialize inputs for each participant's chosen number. + + Parameters: + - nr_participants (int): Number of participants. + + Returns: + - chosen_numbers (list): List representing chosen numbers for each participant. + """ + chosen_numbers = [] + for p in range(nr_participants): + chosen_numbers.append( + SecretUnsignedInteger(Input(name="chosen_number_p" + str(p), party=participants[p])) + ) + return chosen_numbers + + +def determine_winner(nr_participants, chosen_numbers, winning_number, outparty): + """ + Determine the winner based on the closest match to the winning number. + + Parameters: + - nr_participants (int): Number of participants. + - chosen_numbers (list): List representing chosen numbers for each participant. + - winning_number (UnsignedInteger): The predetermined winning number. + + Returns: + - winner_output (Output): Output object representing the winner's identifier. + """ + closest_diff = UnsignedInteger(2**32 - 1) # Initialize with a large number + winner_id = UnsignedInteger(0) + + for p in range(nr_participants): + diff = (chosen_numbers[p] - winning_number).abs() + is_closer = diff < closest_diff + closest_diff = is_closer.if_else(diff, closest_diff) + winner_id = is_closer.if_else(UnsignedInteger(p), winner_id) + + winner_output = Output(winner_id, "winner_id", outparty) + return winner_output + + +def nada_main(): + # Number of participants + nr_participants = 3 + + # Predetermined winning number + winning_number = UnsignedInteger(50) # You can set this to any number + + # Parties initialization + participants = initialize_participants(nr_participants) + outparty = Party(name="OutParty") + + # Inputs initialization + chosen_numbers = inputs_initialization(nr_participants, participants) + + # Determine the winner + winner_output = determine_winner(nr_participants, chosen_numbers, winning_number, outparty) + + # Output the result + return [winner_output] diff --git a/quickstart/nada_quickstart_programs/target/main.nada.bin b/quickstart/nada_quickstart_programs/target/main.nada.bin new file mode 100644 index 00000000..37a697e9 Binary files /dev/null and b/quickstart/nada_quickstart_programs/target/main.nada.bin differ diff --git a/quickstart_complete/nada_quickstart_programs/target/secret_addition_complete.nada.bin b/quickstart_complete/nada_quickstart_programs/target/secret_addition_complete.nada.bin index 4351b211..1be6bf0e 100644 Binary files a/quickstart_complete/nada_quickstart_programs/target/secret_addition_complete.nada.bin and b/quickstart_complete/nada_quickstart_programs/target/secret_addition_complete.nada.bin differ