Actually i2c is a master/slave protocol.
Master This is the device that generates clock, starts communication, sends I2C commands and stops communication
Slave This is the device that listens to the bus and is addressed by the master
Multi-master I2C can have more than one master and each can send commands
Arbitration A process to determine which of the masters on the bus can use it when more masters need to use the bus
You can set the address of slave by the master so your approach is correct but the explanation and the implementation steps are slightly different.