Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG SOLVE ONCE AGAIN #73

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
#pragma version 10

smart_contracts.verify_medical_ai.contract.VerifyMedicalAI.approval_program:
// smart_contracts/verify_medical_ai/contract.py:13
// class VerifyMedicalAI(ARC4Contract):
txn NumAppArgs
bz main_bare_routing@6
method "record_ai_info(string,string,string,uint64,bool,bool)void"
method "get_ai_info()(string,string,string,uint64,bool,bool)"
txna ApplicationArgs 0
match main_record_ai_info_route@2 main_get_ai_info_route@3
err // reject transaction

main_record_ai_info_route@2:
// smart_contracts/verify_medical_ai/contract.py:28
// @arc4.abimethod()
txn OnCompletion
!
assert // OnCompletion is NoOp
txn ApplicationID
assert // is not creating
// smart_contracts/verify_medical_ai/contract.py:13
// class VerifyMedicalAI(ARC4Contract):
txna ApplicationArgs 1
txna ApplicationArgs 2
txna ApplicationArgs 3
txna ApplicationArgs 4
txna ApplicationArgs 5
txna ApplicationArgs 6
// smart_contracts/verify_medical_ai/contract.py:28
// @arc4.abimethod()
callsub record_ai_info
int 1
return

main_get_ai_info_route@3:
// smart_contracts/verify_medical_ai/contract.py:47
// @arc4.abimethod(readonly=True)
txn OnCompletion
!
assert // OnCompletion is NoOp
txn ApplicationID
assert // is not creating
callsub get_ai_info
byte 0x151f7c75
swap
concat
log
int 1
return

main_bare_routing@6:
// smart_contracts/verify_medical_ai/contract.py:13
// class VerifyMedicalAI(ARC4Contract):
txn OnCompletion
switch main_create@7 main_opt_in@8
err // reject transaction

main_create@7:
// smart_contracts/verify_medical_ai/contract.py:13
// class VerifyMedicalAI(ARC4Contract):
txn ApplicationID
!
assert // is creating
int 1
return

main_opt_in@8:
// smart_contracts/verify_medical_ai/contract.py:17
// @arc4.baremethod(allow_actions=["OptIn"])
txn ApplicationID
assert // is not creating
// smart_contracts/verify_medical_ai/contract.py:17-18
// @arc4.baremethod(allow_actions=["OptIn"])
// def opt_in(self) -> None:
callsub opt_in
int 1
return


// smart_contracts.verify_medical_ai.contract.VerifyMedicalAI.record_ai_info(name: bytes, used_model: bytes, medical_degree: bytes, mcat_score: bytes, residency_training: bytes, medical_license: bytes) -> void:
record_ai_info:
// smart_contracts/verify_medical_ai/contract.py:28-37
// @arc4.abimethod()
// def record_ai_info(
// self,
// name: arc4.String,
// used_model: arc4.String,
// medical_degree: arc4.String,
// mcat_score: arc4.UInt64,
// residency_training: arc4.Bool,
// medical_license: arc4.Bool,
// ) -> None:
proto 6 0
// smart_contracts/verify_medical_ai/contract.py:38-45
// self.ai_info[Txn.sender] = AiInfo(
// name=name,
// used_model=used_model,
// medical_degree=medical_degree,
// mcat_score=mcat_score,
// residency_training=residency_training,
// medical_license=medical_license,
// )
frame_dig -6
len
int 15
+
dup
itob
extract 6 2
byte 0x000f
swap
concat
swap
frame_dig -5
len
+
itob
extract 6 2
concat
frame_dig -3
concat
frame_dig -2
concat
frame_dig -1
int 0
getbit
int 113
swap
setbit
frame_dig -6
concat
frame_dig -5
concat
frame_dig -4
concat
// smart_contracts/verify_medical_ai/contract.py:38
// self.ai_info[Txn.sender] = AiInfo(
txn Sender
byte "ai_info"
// smart_contracts/verify_medical_ai/contract.py:38-45
// self.ai_info[Txn.sender] = AiInfo(
// name=name,
// used_model=used_model,
// medical_degree=medical_degree,
// mcat_score=mcat_score,
// residency_training=residency_training,
// medical_license=medical_license,
// )
uncover 2
app_local_put
retsub


// smart_contracts.verify_medical_ai.contract.VerifyMedicalAI.get_ai_info() -> bytes:
get_ai_info:
// smart_contracts/verify_medical_ai/contract.py:47-48
// @arc4.abimethod(readonly=True)
// def get_ai_info(self) -> AiInfo:
proto 0 1
// smart_contracts/verify_medical_ai/contract.py:49
// assert op.app_opted_in(Txn.sender, Global.current_application_id)
txn Sender
global CurrentApplicationID
app_opted_in
assert
// smart_contracts/verify_medical_ai/contract.py:50
// return self.ai_info[Txn.sender]
txn Sender
int 0
byte "ai_info"
app_local_get_ex
assert // check ai_info exists for account
retsub


// smart_contracts.verify_medical_ai.contract.VerifyMedicalAI.opt_in() -> void:
opt_in:
// smart_contracts/verify_medical_ai/contract.py:17-18
// @arc4.baremethod(allow_actions=["OptIn"])
// def opt_in(self) -> None:
proto 0 0
// smart_contracts/verify_medical_ai/contract.py:19
// self.ai_info[Txn.sender] = AiInfo(
txn Sender
byte "ai_info"
// smart_contracts/verify_medical_ai/contract.py:19-26
// self.ai_info[Txn.sender] = AiInfo(
// name=arc4.String(""),
// used_model=arc4.String(""),
// medical_degree=arc4.String(""),
// mcat_score=arc4.UInt64(0),
// residency_training=arc4.Bool(False),
// medical_license=arc4.Bool(False),
// )
byte 0x000f00110013000000000000000000000000000000
app_local_put
retsub
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
{
"hints": {
"record_ai_info(string,string,string,uint64,bool,bool)void": {
"call_config": {
"no_op": "CALL"
}
},
"get_ai_info()(string,string,string,uint64,bool,bool)": {
"read_only": true,
"call_config": {
"no_op": "CALL"
},
"structs": {
"output": {
"name": "AiInfo",
"elements": [
[
"name",
"string"
],
[
"used_model",
"string"
],
[
"medical_degree",
"string"
],
[
"mcat_score",
"uint64"
],
[
"residency_training",
"bool"
],
[
"medical_license",
"bool"
]
]
}
}
}
},
"source": {
"approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMudmVyaWZ5X21lZGljYWxfYWkuY29udHJhY3QuVmVyaWZ5TWVkaWNhbEFJLmFwcHJvdmFsX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvdmVyaWZ5X21lZGljYWxfYWkvY29udHJhY3QucHk6MTMKICAgIC8vIGNsYXNzIFZlcmlmeU1lZGljYWxBSShBUkM0Q29udHJhY3QpOgogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fYmFyZV9yb3V0aW5nQDYKICAgIG1ldGhvZCAicmVjb3JkX2FpX2luZm8oc3RyaW5nLHN0cmluZyxzdHJpbmcsdWludDY0LGJvb2wsYm9vbCl2b2lkIgogICAgbWV0aG9kICJnZXRfYWlfaW5mbygpKHN0cmluZyxzdHJpbmcsc3RyaW5nLHVpbnQ2NCxib29sLGJvb2wpIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggbWFpbl9yZWNvcmRfYWlfaW5mb19yb3V0ZUAyIG1haW5fZ2V0X2FpX2luZm9fcm91dGVAMwogICAgZXJyIC8vIHJlamVjdCB0cmFuc2FjdGlvbgoKbWFpbl9yZWNvcmRfYWlfaW5mb19yb3V0ZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL3ZlcmlmeV9tZWRpY2FsX2FpL2NvbnRyYWN0LnB5OjI4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL3ZlcmlmeV9tZWRpY2FsX2FpL2NvbnRyYWN0LnB5OjEzCiAgICAvLyBjbGFzcyBWZXJpZnlNZWRpY2FsQUkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDUKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy92ZXJpZnlfbWVkaWNhbF9haS9jb250cmFjdC5weToyOAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgcmVjb3JkX2FpX2luZm8KICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fZ2V0X2FpX2luZm9fcm91dGVAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy92ZXJpZnlfbWVkaWNhbF9haS9jb250cmFjdC5weTo0NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIGdldF9haV9pbmZvCiAgICBieXRlIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX2JhcmVfcm91dGluZ0A2OgogICAgLy8gc21hcnRfY29udHJhY3RzL3ZlcmlmeV9tZWRpY2FsX2FpL2NvbnRyYWN0LnB5OjEzCiAgICAvLyBjbGFzcyBWZXJpZnlNZWRpY2FsQUkoQVJDNENvbnRyYWN0KToKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIHN3aXRjaCBtYWluX2NyZWF0ZUA3IG1haW5fb3B0X2luQDgKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fY3JlYXRlQDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvdmVyaWZ5X21lZGljYWxfYWkvY29udHJhY3QucHk6MTMKICAgIC8vIGNsYXNzIFZlcmlmeU1lZGljYWxBSShBUkM0Q29udHJhY3QpOgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydCAvLyBpcyBjcmVhdGluZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9vcHRfaW5AODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy92ZXJpZnlfbWVkaWNhbF9haS9jb250cmFjdC5weToxNwogICAgLy8gQGFyYzQuYmFyZW1ldGhvZChhbGxvd19hY3Rpb25zPVsiT3B0SW4iXSkKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvdmVyaWZ5X21lZGljYWxfYWkvY29udHJhY3QucHk6MTctMTgKICAgIC8vIEBhcmM0LmJhcmVtZXRob2QoYWxsb3dfYWN0aW9ucz1bIk9wdEluIl0pCiAgICAvLyBkZWYgb3B0X2luKHNlbGYpIC0+IE5vbmU6CiAgICBjYWxsc3ViIG9wdF9pbgogICAgaW50IDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy52ZXJpZnlfbWVkaWNhbF9haS5jb250cmFjdC5WZXJpZnlNZWRpY2FsQUkucmVjb3JkX2FpX2luZm8obmFtZTogYnl0ZXMsIHVzZWRfbW9kZWw6IGJ5dGVzLCBtZWRpY2FsX2RlZ3JlZTogYnl0ZXMsIG1jYXRfc2NvcmU6IGJ5dGVzLCByZXNpZGVuY3lfdHJhaW5pbmc6IGJ5dGVzLCBtZWRpY2FsX2xpY2Vuc2U6IGJ5dGVzKSAtPiB2b2lkOgpyZWNvcmRfYWlfaW5mbzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy92ZXJpZnlfbWVkaWNhbF9haS9jb250cmFjdC5weToyOC0zNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiByZWNvcmRfYWlfaW5mbygKICAgIC8vICAgICBzZWxmLAogICAgLy8gICAgIG5hbWU6IGFyYzQuU3RyaW5nLAogICAgLy8gICAgIHVzZWRfbW9kZWw6IGFyYzQuU3RyaW5nLAogICAgLy8gICAgIG1lZGljYWxfZGVncmVlOiBhcmM0LlN0cmluZywKICAgIC8vICAgICBtY2F0X3Njb3JlOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICByZXNpZGVuY3lfdHJhaW5pbmc6IGFyYzQuQm9vbCwKICAgIC8vICAgICBtZWRpY2FsX2xpY2Vuc2U6IGFyYzQuQm9vbCwKICAgIC8vICkgLT4gTm9uZToKICAgIHByb3RvIDYgMAogICAgLy8gc21hcnRfY29udHJhY3RzL3ZlcmlmeV9tZWRpY2FsX2FpL2NvbnRyYWN0LnB5OjM4LTQ1CiAgICAvLyBzZWxmLmFpX2luZm9bVHhuLnNlbmRlcl0gPSBBaUluZm8oCiAgICAvLyAgICAgbmFtZT1uYW1lLAogICAgLy8gICAgIHVzZWRfbW9kZWw9dXNlZF9tb2RlbCwKICAgIC8vICAgICBtZWRpY2FsX2RlZ3JlZT1tZWRpY2FsX2RlZ3JlZSwKICAgIC8vICAgICBtY2F0X3Njb3JlPW1jYXRfc2NvcmUsCiAgICAvLyAgICAgcmVzaWRlbmN5X3RyYWluaW5nPXJlc2lkZW5jeV90cmFpbmluZywKICAgIC8vICAgICBtZWRpY2FsX2xpY2Vuc2U9bWVkaWNhbF9saWNlbnNlLAogICAgLy8gKQogICAgZnJhbWVfZGlnIC02CiAgICBsZW4KICAgIGludCAxNQogICAgKwogICAgZHVwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgYnl0ZSAweDAwMGYKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgZnJhbWVfZGlnIC01CiAgICBsZW4KICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAtMwogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIC0xCiAgICBpbnQgMAogICAgZ2V0Yml0CiAgICBpbnQgMTEzCiAgICBzd2FwCiAgICBzZXRiaXQKICAgIGZyYW1lX2RpZyAtNgogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTUKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIC00CiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy92ZXJpZnlfbWVkaWNhbF9haS9jb250cmFjdC5weTozOAogICAgLy8gc2VsZi5haV9pbmZvW1R4bi5zZW5kZXJdID0gQWlJbmZvKAogICAgdHhuIFNlbmRlcgogICAgYnl0ZSAiYWlfaW5mbyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy92ZXJpZnlfbWVkaWNhbF9haS9jb250cmFjdC5weTozOC00NQogICAgLy8gc2VsZi5haV9pbmZvW1R4bi5zZW5kZXJdID0gQWlJbmZvKAogICAgLy8gICAgIG5hbWU9bmFtZSwKICAgIC8vICAgICB1c2VkX21vZGVsPXVzZWRfbW9kZWwsCiAgICAvLyAgICAgbWVkaWNhbF9kZWdyZWU9bWVkaWNhbF9kZWdyZWUsCiAgICAvLyAgICAgbWNhdF9zY29yZT1tY2F0X3Njb3JlLAogICAgLy8gICAgIHJlc2lkZW5jeV90cmFpbmluZz1yZXNpZGVuY3lfdHJhaW5pbmcsCiAgICAvLyAgICAgbWVkaWNhbF9saWNlbnNlPW1lZGljYWxfbGljZW5zZSwKICAgIC8vICkKICAgIHVuY292ZXIgMgogICAgYXBwX2xvY2FsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLnZlcmlmeV9tZWRpY2FsX2FpLmNvbnRyYWN0LlZlcmlmeU1lZGljYWxBSS5nZXRfYWlfaW5mbygpIC0+IGJ5dGVzOgpnZXRfYWlfaW5mbzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy92ZXJpZnlfbWVkaWNhbF9haS9jb250cmFjdC5weTo0Ny00OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgZ2V0X2FpX2luZm8oc2VsZikgLT4gQWlJbmZvOgogICAgcHJvdG8gMCAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvdmVyaWZ5X21lZGljYWxfYWkvY29udHJhY3QucHk6NDkKICAgIC8vIGFzc2VydCBvcC5hcHBfb3B0ZWRfaW4oVHhuLnNlbmRlciwgR2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25faWQpCiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uSUQKICAgIGFwcF9vcHRlZF9pbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvdmVyaWZ5X21lZGljYWxfYWkvY29udHJhY3QucHk6NTAKICAgIC8vIHJldHVybiBzZWxmLmFpX2luZm9bVHhuLnNlbmRlcl0KICAgIHR4biBTZW5kZXIKICAgIGludCAwCiAgICBieXRlICJhaV9pbmZvIgogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIGFpX2luZm8gZXhpc3RzIGZvciBhY2NvdW50CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMudmVyaWZ5X21lZGljYWxfYWkuY29udHJhY3QuVmVyaWZ5TWVkaWNhbEFJLm9wdF9pbigpIC0+IHZvaWQ6Cm9wdF9pbjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy92ZXJpZnlfbWVkaWNhbF9haS9jb250cmFjdC5weToxNy0xOAogICAgLy8gQGFyYzQuYmFyZW1ldGhvZChhbGxvd19hY3Rpb25zPVsiT3B0SW4iXSkKICAgIC8vIGRlZiBvcHRfaW4oc2VsZikgLT4gTm9uZToKICAgIHByb3RvIDAgMAogICAgLy8gc21hcnRfY29udHJhY3RzL3ZlcmlmeV9tZWRpY2FsX2FpL2NvbnRyYWN0LnB5OjE5CiAgICAvLyBzZWxmLmFpX2luZm9bVHhuLnNlbmRlcl0gPSBBaUluZm8oCiAgICB0eG4gU2VuZGVyCiAgICBieXRlICJhaV9pbmZvIgogICAgLy8gc21hcnRfY29udHJhY3RzL3ZlcmlmeV9tZWRpY2FsX2FpL2NvbnRyYWN0LnB5OjE5LTI2CiAgICAvLyBzZWxmLmFpX2luZm9bVHhuLnNlbmRlcl0gPSBBaUluZm8oCiAgICAvLyAgICAgbmFtZT1hcmM0LlN0cmluZygiIiksCiAgICAvLyAgICAgdXNlZF9tb2RlbD1hcmM0LlN0cmluZygiIiksCiAgICAvLyAgICAgbWVkaWNhbF9kZWdyZWU9YXJjNC5TdHJpbmcoIiIpLAogICAgLy8gICAgIG1jYXRfc2NvcmU9YXJjNC5VSW50NjQoMCksCiAgICAvLyAgICAgcmVzaWRlbmN5X3RyYWluaW5nPWFyYzQuQm9vbChGYWxzZSksCiAgICAvLyAgICAgbWVkaWNhbF9saWNlbnNlPWFyYzQuQm9vbChGYWxzZSksCiAgICAvLyApCiAgICBieXRlIDB4MDAwZjAwMTEwMDEzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBhcHBfbG9jYWxfcHV0CiAgICByZXRzdWIK",
"clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMudmVyaWZ5X21lZGljYWxfYWkuY29udHJhY3QuVmVyaWZ5TWVkaWNhbEFJLmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvdmVyaWZ5X21lZGljYWxfYWkvY29udHJhY3QucHk6MTMKICAgIC8vIGNsYXNzIFZlcmlmeU1lZGljYWxBSShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo="
},
"state": {
"global": {
"num_byte_slices": 0,
"num_uints": 0
},
"local": {
"num_byte_slices": 1,
"num_uints": 0
}
},
"schema": {
"global": {
"declared": {},
"reserved": {}
},
"local": {
"declared": {
"ai_info": {
"type": "bytes",
"key": "ai_info"
}
},
"reserved": {}
}
},
"contract": {
"name": "VerifyMedicalAI",
"methods": [
{
"name": "record_ai_info",
"args": [
{
"type": "string",
"name": "name"
},
{
"type": "string",
"name": "used_model"
},
{
"type": "string",
"name": "medical_degree"
},
{
"type": "uint64",
"name": "mcat_score"
},
{
"type": "bool",
"name": "residency_training"
},
{
"type": "bool",
"name": "medical_license"
}
],
"returns": {
"type": "void"
}
},
{
"name": "get_ai_info",
"args": [],
"returns": {
"type": "(string,string,string,uint64,bool,bool)"
}
}
],
"networks": {}
},
"bare_call_config": {
"opt_in": "CALL",
"no_op": "CREATE"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#pragma version 10

smart_contracts.verify_medical_ai.contract.VerifyMedicalAI.clear_state_program:
// smart_contracts/verify_medical_ai/contract.py:13
// class VerifyMedicalAI(ARC4Contract):
int 1
return
Loading