Hi Peter, I’m currently working on a prototype that uses Plutus, and I think I can answer some of your questions:
Is it possible for a smart contract to store such a list or could a smart contract check if an address is trusted by the originating address?
Each smart contract is configured by a DataScript, which is stored on the blockchain and can be read by the contract. You can put on the DataScript whatever you want, including numbers, arbitrary strings, public keys, or a list of trusted source/destination/whatever addresses.
Can notes be added to a transaction and stored on the blockchain to make it easier to audit payments to and from the smart contract?
Yes, you can create a DataScript for your smart contract that has a field that is an arbitrary text for you to fill, and if you are going to audit the text manually, you can make the smart contract to ignore the contents of that field. Still, the field will be stored on the blockchain.
Would it be possible for the contract to be denominated in dollars so that a payment could be, for example $10? The smart contract could then query a trusted oracle specified when the contract was created to get the current currency conversion. The smart contract would then pay out ADA valued at $10.
There is some prototype of supported multi-currencies in Plutus, but I’m not sure the machinery for accepting dollars (credit card, bank transfers or any other) will ever be implemented in Plutus, as it seems to be a bit outside the project. If you want to construct a service that sells ADA for USD, you will have to deal with some kind of payment processor or exchange or something like that.