Verification Logic on Safe Network

I see smart contracts as changing ‘who’ changes the data rather than ‘how’ the data is changed. It’s a more generalized way of specifying ‘who’. The permissions layer stays the same, but instead of saying the permissions belong to key ABC123, we may say the permissions belong to something which is not necessarily predefined (eg any section key with prefix length 5). Same permissions, but the ‘who’ is different.

I would imagine in mutable data (to use an old term, I think map and sequence are the new terms) we change the struct field from
owner: PublicKey
to
owner: SmartContract
The network logic changes from
verify(owner: PublicKey, sig: Signature)
to
verify(contract: SmartContract, inputs []Input)

If we can encapsulate all network logic into a signature, then I guess we don’t need a change. David seems to be suggesting we can do this by setting the content of mutable data to the contract logic, and use a signature to ‘seal’ the operation. My doubt is if the contract logic isn’t verified at the network level then maybe the data is open to being changed under invalid conditions.

I guess AT2 and CRDT significantly changes the way the network operates compared to blockchains. All the calculating is done by clients, the network just notarizes it for payment and signature validation.

As an example of when smart contracts offer extended functionality… we might set the wikipedia article for Fibonacci Sequence to only be allowed to be updated by people who know the fibonacci sequence. We can do this by getting any editor to provide the next value in the fibonacci sequence as the proof their page edit is valid. The owner of the page is a smart contract containing the logic for the fibonacci sequence. The first update can be done by anyone who can provide the first value in the sequence, ie 1. Second update by anyone who can provide the next value, ie 1. Third update by whoever can provide 2, fourth update by 3, fifth update by 5, sixth update by 8 etc. This type of ‘group’ ownership is not possible using only signature-based owners; it requires some sort of smart contract system. With signatures we must have some predefined person or group of people who are owners. But we can’t really go around asking everyone ‘do you know the values of the fibonacci sequence’ and then add their keys to the permissions on the wikipedia page for fibonacci sequence.

Is there a way to use the existing signature-based ownership and still get the fibonacci sequence editor working?

I agree. I am not interested in the blockchains. But I am interested in increasing the flexibility of proving ‘who’ is allowed to change data, which is exactly what EVM does. The EVM is a way to check if the proposed change is allowed, and if it passes through the EVM without failing then the change is valid and it happens. Restricting Safe Network to a digital signature is imo too restrictive.

I would much prefer to not introduce smart contracts if possible. I started this thread hoping to end up finding we don’t need them.

If we want to have rewards that are not owned by the network (see this post) we probably need more than signature-based ownership, since the reward must be owned by something other than a key+signature.

5 Likes