A blockchain address is calculated as a hash of the public key, and there's no way to reverse this mapping. So your best bet would be to use a stream in which address holders can publish their public key, and then use liststreampublisheritems to retrieve it. (Actually as soon as someone has signed a transaction, their public key is revealed to the blockchain as part of that signature, although this may be a little less convenient to extract.)