Bridge Protocol

This thread is dedicated to discussions on Bridge Protocol v2 and its issuance interface.

In the Ropsten deployment I did last week, it seem that two separate contracts get deployed (AdminUpgradeabilityProxy & another - code not available), but still no tokens are visible. And I do not have the ABI or the code to interact directly for Bridge v2. Could you kindly supply that? Are there any v2 mainnet deployments yet?

Here’s a deployment I tried today:
https://ropsten.etherscan.io/tx/0x842f757c1934576267fcb0b2f726664d57066905d82882c22e53117d52314692

-> “Cannot call fallback function from the proxy admin”

1 Like

Hi John,

This is the ABI for the token:

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_administrator","type":"address"}],"name":"isAdministrator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_supplier","type":"address"}],"name":"removeSupplier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_supplier","type":"address"}],"name":"addSupplier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_seizer","type":"address"}],"name":"removeSeizer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"priceOracle","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contact","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_administrator","type":"address"}],"name":"addRealmAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newTrustedIntermediaries","type":"address[]"}],"name":"setTrustedIntermediaries","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_supplier","type":"address"}],"name":"isSupplier","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rules","outputs":[{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPriceOracle","type":"address"}],"name":"setPriceOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_seizer","type":"address"}],"name":"addSeizer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"boardResolutionDocumentHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_administrator","type":"address"}],"name":"removeAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"boardResolutionDocumentUrl","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_currency","type":"string"},{"name":"maxDecimals","type":"uint8"}],"name":"convertTo","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contact","type":"string"}],"name":"setContact","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newRules","type":"uint256[]"},{"name":"newRulesParams","type":"uint256[]"}],"name":"setRules","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_administrator","type":"address"}],"name":"removeRealmAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenizedSharePercentage","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"realm","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingSession","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newRealm","type":"address"}],"name":"setRealm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"trustedIntermediaries","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_administrator","type":"address"}],"name":"addAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"processor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_administrator","type":"address"}],"name":"isRealmAdministrator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ruleId","type":"uint256"}],"name":"rule","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"processor","type":"address"}],"name":"setProcessor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"canTransfer","outputs":[{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"},{"name":"_value","type":"uint256"}],"name":"seize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_seizer","type":"address"}],"name":"isSeizer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenizedSharePercentage","type":"uint16"}],"name":"TokenizedSharePercentageSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"boardResolutionDocumentHash","type":"bytes32"}],"name":"BoardResolutionDocumentSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newProcessor","type":"address"}],"name":"ProcessorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newPriceOracle","type":"address"}],"name":"PriceOracleChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newTrustedIntermediaries","type":"address[]"}],"name":"TrustedIntermediariesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newRealm","type":"address"}],"name":"RealmChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"administrator","type":"address"}],"name":"RealmAdministratorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"administrator","type":"address"}],"name":"RealmAdministratorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"administrator","type":"address"}],"name":"AdministratorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"administrator","type":"address"}],"name":"AdministratorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"seizer","type":"address"}],"name":"SeizerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"seizer","type":"address"}],"name":"SeizerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Seize","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"supplier","type":"address"}],"name":"SupplierAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"supplier","type":"address"}],"name":"SupplierRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newRules","type":"uint256[]"},{"indexed":false,"name":"newRulesParams","type":"uint256[]"}],"name":"RulesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contact","type":"string"}],"name":"ContactSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"votingSession","type":"address"}],"name":"VotingSessionSet","type":"event"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"processor","type":"address"},{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"trustedIntermediaries","type":"address[]"},{"name":"_tokenizedSharePercentage","type":"uint16"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"processor","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"processor","type":"address"},{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"decimals","type":"uint8"},{"name":"trustedIntermediaries","type":"address[]"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenizedSharePercentage","type":"uint16"}],"name":"setTokenizedSharePercentage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_boardResolutionDocumentUrl","type":"string"},{"name":"_boardResolutionDocumentHash","type":"bytes32"}],"name":"setBoardResolutionDocument","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_votingSession","type":"address"}],"name":"setVotingSession","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

For the error that you has, I guess that you chose signerAddress and ownerAddress to be the same, which can not happen. The reason is that signerAddress is the deploying address and the Proxy administration address (The proxy allows you to upgrade your contract if needed) and ownerAddress is the owner of your token. If you try to call a token method from the proxy administration address, it fails because the proxy thinks that you want to perform an operation on itself, not on the token.

I totally understand that there is a lack of documentation about deployment at the moment so feel free to ask any question in this thread and we’ll reply asap.

Thanks, Seb.

I’m still getting an error, with signer different from owner address. From the Token Creation Interface:

Generating contracts…
Deploying token…
Deploying token proxy…
Token address:0x321fedb407BB1a0Eb261F709a1e8438C29c211f9
Setting price oracle for token…
Error: Error: Returned error: insufficient funds for gas * price + value

However, I did not specify a price oracle and there is sufficient ETH in the deploying account.

see
https://ropsten.etherscan.io/address/0x082676766feee117363f2e8e95553246fe063dc0

Kind thanks.

Are you sure that you have ETH to pay the gas in both accounts, the deploying account and the owner account. Some initialisation functions are performed from the owner account.

Aha, ok. I will try again. Thank’s Seb.

Hi Seb,

This time I had sufficient ETH in both signer and owner accounts, but now one of the last contract creation transaction fails with “OP01”: “Message sender must be an operator.”

https://ropsten.etherscan.io/tx/0xf983a6ff3903f244b3f5e066c9f693096d3b0d3e082734648344716f1b964801

The transaction seemed to have failed on an internal transaction from the AdminUpgradeabilityProxy contract to another contract both created months ago:

https://ropsten.etherscan.io/address/0x9048aaf13ff656bc7d9c70e49d3e23704d4c5cf9#internaltx

Does that mean the token interacts with contracts (e.g. AdminUpgradeabilityProxy) that are subject to change?

Kind thanks,
John

This transaction is the token price update in the PriceOracle contract. OP01 means that you are not allowed to push updates on this contract (which is right). That’s an issue to which we had no thought.

For now, so that you can continue, we disabled the price publishing if you are not allowed to push prices to this contracts. You have to refresh your page to get the updates.

We’ve also added the Gas limit field on the left. To deploy contracts, be sure that your gas limit is set high enough. I set it to 5000000 for my recent tests.

We’ll release another fix later so that you can deploy your own price oracle on which you can be operator later

To be sure that everything goes through, you have to fund the signer address, the owner address and all minter addresses that you would set in lots with ETH. In most of our cases, the minter address is set to the owner address.

That worked! The lot was minted. Thank you for your assistance.