EDIT: Fixed misplaced comma and missing 1 in binary data per correction pointed out by PowerGlove in subsequent post.The first thing you need to understand is that addresses generally do not actually exist in Bitcoin.
What exists is a script (a small computer program) that "locks" value in the output of a transaction. You use wallet software to create the script, and the wallet software needs three important pieces of information from you to be able to create that script.
- It needs to know how many satoshis you want locked up with a script in a transaction output
- It needs to know what type of script you want it to use (P2PK, P2PKH, P2SH, P2WPKH, etc) when it locks up the output.
- It needs to know about any binary (ones and zeros) data that is needed as defined by that particular script type
So, you can tell a wallet:
"Please create a transaction for me which locks up 137,540 satoshis in an output using the P2PKH script type. The 160 bits of binary data needed for the creation of that script is as follows: 0100101110100010001011010100010010010101110101000100010001110110101110100101010 0101101010101010011010111010010101110101010111010101001010101010010101010100001 00"However, as you can perhaps see, this is not a very user friendly way for humans to interact with software.
Therefore, we humans have standardized a simpler way to say that exact same thing to each other and then to provide that information to the software that we interact with.
Step1: We all agree together that since binary data is effectively just a base2 number, we can convert that number into some other larger base so that we don't need to remember, write, or speak quite so many "digits" when communicating that data portion to each other. We could have chosen base8 and used octal notation, but that still results in a lot of digits. We decided to go with a larger base. We could have chosen base16 and used hexadecimal notation, but again we felt we could go with a larger base and reduce the number of digits. In the end, base58 was chosen. This allows us to use most of the alphanumeric digits, while avoiding some of the digits that are easily confused with others. Note that this representation ONLY has meaning if everyone involved in the communication agrees on the representation being used. For example, if I send you the value 15 and you don't know what base I'm using, then you don't know how much that is. If we agree ahead of time that we'll use base 8, then that 15 represents a binary value of 1101. However if we agree ahead of time that we'll use base 16, then it represents 10101, and if we agree ahead of time to use base58, then it represents 111111. In the end, it's the BINARY data that matters, and we can only get to that from our representation if we agree on what representation we are using.
Step 2: We agree to use a digit (or set of digits) to represent the type of script to create. So, we choose "1" to represent P2PKH, and 3 to represent P2SH, and bc1 to represent P2WPKH, and so on. Now we have two of the 3 pieces of information "encoded" into shorter easier things to say and to write. We can just agree to concatenate those two pieces of information together and then use the word "address" to decribe this representation.
Step3: We agree to move the decimal over 8 places to the left in the quantity of satoshis (divide by 100,000,000) and call it "bitcoins" instead of "satoshis".
Now we have a quick and simple way to communicate that much longer phrase I used earlier in this discussion.
So when someone asks me to send 1.2 "bitcoins" and gives me an address like "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2", I know that I can split off that first character in the "address" (the "1") and look up which "script" that represents. I can also multiply the quantity of "bitcoins" by 100,000,000 to determine the quantity of "satoshis". Doing that, I know that I'm being asked to "create a transaction which locks up 120,000,000 satoshis in an output using the P2PKH script type, and that the data that will be needed for that script is the binary representation of the base58 value "BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2".
If you give me a base57 value instead, without telling me that you've done that, then when I use base58 conversion to convert your base57 value to it's binary represenation I'm going to get the WRONG binary representation. Maybe you can see that will be a problem?
So, now that we humans have all agreed that we'll use base58 representation for that exchange of the data, the next thing we decided was that, since we're already using software to create the transaction itself, it would probably be best to have that software handle the conversion from base58 to binary. No sense in requiring every human to do that by hand and then enter in a bunch of ones and zeros. Computers are much faster and more reliable at that. So, every creator of every bitcoin wallet software (knowing that we all agreed we'd use base58 for communication with each other) built in a process whereby the human can just type in the thing they think of as an "address", and the quantity of "bitcoins". Then the wallet software will handle determining which type of script from the first digit (or leading set of digits), will multiply the quantity of "bitcoins" by 100,000,000 to determine the quantity of "satoshis", and will convert the remaining portion of the "address" to binary using a base58 converter.
As such, even if you tell someone that the address you've given them is in base57, they won't have any way of telling their wallet software that it should use a base57 converter when it converts that portion of the address to binary. The wallet software is written to assume that the address is being provided in base58. So, when it converts that data to binary, it will get the wrong data.
If you want this to work, you'll need not only to create base57 addresses, but you'll need to convince anyone that's trying to send transactions with your base57 addresses to ALSO use special wallet software that you've written that knows to use base57 conversion when using those addresses to create the actual transactions. Since the transaction data is stored in binary (and only converted to "addresses" for us humans to see at the time of display), the recipient of the transaction will ALSO need to be using your special wallet software that knows to use base57 conversion when looking at those transactions. Otherwise (since they'll be incorrectly converting that binary data to a base58 address for display) the recipient isn't going to be able to find their transactions in the blockchain.
So, the simple answer to your question is, "No, it isn't going to work the way you want it to".
The full answer to your question is, "If you can convince BOTH the recipient and sender of the transaction to use specially written wallet software that knows how to convert your custom address type into the proper transaction output scripts, then you can use any encoding you can imagine (base
58, base
57, base
347298, the super-special kostelooscoin encoding scheme that doesn't even use a numeric base at all), and it will work just fine (as long as you don't have any bugs or security holes in your software).