Ich sitze jetzt schon ein paar Tage mit genau diesem einen QA-Fund aus dem Token-Audit von OpenGradient, und das, was dabei tatsächlich auffällt, ist, wie klein ein „Floating-pragma“ in der Praxis eigentlich ist…
Hier ist der Mechanismus. Ein Floating-pragma bedeutet, dass die Solidity-Version eines Smart Contracts nicht auf eine konkrete Compiler-Version festgenagelt ist, sondern einen Bereich erlaubt. Das Risiko ist subtil: Unterschiedliche Compiler-Versionen können anderes Verhalten oder Bugfixes einführen. Daher könnte ein Vertrag, der heute problemlos kompiliert, theoretisch später anders kompilieren, wenn er erneut unter einer anderen Compiler-Version innerhalb dieses erlaubten Bereichs deployed wird. OpenGradientToken.sol war das anfangs als Problem markiert, dann behoben, bevor das Audit abgeschlossen war…
Kleine Markierung. Vollständig gelöst…
Was meiner Meinung nach oft übersehen wird: Genau solche Befunde sind es, die ein Audit finden soll – keine kritische Schwachstelle, sondern eine Best-Practice-Lücke, die irgendwann relevant werden könnte, wenn man sie ignoriert. Es sind die langweiligen Befunde, die zeigen, dass ein Audit wirklich gründlich war und nicht nur ein reines „Abnicken“.
Ich mag außerdem, dass im Auditbericht von OpenGradient dieses konkrete, kleine Thema benannt wird, statt vage zu behaupten „keine Probleme gefunden“, ohne dass man etwas zum Abgleichen hat. Ein benanntes, behobenes, kleines Problem wirkt glaubwürdiger als ein auffällig makelloser Bericht…
Aber ich werde nicht so tun, als würde ein gelöster QA-Fund dir alles über die langfristige Vertragssicherheit erzählen. Ein Audit ist ein Schnappschuss zu einem bestimmten Zeitpunkt. OpenGradients andere Contracts und zukünftige Upgrades müssten jeweils separat unter die Lupe genommen werden…
Ich habe einmal einen Vertrag geprüft, bei dem niemand ein Floating-pragma bemerkt hat – und erst Jahre später, nach einem Compiler-Update, wurde das Problem entdeckt, weil sich das Laufzeitverhalten in einer Weise geändert hat, mit der niemand gerechnet hatte.
Was ich immer noch nicht klären kann, ist, ob OpenGradient das Pragma künftig für alle neuen Verträge im Ökosystem fest einrastet oder ob das nur ein einmaliger Fix ist, der sich allein auf den Token-Contract bezieht??
@OpenGradient $OPG
#OPG
Hier ist der Mechanismus. Ein Floating-pragma bedeutet, dass die Solidity-Version eines Smart Contracts nicht auf eine konkrete Compiler-Version festgenagelt ist, sondern einen Bereich erlaubt. Das Risiko ist subtil: Unterschiedliche Compiler-Versionen können anderes Verhalten oder Bugfixes einführen. Daher könnte ein Vertrag, der heute problemlos kompiliert, theoretisch später anders kompilieren, wenn er erneut unter einer anderen Compiler-Version innerhalb dieses erlaubten Bereichs deployed wird. OpenGradientToken.sol war das anfangs als Problem markiert, dann behoben, bevor das Audit abgeschlossen war…
Kleine Markierung. Vollständig gelöst…
Was meiner Meinung nach oft übersehen wird: Genau solche Befunde sind es, die ein Audit finden soll – keine kritische Schwachstelle, sondern eine Best-Practice-Lücke, die irgendwann relevant werden könnte, wenn man sie ignoriert. Es sind die langweiligen Befunde, die zeigen, dass ein Audit wirklich gründlich war und nicht nur ein reines „Abnicken“.
Ich mag außerdem, dass im Auditbericht von OpenGradient dieses konkrete, kleine Thema benannt wird, statt vage zu behaupten „keine Probleme gefunden“, ohne dass man etwas zum Abgleichen hat. Ein benanntes, behobenes, kleines Problem wirkt glaubwürdiger als ein auffällig makelloser Bericht…
Aber ich werde nicht so tun, als würde ein gelöster QA-Fund dir alles über die langfristige Vertragssicherheit erzählen. Ein Audit ist ein Schnappschuss zu einem bestimmten Zeitpunkt. OpenGradients andere Contracts und zukünftige Upgrades müssten jeweils separat unter die Lupe genommen werden…
Ich habe einmal einen Vertrag geprüft, bei dem niemand ein Floating-pragma bemerkt hat – und erst Jahre später, nach einem Compiler-Update, wurde das Problem entdeckt, weil sich das Laufzeitverhalten in einer Weise geändert hat, mit der niemand gerechnet hatte.
Was ich immer noch nicht klären kann, ist, ob OpenGradient das Pragma künftig für alle neuen Verträge im Ökosystem fest einrastet oder ob das nur ein einmaliger Fix ist, der sich allein auf den Token-Contract bezieht??
@OpenGradient $OPG
#OPG