A method comprising: receiving, from a requesting device, a data storage request that includes data for storage; determining whether substantially identical data is currently stored in a dispersed storage network, DSN, memory; and when the substantially identical data is not stored in the DSN memory: encoding at least a portion of the data using an error coding dispersal storage function to produce a set of encoded data slices, comprising: partitioning the data into at least one data segment; error encoding and slicing, or vice-versa, the at least one data segment into a set of data slices; sending the set of encoded data slices to the DSN memory for storage therein; characterised by: generating a unique retrieval matrix for the requesting device, wherein the unique retrieval matrix identifies a sub-set of encoded data slices of the set of encoded data slices for subsequent retrieval of the at least a portion of the data; and when the substantially identical data is stored in the DSN memory: generating a second unique retrieval matrix for the requesting device, wherein the second unique retrieval matrix identifies a second sub-set of encoded data slices of the set of encoded data slices for subsequent retrieval of the at least a portion of the data, wherein the number of encoded data slices in the first and the second subsets of encoded data slices is greater or equal to a read threshold value, which is the minimum number of encoded data slices required to reconstruct the data segment. receiving, from a requesting device, a data storage request that includes data for storage; determining whether substantially identical data is currently stored in a dispersed storage network, DSN, memory; and when the substantially identical data is not stored in the DSN memory: encoding at least a portion of the data using an error coding dispersal storage function to produce a set of encoded data slices, comprising: partitioning the data into at least one data segment; error encoding and slicing, or vice-versa, the at least one data segment into a set of data slices; encoding at least a portion of the data using an error coding dispersal storage function to produce a set of encoded data slices, comprising: partitioning the data into at least one data segment; error encoding and slicing, or vice-versa, the at least one data segment into a set of data slices; partitioning the data into at least one data segment; error encoding and slicing, or vice-versa, the at least one data segment into a set of data slices; sending the set of encoded data slices to the DSN memory for storage therein; characterised by: generating a unique retrieval matrix for the requesting device, wherein the unique retrieval matrix identifies a sub-set of encoded data slices of the set of encoded data slices for subsequent retrieval of the at least a portion of the data; and when the substantially identical data is stored in the DSN memory: generating a unique retrieval matrix for the requesting device, wherein the unique retrieval matrix identifies a sub-set of encoded data slices of the set of encoded data slices for subsequent retrieval of the at least a portion of the data; and when the substantially identical data is stored in the DSN memory: generating a second unique retrieval matrix for the requesting device, wherein the second unique retrieval matrix identifies a second sub-set of encoded data slices of the set of encoded data slices for subsequent retrieval of the at least a portion of the data,