Smart Contracts – Berechtigungen und Gruppierung von Benutzern in der Blockchain

Ich versuche, SMART-Verträge zu verstehen und hätte gerne etwas Hilfe beim Verständnis. Ich denke, der beste Weg, meine Fragen zu beantworten, sind Beispielszenarien.

  1. Wenn ich einen Notardienst auf der Blockchain habe, habe ich einen Vertrag namens Notary.sol. Diese enthält Details wie Besitzer, Empfänger, Dokument. Sobald alle Parteien das Dokument unterschrieben haben, wird irgendwo eine Bestätigung gesendet. Meine Frage ist, dass ich jedes Mal, wenn ein neues Dokument notariell beglaubigt werden muss, erneut einen neuen Vertrag bei der Blockchain einreichen muss, damit es eine neue „Instanz“ mit einem neuen Status usw. gibt?

  2. Neben dem Notarbeispiel möchte ich, dass der Smart Contract zusätzliche Details der anderen Parteien überprüft, bevor sie unterschreiben dürfen. Zum Beispiel ihre Berechtigungen überprüfen oder einfach nur ihren Namen schnappen. Würde ich dazu einen anderen Smart Contract als Ereignis aufrufen, um das Ergebnis zurückzuerhalten, bevor ich mit dem Rest des Vertrags fortfahre?

  3. Im Gesundheitswesen gibt es Ärzte und Patienten. Beispielsweise kann ein Arzt viele Patienten haben. Ein Patient kann einen Hausarzt haben. Die ähnliche Beziehung gilt für Lehrer und Schüler (Viele-zu-Viele-Beziehungen). Dies könnte beim Speichern von Schülernoten komplizierter werden. Dies scheint angemessener zu sein, um dies in einer relationalen Datenbank zu verwalten, aber die Blockchain, die zum Verwalten des Vertrauens in die Aufzeichnungstransaktion verwendet wird. Im Fall des Arztpatientenbeispiels. Ich möchte vielleicht einen Vertrag, um alle Patienten zu einem anderen Arzt zu bringen, wenn ihr aktueller geht/in Rente geht. Dazu muss die Blockchain wissen, welche Patienten zum Arzt gehören. Wie könnte ich das in der Blockchain oder den Verträgen kontrollieren?

  4. Wie stelle ich sicher, dass nur bestimmte Benutzer einen Vertrag ausführen können? Wird der Vertrag ihre Adressen haben, die wir vor der Ausführung validieren können?

Hoffentlich sind dies klare Fragen und ich schätze die Antworten

Danke

Antworten (1)

  1. Die einfachste (und billigste) Option wäre wahrscheinlich, denselben Vertrag für alle Dokumente zu verwenden. Sie hätten eine Logik in Ihrem Vertrag, die es einer Partei ermöglicht, ein Dokument zu erstellen (möglicherweise unter Verwendung eines Hashs des Dokuments) und die Parteien anzugeben, die es unterzeichnen müssen.

  2. Beide Lösungen werden gut funktionieren. Es hängt alles von Ihrer Architektur ab. Wenn Sie der Meinung sind, dass die Implementierung einfacher ist, wenn Sie einen separaten Vertrag für die Berechtigungsverwaltung verwenden, dann tun Sie es.

  3. Sie haben Recht, wenn Sie denken, dass einige Dinge besser von der Blockchain und in einer relationalen Datenbank weggelassen werden. Zum einen können Sie komplexe Abfragen für Daten nicht billig (oder manchmal überhaupt) durchführen. Mein Rat ist, die Dinge so einfach wie möglich zu halten. Eine beispielhafte Datenstruktur, die Sie für die Zuordnung von Ärzten zu Patienten verwenden könnten, ist eine einfache Zuordnung von Patientenadressen zu Arztadressen:

    // map of patients to doctors
    mapping (address => address) patientsDoctors;
    
  4. Ja, der Vertrag muss die Adresse des Benutzers kennen, aber das bedeutet nicht, dass Sie die Adresse zum Zeitpunkt der Vertragserstellung kennen müssen. Beispielsweise kann Ihr Vertrag eine haben admin, die bei der Vertragserstellung zugewiesen wird und eine Karte von mutieren darf agents. Bestimmte Funktionen müssten dann fehlschlagen, wenn msg.senderin der Karte nicht enthalten ist agents.

Wäre es zu teuer, jedes Mal, wenn wir ein notariell beglaubigtes Dokument benötigen, einen neuen Smart Contract zu zerstören und zu erstellen? Hmm, eine Karte könnte funktionieren, aber ich denke, es muss ein Kompromiss zwischen dem, was in der Datenbank gespeichert ist, und dem, was in der Blockchain gespeichert ist, bestehen
@Decrypter Es hängt von Ihren Definitionen von "zu teuer" ab. Ich habe heute zwei Verträge erstellt. Die Herstellung des einen kostete 923.000 Gas, der andere 1.271.000 Gas. Das ist um einiges teurer als eine einfache Überweisung, so billig wie 21.000.